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

    MrDecoy
    @MrDecoy Куратор тега CSS
    Верставший фронтендер
    парочка более менее вариантов, что пришли сходу:
    1. Использовать подходящий для этих целей шрифт: https://ux.pub/editorial/proportsionalnyie-shrifty...
    2. Сделать хак на псевдоэлементах. По умолчанию текст показывается из элемента, а при наличии класса active устанавливается visibility: hidden, и поверх абсолютно спозиционированный текст в том же месте где и обычный текст из псевдоэлемента, но уже жирный. Чтобы не прописывать для каждого псевдоэлемента свой текст в css можно воспользоваться функцией attr()
    3. Ну и вариант который есть всегда - сказать дизайнеру\заказчику что это не лучший вариант выделения для конкретно данного меню и предложить другой. Например, подчёркивание, а не выделение жирным.
    4. Сделать жирность через text-shadow
    Ответ написан
  • Как сделать список в списке?

    MrDecoy
    @MrDecoy Куратор тега CSS
    Верставший фронтендер
    Как сделать список в списке?

    Сделать список в списке.

    А циферки можно с помощью css счётчиков

    https://stackoverflow.com/questions/2729927/number...
    Ответ написан
  • Какую библиотеку использовать для постепенной анимации элемента при скролле страницы?

    MrDecoy
    @MrDecoy Куратор тега CSS
    Верставший фронтендер
    Ну конкретно такое не сложно сделать и самому - подписаться на скрролл, в зависимости от значения делать transform для слоёв.
    А так часто используют GSAP\ScrollMagic для сайтов с нестандартными анимациями при скроле
    https://greensock.com/scrollmagic/
    Написано только что
    Ответ написан
    Комментировать
  • Как сверстать такой эффект тексту?

    MrDecoy
    @MrDecoy Куратор тега CSS
    Верставший фронтендер
    https://css3gen.com/text-shadow/
    text-shadow: -2px 0px 0px rgba(255, 0, 150, 1);
    Ответ написан
    Комментировать
  • Как обращаться к элементам с указанием строки в css внутри одного блока?

    MrDecoy
    @MrDecoy Куратор тега CSS
    Верставший фронтендер
    Нет селектора по строкам. Только :first-line и относится он ко всей первой строке текста.
    Что у Вас там за вёрстка не очень понятно.
    А лайфхак - делать отступ в данном случае не слева, а справа, тогда отступ убирать у первого элемента второй строки не нужно будет.

    А если поддержка позволяет, то свойство gap для контейнера вместо маргина на элементах, если это на флексах у Вас.
    Ответ написан
    1 комментарий
  • В каком порядке будут отрисованы html-элементы на странице (всего 14 строк кода)?

    MrDecoy
    @MrDecoy Куратор тега CSS
    Верставший фронтендер
    Ну, чтож.. я не то чтобы прям хорошо в этом разбираюсь и браузеры постоянно работают над оптимизацией загрузки ресурсов и отрисовки, но, в целом, примерно так:
    0) html стримится, поэтому всё идёт неким потоком, а не по блокам.
    1) Браузер получил html, встретил в head ссылки на русурсы, пошёл их в параллель получать.
    2) Так как в скриптах может уже выполняться какая-то синхронная работа, то браузер дождётся загрузки и выполнения script1.
    3) Стили могут всё ещё грузиться, а могут и нет.
    4) Начинает строиться DOM. Браузер увидит картинку и пойдёт её загружать в паралель. Так как атрибутов width и height не указано (и если в style.css тоже не указано) то место под картинку зарезервировано не будет.
    5) Увидит script2, начнёт его загружать, пойдёт дальше строить DOM. (Скрипт выполнится как только загрузится и распарсится браузером. Так как стоит async - когда это произойдёт нам не известно. То есть может заблочить дальнейшее построение DOM, а может и нет. )
    6) Увидит script3, так как он без атрибутов, то будет дожидаться загрузки и выполнения в синхронном режиме. Велика вероятность что выполнится раньше script2.
    7) DOM готов, если CSS загрузился, то DOM и CSSOM мержатся в Render Tree -> происходит первичная отрисовка.
    8) DOM Content load
    9) Если под картинку всё же не было указано размера, и она ещё не загрузилась к этому моменту, то по факту её загрузки произойдёт перекомпановка и перерисовка, иначе только перерисовка. (всегда стоит стремиться сводить перекомпановки, известные так же как reflow, к минимуму и вызывать только перерисовки, известные как repaint)

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

    MrDecoy
    @MrDecoy Куратор тега CSS
    Верставший фронтендер
    Но я не рекомендую так делать.
    Блюр на css не везде поддерживается и достаточно прожорливое свойство.
    https://codepen.io/Mr_DECOY/pen/NWYwWxz
    И в свойстве mask по средствам задания процентов градиента можно указывать степень плавности перехода от блюра к чёткой картинке.
    Ответ написан
    3 комментария
  • Одинаковые стили и структура по разному ведут себя на разных сайтах?

    MrDecoy
    @MrDecoy Куратор тега CSS
    Верставший фронтендер
    Точно стили одинаковые?
    Сайт: https://spb.gymbalance.ru/o-hudozhestvennoj-gimnastike/
    Файл: themes/glav-gymbalance/style.css?ver=6.0.1
    Строка: 666
    .row > * {
      flex-shrink: 0;
      width: 100%;
      max-width: 100%;
      padding-right: calc(var(--bs-gutter-x) * 0.5);
      padding-left: calc(var(--bs-gutter-x) * 0.5);
      margin-top: var(--bs-gutter-y);
    }
    Ответ написан
  • Почему css код срабатывает только на первую кнопку?

    MrDecoy
    @MrDecoy Куратор тега CSS
    Верставший фронтендер
    gazes12,
    Почему css код срабатывает только на первую кнопку

    Он срабатывает и на вторую.
    Но конечный рендер разный.

    У Вас на :after элементе стоит z-index: -1 соответственно, он проваливается под саму кнопку.
    В навигации не проваливается из-за display: flex. Объяснения почему так происходит я не помню.

    Сейчас сходу для Вашего решения быстро в голову приходит только вариант обернуть текст кнопки в span, задать ему position: relative и z-index: 1.
    А z-index: -1 для after элемента у кнопки поменять на 0.
    Ответ написан
    Комментировать
  • Как убрать одинаковую высоту Flex блоков div?

    MrDecoy
    @MrDecoy Куратор тега CSS
    Верставший фронтендер
    как сделать так, чтобы флексбокс находящийся снизу, прижался к этой строке, заполнив пустоту?

    Никак, это против самой идеи flexbox.

    Вот прижмётся он к верху, заняв пустоту, со следующим что должно произойти?
    По факту Вы спрашиваете про что-то вроде masonry раскладки. Нативно CSS так пока ещё не умеет, насколько мне известно(есть экспериментальная фича за флагом в фаер фокс).
    Копайте в эту сторону

    Либо поменять раскладку с построчной на поколоночную.
    Ответ написан
    1 комментарий
  • Как работает backdrop-filter?

    MrDecoy
    @MrDecoy Куратор тега CSS
    Верставший фронтендер
    Поверьте, читал в интернете, не нашел, вот ссылка https://cozy-blini-ee5759.netlify.app/

    1. У Вас у блоков однородный фон - чёрный. Как Вы хотите увидеть фон под элементом? Background должен быть хотя бы прозрачным.
    2. А Вы попробуйте не на чёрном фоне, намного более заметно как всё у Вас работает.

    А ещё лучше заметно на неоднородных фонах. Поставьте картинку на боди фоном и будет ещё лучше видно.
    62d801c225fab262911193.png
    62d801faac317727555978.png

    Ну а если отвечать на вопрос из заголовка:
    Как работает backdrop-filter

    То в спеке всё описано https://drafts.fxtf.org/filter-effects-2/#backdrop...
    Ответ написан
    Комментировать
  • Это работает по принципу dropdown (выпадающие списки / меню), как правильно верстать или загуглить?

    MrDecoy
    @MrDecoy Куратор тега CSS
    Верставший фронтендер
    1. dropdown это сам выпадающий блок, как правило с абсолютным позиционированием или относительно родителя. На картинке - accordion (причём dropdown может быть частью accordion. В dropdown показывается контент, а над ним элемент активатор)
    2. Не существует правильной или не правильной вёрстки. Есть вёрстка, которая отвечает требованиям и которая не отвечает.
    3. Ну а так, есть примеры "от w3c" как верстать разные ui элементы с хорошей доступностью. Например https://w3c.github.io/aria-practices/examples/acco...
    Ответ написан
    Комментировать
  • Ответьте пж где учить CSS (учусь сам дома, не советуйте кого то на подобие Хауди хо)?

    MrDecoy
    @MrDecoy Куратор тега CSS
    Верставший фронтендер
    https://developer.mozilla.org/ru/docs/Learn/CSS
    https://web.dev/learn/css/
    htmlbook.ru/samcss
    Леа Веру - секреты css
    Дэвид Макфарланд - Новая большая книга css

    https://htmlacademy.ru/courses
    Ну и конечно же самостоятельная практика.
    Ответ написан
    1 комментарий
  • Как браузер выполнить наложение эти стилей в данном случае?

    MrDecoy
    @MrDecoy Куратор тега CSS
    Верставший фронтендер
    Длинный ответ:
    https://developer.mozilla.org/ru/docs/Web/Performa...

    Короткий ответ:
    Для каждого узла найдёт соответствующие правила и применит наиболее приоритетное из них. В данном случае - из медиа. А вот эта формулировка "сначала одно потом другое" - лишена смысл. Файл само собой читается последовательно, а не все строки одновременно.

    Браузер сначала задаст высоту 30, а потом 60, тем самым вызвав два рефлоу?

    Рефлоу - это когда уже страница была отрисована. На первичной отрисовке это, по идее, произойдёт в первом случае при построении render tree(title в него не попадёт, так как display: none), во втором, при компоновке. Но в обоих случаях до первичной отрисовки.

    То есть куда улчше было бы использовать еще и media min-width?

    Зачем намеренно утяжелять дерево стилей?
    Ответ написан
    7 комментариев
  • Как правильно добавить стрелочку?

    MrDecoy
    @MrDecoy Куратор тега CSS
    Верставший фронтендер
    Смотря какую стрелочку, но, в целом, через ::after псевдоэлемент.
    Либо вставить в саму ссылку.
    Ответ написан
    2 комментария
  • Как сделать свайп блока (Желательно VUE)?

    MrDecoy
    @MrDecoy Куратор тега CSS
    Верставший фронтендер
    https://qna.habr.com/q/879393#answer_1791997

    низкомолекулярный макрос, Вот тут можно посмотреть реализацию на сайте (через эмуляцию или на реальном мобильном, нужно нажать на зелёную кнопку снизу):
    https://svoefermerstvo.ru/catalog/root
    На яндекс картах в мобильной версии так же есть такая "шторка"

    Работает как по кнопке, так и свайпом.
    Ответ написан
    Комментировать
  • Как реализовать шторку на js?

    MrDecoy
    @MrDecoy Куратор тега CSS
    Верставший фронтендер
    Набросал на скорую руку css only вариант, просто потому что стало интересно.
    Это не продакшен реди решение.
    Используются современные свойства, которые моут плохо поддерживаться или бить по производительности. Нужно замерят.
    Тут есть что оптимизировать.
    Вам стоит воспринять это как возможное направления куда копать и как минимальный образец\прототип.
    Ответ написан
    Комментировать
  • Для чего нужны сетки?

    MrDecoy
    @MrDecoy Куратор тега CSS
    Верставший фронтендер
    Использование сеток позволяет упростить расположение блоков а так же их адаптив для других размеров экрана.
    Если есть сетка - легко перейти к расположению элементов, скажем, от 4 в строке к 2 в строке и на совсем маленьких 1 элемент в строк(то есть там, где на десктопе показывается 4 в строке, на мобильных всё будет в одну колонку)

    Как правило, дизайн так же отталкивается о такой же сетки, как и вёрстка, либо одна подстраивается под другую.

    Если в дизайне нарисован блок, который имеет дробное значение по занимаемым колонкам, например, 2.5, то тут 2 варианта:
    1) Дизайнер не знает\забил на сетку
    2) Это намеренное решение.

    В любом случае нужно идти к дизайнеру и спросить чё за дела.
    В первом случае - пусть исправляет.
    Во втором - делаете кастомную вёрстку без сетки.

    Наличие сетки, как правило, способствует модульности и сокращает время на вёрстку.
    Но уникальный дизайн, или супер пупер дизайнерское решение, аля сайт для awwwwards скорее всего будет без сетки, но не обязательно.
    Ответ написан
    Комментировать
  • Можно ли в iOS Safari полностью убрать горизонтальный скроллбар?

    MrDecoy
    @MrDecoy Куратор тега CSS
    Верставший фронтендер
    Вот как один из вариантов (ios 14.6) - скрола не видно, но скролл есть


    Альтернативный вариант - сделать так, чтобы скролл был у дочернего блока, высота дочернего блока больше блока обёртки, у блока обёртки - overflow:hidden.
    Тогда скролл будет, но его не будет видно.
    Этот вариант Вам не очень подходит, потому что скролл в ios поверх контента, но если сделать дополнительный отступ снизу у дочернего блока - то вполне.
    Ответ написан
    1 комментарий