Ответы пользователя по тегу CSS
  • Где применяется Position в CSS и разница между Flexbox?

    Raxen
    @Raxen
    Lead Frontend Developer, Beeline
    Абсолютное позиционирование это чаще всего когда ты видишь элемент на сайте, который как бы висит в воздухе, наслаивается, как стрелочки в слайдере.
    Например: Меню на этом сайте, когда находится в самом верху страницы, позиционировано абсолютно, при скролле позиционирование меняется на фиксированное и менюха фиксируется в окне.

    А вот общий контейнер, в котором меню, шапка, контент и вот это все, он позиционировано относительно.
    Это означает, что все элементы, находящиеся внутри контейнера , которые позиционированы абсолютно, будут отсчитывать свои координаты в смещениях по горизонтали или вертикали, исходя из размеров и координат этого контейнера.

    position используется везде, и в адаптиве и ... кто в 2020-м не делает адаптив?

    Разница с Flexbox - флексбокс это о другом, тут общее только в том, что с помощью и той и другой технологии можно решить эту узкопрофильную задачу, более того часто они используются совместно, например отрисовать список элементов в попапе, список элементов можно разместить при помощи флексбоксов, а сам попап позиционировать по центру страницы

    Тут нужна практика, когда столкнешься с этим, начнешь думать как это сделать, все поймешь.
    Ответ написан
    1 комментарий
  • Как сделать скролл в div рабочим?

    Raxen
    @Raxen
    Lead Frontend Developer, Beeline
    Во второй строчке у вас есть класс overflow-hidden, судя по названию этот класс скрывает весь лишний контент и скролл, но можно таскать колёсиком
    <div class="d-flex justify-content-between bg-white mx-1 overflow-hidden" style="height: calc(100vh - 52px)">


    Замените на следующий код
    <div class="d-flex justify-content-between bg-white mx-1" style="height: calc(100vh - 52px); overflow-y: auto;">
    Ответ написан
    Комментировать
  • Почему не работает @media?

    Raxen
    @Raxen
    Lead Frontend Developer, Beeline
    Может не хватает тэга style?
    <style>
    /* Media
    ======================*/
    
    /* Intro*/
        
       @media all and (max-width: 1200px) {
           
           .intro__subtitle {
               font-size: 8px; 
            
            }
        }
    </style>
    
    <!-- Intro -->
     <div class="intro" id="Intro">
         <div class="container">
             <div class="intro__inner">
               <div class="intro__onas"></div>
               <h2 class="intro__subtitle">ТЕКСТ ТЕКСТ</h2>
    Ответ написан
    Комментировать
  • Как перенести блоки? CSS?

    Raxen
    @Raxen
    Lead Frontend Developer, Beeline
    Три варианта на выбор

    Раз
    .container {
        display: grid;
        grid-template-columns: 1fr 1fr 1fr;
        grid-column-gap: 30px;
        grid-row-gap: 30px;
    }
    
    @media (max-width: 600px) {
      .container {
          grid-template-columns: 1fr 1fr;
      }
    }


    Два
    .container {
        display: flex;
        flex-wrap: wrap;
    }


    Три
    .container::after {
      content: '';
      clear: both;
      display: table;
    }
    
    .container__item {
      ...
      float: left;
    }
    Ответ написан
    Комментировать
  • Как при загрузке сайта с телефона подгонять его под размер экрана?

    Raxen
    @Raxen
    Lead Frontend Developer, Beeline
    Мобилки игнорируют overflow в body и html, поэтому вам нужно навесить overflow-x на контейнер, где выезжает блок за край. Например у вас есть такая структура
    <html>
    <head></head>
    <body>
      <head></head>
      <div id="container">
        ...
      </div>
    </body>


    И вот в контейнере, например, какие-то элементы вылезают за ширину, вешайте на контейнер оверфлоу.
    Если указывать правильно размеры, то overflow может и не понадобится
    Ответ написан
    Комментировать
  • Почему div блок смещается при изменении высоты?

    Raxen
    @Raxen
    Lead Frontend Developer, Beeline
    Направление увеличение высоты зависит от того, где находится элемент в потоке и как позиционирован.

    В любом случае анимируя высоту, вам нужно еще опускать/поднимать сам элемент на половину от его новой высоты, соответственно, для этого можно использовать свойство transform: translateY(), если вам нужно поднять вверх указываете отрицательное значение на которое нужно приподнять или положительное, если нужно опустить элемент.
    Ответ написан
    Комментировать
  • Почему исчезают элементы при hover?

    Raxen
    @Raxen
    Lead Frontend Developer, Beeline
    В общем у вас там какие-то приколы с высотой этих карточек и судя по всему следующий элемент, после наведенного помещается в том же ряду под предыдущим, поэтому карточки смещаются, а не исчезают

    Вот это подвинет ваши элементы и сделает съезжаемыми те что пониже. Как по мне, так там всю сетку нужно переделывать

    .mmm:hover {
          box-shadow: 0 0 8px rgba(0,0,0,0.2);
          height: 425px !important;
      }


    А вот такой вариант может и сработать

    .mmm {
        height: auto !important;
    }
    
    .mmm:hover {
        box-shadow: 0 0 8px rgba(0,0,0,0.2);
        height: auto !important;
    }


    И не злоупотребляйте с импортантами и медиазапросами, пожалуйста, у вас там специфичность css зашкаливает
    Ответ написан
    Комментировать
  • Что в данном случае происходит при анимации див блока?

    Raxen
    @Raxen
    Lead Frontend Developer, Beeline
    UPD: Исправлено
    @keyframes fakeborder{
      from{
        border: none;
        transform: scale(1) translate(-50%, -50%);
      }to{
        border: 3px solid green;
        transform: scale(1.5) translate(-50%, -50%);
      }
    }
    
    .forFakeBorder {
      transform-origin: left top;
    }
    Ответ написан
  • Не правильно отображается сайт. Что делать?

    Raxen
    @Raxen
    Lead Frontend Developer, Beeline
    Удалите это
    html, body {
    height: 100%;
    }

    Добавьте это
    body {
    min-height: 100vh;
    }
    Ответ написан
  • WP 5.4.2 сломался toggle effect как починить?

    Raxen
    @Raxen
    Lead Frontend Developer, Beeline
    Замените bottom: -20px на top: -20px тогда верхняя граница списка будет -20px, т.е. на 20 пикселей выше своего начального положения среди элементов. bottom - указывает, что список будет расти из низа, вверх, т.к. низ указан, а верх нет, вам нужно наоборот. Если оставите bottom вместе с top, то у вас будет очень маленький контейнер
    Ответ написан
    2 комментария
  • Почему не работает position: sticky?

    Raxen
    @Raxen
    Lead Frontend Developer, Beeline
    Если у вас убрать overflow-x с body и элемента с айди #page-container, то сможете добавить position: sticky и top: 0 (например) у элемента
    .et_pb_module.et_pb_sidebar_0.et_pb_widget_area.clearfix.et_pb_widget_area_left.et_pb_bg_layout_light
    и все заработает.
    Но могут повыползать косяки верстки с просчетом размеров по горизонтали, вообще чинить подобные проблемы обрезая весь body по горизонтали такая себе идея. Если есть где-то момент, превышающий размеры 100% ширины сайта и его невозможно исправить, обрезайте скролл, используя overflow-x у родителя проблемного элемента, а не body, кроме того overflow на body не работает в iOs браузерах, с другой стороны в сафари на иос стики тоже не работает, но гугл знает где взять полифил)
    Ответ написан
    Комментировать
  • Tecтовое задание по верстке, где ошибка?

    Raxen
    @Raxen
    Lead Frontend Developer, Beeline
    Придраться есть к чему, но это нюансы, которые наверстываются в ходе работы, как для джуна нормальное тестовое, pug указан как опционально. Не бери в голову, скорее всего просто уже взяли кого-то на твое место или живут по лунному календарю (да, я и таких встречал)
    Ответ написан
    Комментировать
  • Изменение внешнего вида кнопок и фиксация его состояния. Как зафиксировать состояние кнопки?

    Raxen
    @Raxen
    Lead Frontend Developer, Beeline
    При рендере проверяй добавлен ли элемент в избранное, если да - вешай класс "btn--active" например на кнопку с сердцем, и по клику на этой кнопке сделай переключение активного класса
    Ответ написан
    Комментировать
  • Как убрать обводку в шапке сайта?

    Raxen
    @Raxen
    Lead Frontend Developer, Beeline
    У вас на фокус всех интерактивных элементов навешан этот стиль -
    a:focus, input[type="text"]:focus, input[type="email"]:focus, input[type="phno"]:focus, input[type="password"]:focus, input[type="search"]:focus, input[type="tel"]:focus, textarea:focus, input[type="submit"]:focus, #comments:focus, select:focus, .toggle-nav button:focus, .search-box button:focus {
        outline: 1px dotted #000;
        border-bottom: 1px solid #000;
        text-decoration: none !important;
    }
    Ответ написан
    4 комментария
  • Появление блоков при клике по ссылке, скрытие при повторном клике + добавлять\убирать класс?

    Raxen
    @Raxen
    Lead Frontend Developer, Beeline
    У вас очень специфичная разметка для реализации табов, но тем не менее https://jsfiddle.net/orsc3xs7/6/
    css
    .nav-service {
      padding: 0;
      margin: 0;
      list-style: none;
      position: relative;
    }
    
    .nav-service li {
      float: left;
      margin-left: 10px;
    }
    
    .sub-menu {
      position: absolute;
      top: 20px;
      left: 0px;
      visibility: hidden;
      opacity: 0;
      transition: all ease 0.2s
    }
    
    .active+.sub-menu {
      visibility: visible;
      opacity: 1;
    }


    jquery
    $('.nav-button').click(function(e) {
      e.stopPropagation();
      e.preventDefault();
      $('.nav-button').not(this).removeClass('active');
      $(this).addClass('active').next().delay(200).show();
    });
    
    $('html, .close').click(function() {
      if ($('.nav-button.active').length > 0) {
        $('.nav-button').removeClass('active').next().delay(200).hide()
      }
    });
    Ответ написан
    Комментировать
  • Как сделать мультискрол лендинг?

    Raxen
    @Raxen
    Lead Frontend Developer, Beeline
    alvarotrigo.com/fullPage

    Для появления скролла на тех экранах, где много контента используйте опцию scrollOverflow:true
    Но для ее работы нужен плагин slimscroll.js
    Ответ написан
  • Стилизация SVG с помощью CSS?

    Raxen
    @Raxen
    Lead Frontend Developer, Beeline
    Не знаю, насколько вам это поможет, но в этой статье пишут, что на данный момент мы не можем напрямую обращаться к Shadow DOM через CSS, это поддерживается не всеми браузерами (Хромиум например не поддерживает)

    Еще тут немного об этой проблеме

    И да, эта бага уже заведена в chromium баг трекере - линк
    Может когда-нибудь поправят.

    И есть рабочий пример, не вдавался в тонкости, но попробуйте препарировать
    Ответ написан
    4 комментария
  • Зачем содержимое сайта размещают в div.container?

    Raxen
    @Raxen
    Lead Frontend Developer, Beeline
    По порядку:
    Вы говорите про класс class="container", а в пример приводите id="container", это не одно и то же, селектор body - общий селектор, всей страницы, если вам понадобится ограничить ширину вашего сайта, вы можете ограничить body, это так же как и ограничить ширину по селектору html, это очень плохая практика и не везде это работает, а container это уже содержимое вашей страницы, его легко можно ограничить по ширине внутри body, вы можете называть его по другому - main, wrap, site, в популярных css фреймворках, например container часто используется, как функциональная (с контентом) часть сайта, в общем это хороший тон.
    Ответ написан
    1 комментарий
  • Как сделать такую ​​кнопку вниз чтобы она прыгала?

    Raxen
    @Raxen
    Lead Frontend Developer, Beeline
    анимацию можно на css, скролл вниз на jquery, допустим у нас есть круглая кнопка в виде стрелки вниз(html) -
    <a href="#second-screen" class="scroll-down-btn"></a>

    Нам нужно повесить анимацию на кнопку(css) -
    .scroll-down-btn {
    /* Тут стили кнопки, картинки, размеры */
      position: relative;
      bottom: -15px;
      animation: bounce 0.4s infinite; /* Анимацию bounce пропишем ниже */
    }

    Ну и собственно сама анимация(css) -
    @keyframe bounce {
      0 {
        bottom: 0;
      }
      100% {
        bottom: -15px;
      }
    }

    Ну а теперь нужно, чтоб эта кнопка работала(jQuery) -
    $('.scroll-down-btn').on('click', function(e) {
      e.preventDefault(); // Запрещаем переход по ссылке
      var target: $(this).attr('href'), // Берем значение из ссылки как цель id="second-screen"
            destination: $(target).offset().top; // Ищем верхнюю координату у нашей цели
    
      $('body,html').animate({scrollTop: destination}, 500); // Плавно проматываем до цели
    });
    Ответ написан
    Комментировать