Контакты

Наибольший вклад в теги

Все теги (13)

Лучшие ответы пользователя

Все ответы (16)
  • Взаимодействие с другими классами и блоками можно ли так?

    Можешь попробовать работать с селектором :has(), но он может не работать на старых браузерах.
    Простой пример:
    <div class="container">
        <div class="trigger">Наведи на меня</div>
        <div class="target">Я изменюсь</div>
    </div>


    .trigger {
        padding: 10px;
        background-color: lightblue;
        cursor: pointer;
        transition: background-color 0.3s ease;
    }
    
    .target {
        padding: 10px;
        background-color: lightcoral;
        transition: background-color 0.3s ease;
    }
    
    .container:has(.trigger:hover) .target {
        background-color: lightgreen;
    }


    Селектор :has() проверяет, есть ли внутри родительского элемента container активный элемент с классом .trigger, на который наведен курсор. Когда блок trigger находится в состоянии hover, :has() находит это состояние в родительском контейнере, в контейнере срабатывает правило: стиль для target меняется на background-color: lightgreen.
    Еще можно юзать JS
    Ответ написан
    Комментировать
  • Почему matlab перекидывает знаки в функции tf?

    Ох и сложный вопрос вы задаете. Смотрите, матлаб автоматически меняет знаки в передаточной функции, чтобы привести знаменатель и числитель к стандартной форме. Если вы хотите сохранить знаки такими, какие они есть, к сожалению, матлаб напрямую не позволяет это в функции tf. Но можно посидеть и подумать над тем, чтобы сохранить исходные знаки, используя ручной вывод.
    Можно (нужно) использовать метод zpk.

    a = [2160 1140 130 70];
    b = [-105 -107 0 2];
    
    W = zpk([], [], a) / zpk([], [], b);
    disp(W);
    Ответ написан
    2 комментария
  • Как исправить скрипт tampermonkey, чтобы при открытии новой вкладки собирать данные?

    function visitLinksSequentially(links) {
        let index = 0;
    
        function waitForPageLoad(newTab, callback) {
            // ждем полную загрузку
            newTab.addEventListener('load', function onLoad() {
                newTab.removeEventListener('load', onLoad); 
                callback(); 
            });
        }
    
        function extractData(newTab, callback) {
            // логика для извлечения данных
            const extractedData = newTab.document.querySelectorAll('SELECTOR_YOUR_DATA'); 
            console.log('Извлечённые данные:', extractedData); 
            callback(); 
        }
    
        function visitNextLink() {
            if (index < links.length) {
                const link = links[index];
                index++;
                const newTab = window.open(); // открыли новую вкладку
    
                newTab.location.href = link;
    
                waitForPageLoad(newTab, () => {
                    setTimeout(() => {
                        extractData(newTab, () => {
                            newTab.close(); // закрыли
                            visitNextLink(); // пошли дальше
                        });
                    }, 1000); 
                });
            } else {
                console.log('Good job bro!');
            }
        }
    
        visitNextLink();
    }
    Ответ написан
    Комментировать
  • Как сделать пагинацию на js для нескольких независимых секций на странице?

    Здравствуйте. Здесь нужно бы обрабатывать каждую секцию отдельно, используя отдельный массив элементов для каждой, а потом генерировать независимые контролы пагинации для каждой секции.

    <div class="wrap_item" data-section="1">
      <h3 class="title_heading">Секция №1</h3>
      <div class="wrap_elements">
        <div class="class_element">Элемент 1</div>
        <div class="class_element">Элемент 2</div>
        <div class="class_element">Элемент 3</div>
        <div class="class_element">Элемент 4</div>
        <div class="class_element">Элемент 5</div>
      </div>
      <div class="pagination"></div>
    </div>
    
    <div class="wrap_item" data-section="2">
      <h3 class="title_heading">Секция №2</h3>
      <div class="wrap_elements">
        <div class="class_element">Элемент A</div>
        <div class="class_element">Элемент B</div>
        <div class="class_element">Элемент C</div>
        <div class="class_element">Элемент D</div>
        <div class="class_element">Элемент E</div>
      </div>
      <div class="pagination"></div>
    </div>
    
    <div class="wrap_item" data-section="3">
      <h3 class="title_heading">Секция №3</h3>
      <div class="wrap_elements">
        <div class="class_element">Элемент α</div>
        <div class="class_element">Элемент β</div>
        <div class="class_element">Элемент γ</div>
        <div class="class_element">Элемент δ</div>
        <div class="class_element">Элемент ε</div>
      </div>
      <div class="pagination"></div>
    </div>


    document.addEventListener('DOMContentLoaded', () => {
    
        const itemsPerPage = 2;
    
        document.querySelectorAll('.wrap_item').forEach((section) => {
          const wrapElements = section.querySelector('.wrap_elements');
          const elements = Array.from(wrapElements.children);
          const paginationContainer = section.querySelector('.pagination');
          const totalPages = Math.ceil(elements.length / itemsPerPage);
    
          function showPage(page) {
            elements.forEach((el, index) => {
              el.style.display =
                index >= (page - 1) * itemsPerPage && index < page * itemsPerPage
                  ? ''
                  : 'none';
            });
          }
    
          function createPagination() {
            paginationContainer.innerHTML = ''; // очистили контейнер пагинации
            for (let i = 1; i <= totalPages; i++) {
              const button = document.createElement('button');
              button.textContent = i;
              button.addEventListener('click', () => {
                showPage(i);
                updateActiveButton(i);
              });
              paginationContainer.appendChild(button);
            }
            updateActiveButton(1); 
          }
    
          function updateActiveButton(activePage) {
            paginationContainer.querySelectorAll('button').forEach((btn, index) => {
              btn.classList.toggle('active', index + 1 === activePage);
            });
          }
    
          showPage(1);
          createPagination();
        });
      });


    .wrap_elements {
        display: flex;
        flex-wrap: wrap;
        gap: 10px;
      }
    
      .class_element {
        padding: 10px;
        border: 1px solid #ccc;
        background: #f5f5f5;
      }
    
      .pagination button {
        margin: 0 5px;
        padding: 5px 10px;
        border: none;
        background: #ddd;
        cursor: pointer;
      }
    
      .pagination button.active {
        background: #ff6f61;
        color: #fff;
      }


    Теперь имеем что? Каждый .wrap_item обрабатывается отдельно, кайф. Все дочерние элементы .class_element собираются в массив, ну красота. Style.display для скрытия/показа элементов в зависимости от текущей страницы.
    Количество кнопок определяется totalPages.
    При клике на кнопку отображаются элементы, соответствующие выбранной странице. Вроде ничего не упустил.
    Ответ написан
    1 комментарий