Задать вопрос
Ответы пользователя по тегу CSS
  • Как реализовать запуск видео на сайте по клику видео 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.
    Ответ написан
    Комментировать
  • Как вычислить размер шрифта для блока div с заданным размером?

    delphinpro
    @delphinpro Куратор тега CSS
    frontend developer
    велосипед не мой. вроде работает.

    Ответ написан
    1 комментарий
  • Почему не срабатывает удаление класса?

    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}`);
        });
      });
    
    });
    Ответ написан
    Комментировать
  • Как правильно работать с background?

    delphinpro
    @delphinpro Куратор тега CSS
    frontend developer
    Без обрезки никак. Сами должны понимать. Если пропорции экрана отличаются от пропорций изображения, то обрезка будет по-любому.

    Если это какой-то абстрактный фон, то без разницы. Берем несколько картинок разного размера (чтобы на мобилах не грузить лишнего) и подключаем их через медиа-запросы.

    Если на фоне есть какой-то объект, то желательно, чтобы он был в центре (из-за обрезки по краям) и нужны два варианта изображения - вертикальное и горизонтальное. Так же через медиазапросы (portrait/landscape) подменяем. Плюс несколько размеров (2-3) под разрешение экранов, с учетом ретины - 2х.

    Размер файла должен быть минимальным, это очевидно. Также очевидно, что точный желательный размер вам никто не скажет. Для уменьшения веса файла используйте конвертацию в webp формат.
    Ответ написан
    Комментировать
  • Растягиваются колонки таблицы, при table { width: 100%} и col: { width: 200px }, как исправить это поведение?

    delphinpro
    @delphinpro Куратор тега CSS
    frontend developer
    Чтобы таблица слушалась установки ширины для колонок, то ей нужно выставить фиксированный лэйаут

    table {
      table-layout: fixed;
    }


    Но там кажется остальная доступная ширина будет поровну распределяться между всеми колонками, у которых ширина явно не задана.
    Ответ написан
    Комментировать
  • Как расчитать ширину элемента .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;
    }


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

    delphinpro
    @delphinpro Куратор тега CSS
    frontend developer
    Расположить такую же картинку позади и растянуть ее на весь блок. Чтобы не было искажений, установить object-fit:cover; Либо повесить на фон с заполнением background-size: cover;
    Заблюрить с помощью filter: blur(10px);

    Ответ написан
    1 комментарий
  • Как запретить оверлею загораживать отдельно взятый элемент? Как выбить/поднять/отменить дочерний элемент из контекста наложения?

    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 комментария
  • Почему не работает псевдокласс not?

    delphinpro
    @delphinpro Куратор тега CSS
    frontend developer
    https://developer.mozilla.org/ru/docs/Web/CSS/:link
    CSS псевдокласс :link позволяет выбирать ссылки внутри элементов. Он выберет любую ссылку, которая ещё не была посещена, даже те, которые уже стилизованы, с помощью селекторов с другими псевдоклассами, относящимися к ссылкам, такими как :hover, :active или :visited


    Вы фигню написали. :link и так уже НЕ :visited

    Ну и стоит помнить про каскад - последовательность объявлений имеет значение.

    пишите так
    a:link {}
    a:visited {}
    a:hover {}
    a:active {}
    Ответ написан
  • Как сделать ширину блока по ширине контента?

    delphinpro
    @delphinpro Куратор тега CSS
    frontend developer
    В общем случае – никак.
    Если использовать неразрывные пробелы между нужными словами (nbsp;) или переносы (br), то можно задать ширину как width: min-content или width: max-content. Но это частные случаи, не универсально.
    Ответ написан
  • Как отключить swiper-bundle.min.css?

    delphinpro
    @delphinpro Куратор тега CSS
    frontend developer
    не подключайте, если он вам не нужен.

    Зачем создавать проблему, а потом героически ее решать? Просто не подключайте то, что вам не нужно.
    Ответ написан
    Комментировать
  • Как лучше сверстать элемент?

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

    delphinpro
    @delphinpro Куратор тега CSS
    frontend developer
    .logo {
      display: grid;
      grid-template-areas: "logo";
    }
    
    .logo1, .logo2 {
      grid-area: logo;
      transition: opacity 0.3s ease;
    }
    
    .logo1 { opacity: 1; }
    .logo2 { opacity: 0; }
    
    .logo_state_2 .logo1 { opacity: 0; }
    .logo_state_2 .logo2 { opacity: 1; }
    Ответ написан
    1 комментарий
  • Обязательно ли создавать контейнер?

    delphinpro
    @delphinpro Куратор тега CSS
    frontend developer
    <div class="full-width-section">
        <div class="container">
        </div>
    </div>
    Ответ написан
    Комментировать
  • Как пофиксить пустое пространство при переносе строки?

    delphinpro
    @delphinpro Куратор тега CSS
    frontend developer
    только так:

    <div class="items__item">Длинное&nbsp;описание&nbsp;на 11111111</div>

    .items {
      width: min-content;
    }
    Ответ написан
    Комментировать
  • Выводим стрелку в подменю, указывающая на родителя, выводиться сверху, почему?

    delphinpro
    @delphinpro Куратор тега CSS
    frontend developer
    Абсолютное позиционирование отсчитывается от ближайшего не-static элемента. e вас это - li родительского пункта.
    сделайте ul с relative и встанет относительно него.
    Ответ написан
  • Как перезаписать переменную по нажатию кнопки в sass?

    delphinpro
    @delphinpro Куратор тега CSS
    frontend developer
    Вы не понимаете сути препроцессоров.
    В браузере нет никаких sass переменных. А значит и изменить вы их не можете.

    Как правильно сделать переключение темы?
    Ответ написан
    Комментировать
  • Как корректно настроить Gulp + Sass?

    delphinpro
    @delphinpro Куратор тега CSS
    frontend developer
    C использованием @use подход принципиально меняется. Область видимости каждого подключаемого так модуля ограничена им самим, и потребуется импортировать из него необходимые сущности в каждом файле использования.

    Можете просто не обращать внимания на предупреждения. Или понизить версию sass (кажется до 1.77.8)

    Ну или пишите стили по-новому

    main.scss
    @use 'base.scss';
    @use 'banner.scss';


    base.scss
    $_color: red;

    banner.scss
    @use './base';
    a{
        color: base.$color;
        text-decoration: none;
    }


    Может быть, в сети, где-то есть актуальная железобетонная инструкции для того, чтобы импорты, переменные, да и Sass нормально завелись?


    почитайте первоисточник https://sass-lang.com/documentation/at-rules/use/
    Ответ написан
    1 комментарий