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

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    Смущает класс ".list__link"

    Если вас смущает повторение list в названии класса, то можно воспользоваться сохранением имени в стиле that=this из javascript:

    .list {
        $b: &;
    
        &__item {
            &:first-child {
                #{$b}__link {
                    // . . .
                }
            }
        }
    }

    Но это сложно назвать более читаемым вариантом.

    Если цель - все же сделать код более удобоваримым, то может иметь смысл просто ограничить вложенность при написании стилей (именно визуальную вложенность кода, а не каскад), как это делают в том же rscss:

    .list {
        &__item {
            // . . .
        }
    
        &__link {
            // . . .
        }
    
        &__item:first-child &__link {
            // . . .
        }
    }
    Ответ написан
    1 комментарий
  • Как добиться нормальной тени у элемента?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    А почему бы не использовать обычную feDropShadow?
    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
      <defs>
        <filter id="shadow">
          <feDropShadow dx="0" dy="4" stdDeviation="2" flood-color="grey" />
        </filter>
      </defs>
      <polygon points="30.1,84.5 10.2,50 30.1,15.5 69.9,15.5 89.8,50 69.9,84.5"
               filter="url(#shadow)" fill="hsl(156,80%,50%)"></polygon>
    </svg>
    Ответ написан
    1 комментарий
  • Как сделать CSS рабочим у сайта wordpress?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    Блоки с классами man, woman и kid должны быть рядом с инпутами, в той же обертке. Вот так:
    div
        input
        label
        input
        label
        .man
        .woman
        .kid

    а не вот так:
    div
        input
        label
        input
        label
    .man
    .woman
    .kid
    Ответ написан
    1 комментарий
  • Как сделать анимированную смену фильтров css?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    Попробуйте использовать одинаковые наборы функций, но с разными значениями:
    .filters {
        filter: grayscale(0.85) sepia(0%) brightness(1);
    }
    
    .links-item:hover .filters {
        filter: grayscale(0) sepia(40%) brightness(0.55);
    }
    Ответ написан
  • Как реализовать анимацию одного элемента по мере прокрутки страницы?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    Задача разделяется на две:
    1. Анимировать саму линию
    2. Перемещать огонь по ней

    Под первую задачу так и напрашивается SVG (статья про пунктирные вау-эффекты). Ну а решение второй вытекает из первой, достаточно загуглить "перемещение объекта по path" или еще что-то в этом духе. Получаем что-то такое (код немного странен, я другой пример перевернул вверх дном, но идея должна быть понятна):


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

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    Что такое 1em? Это текущий размер шрифта. Когда вы задаете размер шрифта в единицах em, браузер считает этот размер относительно родительского размера шрифта. Но у html вы задаете font-size равный 0px. В данном случае это означает, что у всех потомков 1em будет равен нулю до тех пор, пока вы не зададите какое-то другое значение не в em/rem, тогда у потомков того элемента 1em будет равен заданному значению.

    P.S.: Задавать font-size равный нулю для html - это не лучшая идея, она может приводить к самым разным багам, а также проблемам, когда у пользователей в браузере настроены ограничения на размер шрифта для html.
    Ответ написан
    1 комментарий
  • Можете покритиковать верстку начинающего?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    С первого взгляда видно:

    1. Font-size в 1px для HTML, а потом все в REM? - интересное начало...
    2. CSS-методология? - отсутствует.
    3. Препроцессор для облегчения жизни? - отсутствует.
    4. Все в одном файле? - да, так и есть.
    5. Магические числа в CSS? - много.
    6. Префиксы прямо в коде? - ага.
    7. 21 брейкпоинт для такой простой страницы? - ежик...
    8. Шрифты? - Fira отвалилась. Letter-spacing скачет.
    9. Critical CSS? - отсутствует.
    10. Бесполезные условные комментарии для IE6, гриды и флексы в одном флаконе? - о дааа.
    11. HTML lang='ru' и контент на английском? - почему бы и нет.
    12. Грузить весь FontAwesome ради пары иконок? - классика.
    13. Асинхронная загрузка картинок? - отсутствует.

    Продолжать можно долго. Рекомендации можно дать следующие:

    1. Освойтесь с инструментами верстальщика. Откройте для себя препроцессоры и автопрефиксер. Почитайте про БЭМ. Используйте.
    2. Добейтесь такого, чтобы вы понимали абсолютно все в своей верстке. Что? Зачем? Почему именно так? Избегайте копипасты. Не используйте какие-то "фишки" только потому, что кто-то их где-то поиспользовал - вполне вероятно, что там был другой контекст, а в вашей ситуации получится что-то странное. Разбирайтесь со всем.
    3. Изучайте хорошие практики.
    4. Ну и JS, без него никак.
    Ответ написан
    2 комментария
  • Как такое сверстать?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    Все в одну картинку - не универсально, тем более, что сверстать не сложно.
    Первый пример - один круг с градиентом, второй - белый, сверху.
    Второй пример - тот же круг с градиентом, и перекрыть ему половину. На мой взгляд варианты с большим количеством бордер-радиусов могут ломать мозг, но тут на вкус и цвет...
    Ответ написан
    Комментировать
  • Как возможно реализовать столь похожее или такое же меню?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    Да, симпатичная штука. Как говорится, ябзаверстал. Да и показаться на первой странице CodePen с такой демкой тоже будет не лишним. Так что вот вам концепт для изучения по мотивам вашего видео:

    В разных браузерах не тестировал, это скорее пример, чтобы показать подход к решению задачи. Рекомендую смотреть на большом экране - версия только для десктопа.
    Ответ написан
    Комментировать
  • Можно ли получить по шапке используя !important в проекте?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    Такие вопросы должны решаться на уровне методологий. Начиная проект мы решаем, какую использовать, и потом ее придерживаемся. Например в rscss !important используется в классах-хелперах, которые изначально задуманы, чтобы перебивать стили. Их обычно немного, они вписываются в общую картину и очень удобны при быстром прототипировании. А в какой-нибудь другой методологии !important могут вообще не использовать, приводя вполне разумные аргументы почему принято такое решение. Так что тут на вкус и цвет фломастеры разные, а запутать код можно и без !important.
    Ответ написан
    Комментировать
  • Почему github pages не видит шрифты, подключаемые через @font-face?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    В чем может быть проблема?

    В том, что названия файлов у вас с большой буквы начинаются, а в CSS вы их пишете с маленькой.
    Ответ написан
    Комментировать
  • Как реализовать верстку с обтеканием?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    1. Расположить элементы так, как на картинке, проще всего заданием width, float и clear для них. И это логично, флоаты как раз предназначены для всевозможных обтеканий.
    2. Чтобы отступы между картинкой и текстом не скакали, была ровная сеточка, а строки в разных блоках совпадали по вертикали, имеет смысл жестко привязать ее (картинки) высоту к EM/REM. Вообще удобно все к этим единицам привязывать, но это уже другая история.
    3. Исходя из пункта 2, нужно добавить media-выражения для картинки на разные размеры экрана. Да, это лишняя работа. Да, это не чик-чик и в продакшен, но если важны мелочи в дизайне - делаем.
    4. На маленьких экранах все это будет плохо восприниматься, так что выстраиваем элементы в столбик. Ширина в 100% всему. По уму контент важнее, чем aside, так что меняем их порядок с помощью свойств flex, flex-direction и order.

    Получится что-то такое:

    Ответ написан
    1 комментарий
  • Как уменьшить размер шрифта при уменьшении размера окна?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    Видимо вам нужно привязать размер шрифта у элемента html (он же :root в нашем контексте) к единицам vw и сделать из этого шлюз. Есть хорошая статья по теме. А уже потом использовать единицы rem в компонентах. Таким образом вслед за размером шрифта у html будут меняться размеры шрифтов везде. Так же можно использовать эти же единицы rem везде, где размеры элементов по смыслу связаны с размером шрифта.
    Ответ написан
    Комментировать
  • Какую сетку использовать?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    Только изучаю верстку. И думаю что использовать для адаптивности, готовую сетку или делать свою.

    Посмотрите на готовые сетки. Сделайте свою. Это не сложно. Это не то, что нужно "делать". Сетка - это чуть ли не самое простое, что вообще у нас в верстке есть. Использовать свою или чужую - не важно. Важно - понимать, какие задачи она решает.

    И есть еще один момент: вписывается ли конкретная сетка в конкретный проект. Например мне нравится вот эта сетка. Я ее часто использую, она простая, удобная, очень похожа на тот же flexboxgrid, но с классами в духе rscss. Все круто. Но в проект, где используют БЭМ, я ее не принесу, как бы она мне не нравилась. Просто она туда не впишется. Или если нужна поддержка старых IE - там без флексов она не будет работать. Или может быть дизайн, требующий семь брейкпоинтов. Или 11 колонок. Всякое в жизни бывает. И идеально подходящая в одних ситуациях сетка совершенно не подойдет в других. Нет универсального варианта для всех возможных проектов.
    Ответ написан
    Комментировать
  • В чем может быть проблема анимации на mac OS?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    Сразу бросается в глаза, что при скролле вы анимируете свойство top. При переходе между страницами в скриптах происходят постоянные обращения к свойствам inner*/outer*/offset*/client* (все минифицировано, не разобрать) а также изменения значений left, height и, возможно еще чего-то. Это все вызывает множественную перестройку макета страницы и проблемы с производительностью. Рекомендую почитать статью по теме.
    Ответ написан
    Комментировать
  • Создает ли нагрузку css градиент?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    В теории:

    В процессе работы анимации со свойством background-position постоянно происходит полный цикл всего, что только может происходить при отображении страницы:

    fblbnrk5cdwptagicpqspwlawku.png

    Иными словами нагрузка есть, да.

    На практике:

    На среднем железе один такой цикл занимает меньше 1ms. Это не много. Это не то, что будет создавать "ощущение тормозов" у пользователя. Если поделить 1000ms на 60fps, то получится где-то ~16.5ms на кадр. Соответственно, если бы анимация занимала к примеру 30ms, то мы бы глазами видели лаг. Если анимация занимает ~10-12ms, то у устройства еще остаются ресурсы на работу остальных скриптов, общение с сервером и.т.д. и мы видим шустро работающую страницу. А в вашем случае она занимает меньше 1ms, так что нет каких-то весомых причин отказываться от нее. Не занимайтесь преждевременной оптимизацией.
    Ответ написан
    Комментировать
  • Как сделать круговую диаграмму?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    Атрибут stroke-linecap='round' у элемента path как раз сделает такие закругления на концах. А сам path по окружности можно сделать как в этом ответе на SO.
    Ответ написан
    Комментировать
  • Как сделать вот такие стрелки для ul списка. Как на примере?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    Ответ написан
    Комментировать
  • Как сделать такое подчеркивание текста?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    span {
        background: linear-gradient(to bottom,
            transparent 0%,
            transparent 50%,
            #ff0 50%,
            #ff0 100%);
    }
    Ответ написан
    4 комментария