Задать вопрос
Ответы пользователя по тегу HTML
  • Как менять картинки у карточки в списке товаров?

    delphinpro
    @delphinpro Куратор тега CSS
    frontend developer
    нужно взять любой слайдер.
    по умолчанию на мобильных он будет работать как слайдер - перелистывать слайды-картинки
    на десктопе поверх всего слайдера растягиваете блок с dots pagination (точки для листания слайдов). стилизуете их, делая полностью прозрачными. и добавляете к ним обработчики наведения мышки. в обработчике определяете точку на которую навелись и переключаете слайдер к нужному слайду.

    если говорить о swiper то вот пример hover-навигации Как менять слайд SwiperJS при наведении?
    Ответ написан
    Комментировать
  • Как правильно сочетать теги article, section и заголовки h1-h6?

    delphinpro
    @delphinpro Куратор тега HTML
    frontend developer
    У вас вся страница посвящена одной теме - экстремум функции. Семантически это одна статья. Значит должен быть один тег article (либо полное его отсутствие) соответственно один тег h1.
    При этом если вы расположите h1 вне article и еще один внутри, это будет рассмотрено как нарушение семантики.

    Использовать несколько заголовков первого уровня допустимо, например на страницах со списками статей (лента блога и т.п.)
    <body>
    <!-- никаких больше заголовков вне article! -->
    <article>
      <h1>статья 1</h1>
    </article>
    <article>
      <h1>статья 2</h1>
    </article>
    <article>
      <h1>статья 3</h1>
    </article>
    </body>


    Если хочется разбить статью на отдельные части, то в вашем случае, наверное, можно так

    <article>
      <h1>Экстремум функции нескольких переменных</h1>
      <p>Вводные слова, общая постановка задачи и так далее.</p>
    </article>
    
    <article>
      <h1>Экстремум функции двух переменных</h1>
      <p>Теория, которая касается лишь функций двух переменных.</p>
    </article>
    
    <article>
      <h1>Экстремум функции n переменных (общий случай)</h1>
      <p>Общая теория и формулы для функций, с числом переменных большим двух.</p>
    </article>
    
    <article>
       <header>
         <h1>Задача №1</h1>
       </header>
       <section>
         <h2>Условие</h2>
         <p>Тут условие задачи.</p>
       </section>
       <section>
         <h2>Решение</h2>
         <p>Тут решение задачи, а если в нём нужны заголовки - то они начнутся с h2.</p>
       </section>
       <section>
         <h2>Ответ</h2>
         <p>Тут ответ задачи.</p>
       </section>
    </article>
    Ответ написан
    2 комментария
  • Как выровнить в колонку фотки как на макете?

    delphinpro
    @delphinpro Куратор тега CSS
    frontend developer
    .blog-inner {
      display: grid;
      grid-template-columns: repeat(2, 1fr);
      grid-template-rows: repeat(3, 1fr);
      gap: 1rem;
    }
    .blog__card:first-child {
      grid-row: span 3;
    }
    Ответ написан
    1 комментарий
  • Как оптимизировать загрузку и парсинг больших JS файлов со стороны браузера/клиента?

    delphinpro
    @delphinpro Куратор тега JavaScript
    frontend developer
    Совершенно непонятно, зачем на одной странице нужны 10 тыс фоток.
    Во-первых, столько физически не поместится даже на три-пять экранов.
    Во-вторых, человек в принципе не способен воспринимать такое количество информации одновременно.
    Скорее всего, мне думается, это просто лента фотографий, которая "бесконечно" прокручивается для просмотра.
    Вот из этого и нужно исходить.

    Сложить список файлов в базу данных.
    Загружать небольшое количество, ну скажем 50-100 изображений.
    По мере прокрутки страницы подгружать еще сотню следующих. Предыдущие удалять. При прокрутке в обратную сторону подгружать предыдущие, а ушедшие из зоны видимости удалять.
    И никакой нагрузки на браузер не будет, и визуально будет казаться, что все фото присутствуют на странице.
    Ответ написан
    1 комментарий
  • Как реализовать запуск видео на сайте по клику видео YouTube/Vimeo на bootstrap?

    delphinpro
    @delphinpro Куратор тега CSS
    frontend developer
    запрос к ИИ
    684a8caf7556e327947901.png

    Ответ:
    Вот готовое решение для открытия модального окна с YouTube видео по клику на кнопку:
    <button id="play" data-source="https://www.youtube.com/embed/dQw4w9WgXcQ">Play</button>
    
    <div id="modal" class="modal">
      <div class="modal-content">
        <span class="close">&times;</span>
        <iframe id="youtube-video" width="560" height="315" frameborder="0" allowfullscreen></iframe>
      </div>
    </div>
    
    <style>
      .modal {
        display: none;
        position: fixed;
        z-index: 1;
        left: 0;
        top: 0;
        width: 100%;
        height: 100%;
        background-color: rgba(0, 0, 0, 0.8);
      }
      
      .modal.show {
        display: flex;
        justify-content: center;
        align-items: center;
      }
      
      .modal-content {
        position: relative;
        background-color: #fefefe;
        padding: 20px;
        border-radius: 8px;
        max-width: 800px;
        width: 90%;
      }
      
      .close {
        position: absolute;
        top: 10px;
        right: 20px;
        font-size: 28px;
        font-weight: bold;
        color: #aaa;
        cursor: pointer;
      }
      
      .close:hover {
        color: #000;
      }
      
      iframe {
        width: 100%;
        aspect-ratio: 16/9;
      }
    </style>
    
    <script>
      const playButton = document.getElementById('play');
      const modal = document.getElementById('modal');
      const closeButton = document.querySelector('.close');
      const iframe = document.getElementById('youtube-video');
      
      playButton.addEventListener('click', () => {
        const videoUrl = playButton.getAttribute('data-source');
        iframe.src = videoUrl + '?autoplay=1';
        modal.classList.add('show');
      });
      
      closeButton.addEventListener('click', () => {
        modal.classList.remove('show');
        iframe.src = '';
      });
      
      // Закрытие модального окна при клике вне его
      window.addEventListener('click', (event) => {
        if (event.target === modal) {
          modal.classList.remove('show');
          iframe.src = '';
        }
      });
    </script>


    Этот код включает:

    1. Кнопку Play с атрибутом data-source, содержащим ссылку на YouTube видео
    2. Модальное окно с iframe для встраивания видео
    3. Стили для:
      • Затемненного фона
      • Центрированного модального окна
      • Кнопки закрытия
      • Адаптивного видео (сохраняет соотношение сторон 16:9)


    4. JavaScript для:
      • Открытия модального окна по клику
      • Вставки видео в iframe с автовоспроизведением
      • Закрытия модального окна
      • Остановки видео при закрытии




    Вы можете изменить ссылку в data-source на нужное вам YouTube видео. Для получения embed-ссылки на YouTube нажмите "Поделиться" → "Встроить" и скопируйте URL из атрибута src iframe.
    Ответ написан
    Комментировать
  • Почему не срабатывает удаление класса?

    delphinpro
    @delphinpro Куратор тега CSS
    frontend developer
    <button class="btn-chapter" data-chapter="1">Глава 1</button>
    <button class="btn-chapter" data-chapter="2">Глава 2</button>
    <button class="btn-chapter" data-chapter="3">Глава 3</button>
    <button class="btn-chapter" data-chapter="4">Глава 4</button>
    <button class="btn-chapter" data-chapter="5">Глава 5</button>
    
    <div class="chapter" id="chapter-1"><h2>Глава 1: Основы Фотошопа - Растровая графика</h2></div>
    <div class="chapter" id="chapter-2"><h2>Глава 2: Основы Фотошопа - Растровая графика</h2></div>
    <div class="chapter" id="chapter-3"><h2>Глава 3: Основы Фотошопа - Растровая графика</h2></div>
    <div class="chapter" id="chapter-4"><h2>Глава 4: Основы Фотошопа - Растровая графика</h2></div>
    <div class="chapter" id="chapter-5"><h2>Глава 5: Основы Фотошопа - Растровая графика</h2></div>


    .chapter {
      display: none;
    }
    .chapter.is-open {
      display: block;
    }


    document.addEventListener('DOMContentLoaded', function() {
    
      const allChapters = document.querySelectorAll('.chapter');
    
      const closeAllChapters = () => allChapters.forEach(el => el.classList.remove('is-open'));
      const openChapterById = id => document.getElementById(id).classList.add('is-open');;
    
      document.querySelectorAll('.btn-chapter').forEach(btn => {
        btn.addEventListener('click', () => {
          closeAllChapters();
          openChapterById(`chapter-${btn.dataset.chapter}`);
        });
      });
    
    });
    Ответ написан
    Комментировать
  • Как получить id от button?

    delphinpro
    @delphinpro Куратор тега PHP
    frontend developer
    Здесь вы вроде бы правильно обновляете картинку только у нужного товара по его айди

    $query = mysqli_query($link,"UPDATE tovars SET img = '$names$name' WHERE id = '$id'");


    Но откуда ID то берется?

    Передавайте идентификатор вместе с картинкой
    <form method="post" enctype="multipart/form-data">
      <label for="tovar_full">Изображение товара</label> 
      <input type="hidden" name="id" value=" тут айди товара, к которому нужно прикрепить картинку " />
      <input type="file" name="filename" size="10" />
      <input type="submit"  value="Загрузить" />
    </form>


    и на сервере соответственно

    $names = "https://smm-services.ru/admin/";
    $id = $_POST['id']; // получить ID из формы
    $query = mysqli_query($link,"UPDATE tovars SET img = '$names$name' WHERE id = '$id'");


    PS
    Нельзя вставлять данные в запрос напрямую полученные от пользователя. Узнайте, что такое sql-инъекции и как от них защищаться.
    Ответ написан
  • Почему видеофайл не доступен напрямую в браузере?

    delphinpro
    @delphinpro Куратор тега HTML
    frontend developer
    Всё дело в токене. Без него телега блокирует доступ к файлу. Но работает он только в пределах сессии в телеграме. Это если попроще объяснить.
    Ответ написан
    1 комментарий
  • Как расчитать ширину элемента .content?

    delphinpro
    @delphinpro Куратор тега CSS
    frontend developer
    Ширина явно указана в стилях - 120px. Так как установлен box-sizing: border-box; то padding в расчет ширины не берем. Итог = 120px.
    Ответ написан
    1 комментарий
  • Как увеличить SVG?

    delphinpro
    @delphinpro Куратор тега CSS
    frontend developer
    SVG - векторный формат.
    просто укажите нужные размеры в стилях, и браузер сам все увеличит

    .my-svg-image {
       width: 200px;
       height: 200px;
    }


    Ну а если нужно именно файл поправить - то откройте его в векторном редакторе и измените размеры.
    Ответ написан
    Комментировать
  • Как сделать что бы при увеличении высоты блока с помощью slideTogle одновременно плавно увеличивалась ширина блока?

    delphinpro
    @delphinpro Куратор тега JavaScript
    frontend developer
    Используйте метод .animate() и изменяйте любые параметры блока.
    Ответ написан
  • Как запретить оверлею загораживать отдельно взятый элемент? Как выбить/поднять/отменить дочерний элемент из контекста наложения?

    delphinpro
    @delphinpro Куратор тега CSS
    frontend developer
    Без костылей вряд ли получится.
    Но можно закостылить на css, без javascript

    overlay - z-index: 1;
    div - z-index: 2;

    то есть оверлей будет под блоком

    внутри дива свой отдельный оверлей и у кнопки z-index большего этого внутреннего оверлея.
    Ответ написан
  • Как сделать border-radius для тэга figure?

    delphinpro
    @delphinpro Куратор тега CSS
    frontend developer
    можно имитировать внутренние скругления двумя псевдоэлементами.

    67a088d1bea13534664940.png
    Ответ написан
    3 комментария
  • Как лучше сверстать элемент?

    delphinpro
    @delphinpro Куратор тега CSS
    frontend developer
    Самая обычная таблица.
    Ответ написан
    Комментировать
  • Как картинку сделать кнопкой?

    delphinpro
    @delphinpro Куратор тега HTML
    frontend developer
    Потому что у вас скрипт обработки вкладок кривой.
    Можно поправить скрипт, или хакнуть немножко вот так:

    <button type="button" class="btnNavigation btnActive" data-tab="button_1">
          <img src="../img/image.png" alt="" srcset="" style="pointer-events: none;">
        </button>
    Ответ написан
    Комментировать
  • Как сделать Date picker кастомный html/qjuery?

    delphinpro
    @delphinpro Куратор тега JavaScript
    frontend developer
    Зачем писать с нуля? Возьмите готовый и поправьте ему стили.
    Функционально такие есть.
    Ответ написан
    Комментировать
  • Как на html реализовать блоки "Внимание / Важно"?

    delphinpro
    @delphinpro Куратор тега HTML
    frontend developer
    Поэтому и попросил какой-нибудь хороший визуализатор, если кто часто пользуется, где можно будет реализовать такое и потом CTR+C, CTR+V.


    Его можно самому написать за несколько минут.

    Вот, как вариант:

    https://codepen.io/delphinpro/pen/BaXXKzQ

    Ответ написан
    Комментировать
  • Почему не указывается путь к файлу js?

    delphinpro
    @delphinpro Куратор тега JavaScript
    frontend developer
    from '../Gallery-master/IMAGES.js';

    https://phpfaq.ru/newbie/paths
    Ответ написан
    2 комментария