Задать вопрос
  • Можно ли уже использовать CSS-свойство text-wrap: balance?

    Ankhena
    @Ankhena Куратор тега CSS
    Нежно люблю верстку
    Можно ли сейчас отказаться от подхода задания максимальной ширины

    От этого подхода нужно было отказаться всегда. Если вы имели в виду однотипные блоки и вашу попытку задавать им ширину в зависимости от контента "сейчас". Контент меняется.

    А также использую неразрывные пробелы для некоторых фраз.

    Это правильный подход.

    Т.е. лучше уж поставить br или span выполняющий его роль, чем фикс ширину для того, чтобы подстроить конкретный текст под блок. Если речь о каких-то дизайнерских моментах типа заголовков.

    Можно ли уже использовать CSS-свойство text-wrap: balance?

    Тут нужно начать с вопроса, а что будет если открыть сайт из браузера, который не поддерживает свойство.
    Что-то сломается? Нет.
    Т.е. это свойство работает наоборот: там где поддерживается, будет симпатичнее.

    p.s. и не используйте balance для блоков больше чем на 3-4 строки.
    Для длинных текстов text-wrap: pretty;
    Ответ написан
    Комментировать
  • Как выбрать «опорные точки» перехода ширины экрана для стилей страниц сайта?

    Ankhena
    @Ankhena Куратор тега CSS
    Нежно люблю верстку
    1. Их может нарисовать дизайнер.
    2. Их можно взять из любого фреймворка или статистики.
    3. Можно (и хорошо бы) добавлять там, где ломается конкретный дизайн.

    чтобы упростить написание стилей?

    Так не выйдет, каждый дизайн разный (ну если работать с хорошими и разными дизайнерами, а не под копирку), также браузер может быть открыт на произвольную ширину, особенно на больших мониторах.
    И нет смысла, например, ждать увеличения до 768, когда уже на 600 можно показать следующую версию, если конкретный дизайн это позволяет.

    Но можно упростить и сократить за счет относительных единиц измерения, calc, функций clamp, min, max, а также родных свойств флексов и гридов.

    Также поможет использование препроцессорных переменных. Делаете как-то так (значения от балды на основе какого-то из проектов):
    $elg: 1526px;
    $lg: 1000px;  
    $md: 720px; 
    $sm: 540px; 
    $esm: 360px;

    Количество может меняться в зависимости от проекта.
    И используете в media.
    @mixin sm {
      @media (min-width: variables.$sm) {
        @content;
      }
    }
    
    @include sm {
      //some
    }

    При переходе в новый проект, смотрите макет и меняете переменные.
    Ответ написан
    Комментировать
  • Как растянуть элемент на всю высоту скролла body?

    Ankhena
    @Ankhena Куратор тега CSS
    Нежно люблю верстку
    Моя задача растянуть фон на всю ширину body даже при скролле

    указывал для фона и 100% и 100vh

    vh вообще не имеют отношения к ширине.

    Если всё таки речь про высоту, то 100vh очевидно не поможет, потому что это размер вьюпорта, а не контента body.
    А вот 100% поможет. И cover тоже поможет.
    Но для этого, body не должно быть ограничено вьюпортом или чем-то ещё.
    Обычно для body задают min-height: 100vh или развлекаются с процентами от html. Но это делают для эффекта липкого футера.

    Самое интересное, что по умолчанию body как раз таки растягивается по высоту контента. И соответственно, фон со 100% или cover поступит аналогично (если он не svg, у svg ещё нужно разрешить изменять пропорции).
    Так что ищите где перемудрили.
    Ответ написан
  • Нет вкладки "Design " в фигме. Как её добавить?

    Ankhena
    @Ankhena
    Нежно люблю верстку
    Сделайте свою копию проекта и в ней будет возможность редактирования
    Ответ написан
    1 комментарий
  • Как наложить друг на друга два элемента с ::before?

    Ankhena
    @Ankhena Куратор тега CSS
    Нежно люблю верстку
    Сначала нужно узнать, зачем для этого два элемента div и button. Достаточно одной кнопки. Если что, у неё есть два псевдо. В вашем случае не видно зачем второй псевдо.

    Но в современном мире эта задача легко решается вообще без псевдо с помощью background-origin
    https://sitist.ru/gradient-border.html
    Ответ написан
    4 комментария
  • Почему нет нормальной работы с svg в css?

    Ankhena
    @Ankhena Куратор тега CSS
    Нежно люблю верстку
    Есть.
    Практически все способы вставки svg в html не позволяют менять цвет при помощи css.

    При вставке в разметку вообще нет проблем менять цвет.
    fill: red;
    stroke: green;

    и т.д.
    Альтернативный вариант, а разметке задаем в заливку или обводку currentColor, в CSS меняем свойство color.

    Ещё один - использование кастомных свойств.

    При вставке прямо в CSS
    Маски и фильтры.

    mask: url(img.svg) no-repeat center / contain;
      background: red;
      
      &:hover {
        background: green;
      }


    Один из вариантов - инлайнить SVG прямо в CSS (в кастомные свойства, чтобы не мусорить в селекторах).
    Другой вариант - собираем стек из SVG и используем в url в маске.

    Собственно, стеки можно использовать где угодно, в отличие от устаревшего спрайта.
    https://telegra.ph/Stack--sprajt-zdorovogo-chelove...
    Ответ написан
    3 комментария
  • Как узнать что это за приложение?

    Ankhena
    @Ankhena
    Нежно люблю верстку
    Ответ написан
    Комментировать
  • Как выровнять иконки?

    Ankhena
    @Ankhena Куратор тега CSS
    Нежно люблю верстку
    Очень интересный код.
    Ссылки на нужные разделы потеряны, а зато зачем-то картинки в разметке.

    <ul class="header__nav">
        <li class="nav__item">
          <a class="nav__link nav__link--favorites" href="">
            <span class="visually-hidden">Избранное</span>
          </a>
        </li>
        <li class="nav__item">
          <a class="nav__link nav__link--profile" href="">
            <span class="visually-hidden">Профиль</span>
          </a>
        </li>
        <li class="nav__item">
          <a class="nav__link nav__link--card" href="">
            <span class="visually-hidden">Корзина</span>
          </a>
        </li>
    </ul>


    .header__nav {
      display: flex;
      gap: 42px;
    }
    
     .nav__link {
      display: block;
      width: 44px;
      height: 44px;
      border-radius: 8px;
      background-color: rgb(246, 246, 246);
    }
    
    /* доступно скрываем текст */
    .visually-hidden {
      position: fixed;
      transform: scale(0);
    }

    И в модификаторы пишете фоны для модификаторов ссылок. Или для их псевдоэлементов, как удобнее.

    Если с псевдо, то либо делаем их инлайн-блочными и vertical-align: top; и дописываем сcылкам
    align-content: center;
    text-align: center;


    либо ссылки делаем флексами и стандартно
    display: flex;
      align-items: center;
      justify-content: center;



    https://jsfiddle.net/wav1q8kr/
    Ответ написан
  • Первый див поверх второго, и теперь во втором элементы не кликабельны, как исправить?

    Ankhena
    @Ankhena Куратор тега CSS
    Нежно люблю верстку
    Сделать элемент или псевдоэлемент прозрачным для клика: pointer-events
    Через это же свойство можно вернуть обратно для дочерних.

    Переверстать гридами.
    Например, быстренько как-то так https://jsfiddle.net/d2mnfq7o/
    Разумеется, нужно дорабатывать под себя.
    Ответ написан
    Комментировать
  • Как сделать отступ у элементов только между друг другом?

    Ankhena
    @Ankhena Куратор тега CSS
    Нежно люблю верстку
    Что же вас заставляет в современном мире верстать инлайн-блоками?

    1. Если элементов только на одну строку, то
    .elem:not(:last-child) {margin-right: NNpx}
    либо .elem + .elem {margin-left...}
    2. Если строк больше, но элементов известное количество, переписываем предыдущую формулу через nth-child
    3. Если строк больше и количество элементов в строке неизвестно, придется использовать идиотский способ с отрицательным margin для контейнера на величину лишних отступов.

    Но ведь есть же простой, удобный, логичный gap в гридах и флексах!
    Ответ написан
    3 комментария
  • Как найти js код который обрабатывает событие?

    Ankhena
    @Ankhena Куратор тега JavaScript
    Нежно люблю верстку
    Открыть вкладку Event Listeners и посмотреть.

    Обратите внимание на галочку Ancestors - она покажет или скроет родительские события.

    6655e404c893c179855975.jpeg
    Ответ написан
    Комментировать
  • Как правильно перестроить элементы?

    Ankhena
    @Ankhena Куратор тега CSS
    Нежно люблю верстку
    есть ли вариант чтобы верстка перестраивалась на больном расширении согласно макета чтобы не пршлось скрывать или показывать объекты?

    Да, конечно и даже не один.
    Вы совершенно верно в вопросе указали теги флекс и грид. Вот с их помощью.

    Флекс
    Десктоп: Оборачиваем контентyю часть в div. Родителю задаем флекс. Два элемента встают в ряд.
    Мобилки: для контентного div задаем display: contents, после этого он станет как будто прозрачным или как будто его нет.
    Ну и дальше с помощью order расставляем элементы в нужном порядке.

    Грид
    Несколько вариантов.
    Первый с такой же оберткой как для флекса.
    Второй - все элементы россыпью и просто меняем сетку.
    Ответ написан
    1 комментарий
  • Как убрать полосы у скругленных углов?

    Ankhena
    @Ankhena Куратор тега CSS
    Нежно люблю верстку
    Тесты разных вариантов
    https://codepen.io/AnnaSummer/pen/WNBwPyz


    Наверняка что-то ещё забыла
    Ответ написан
    Комментировать
  • Как лучше обратиться к кнопке через id или через class?

    Ankhena
    @Ankhena Куратор тега JavaScript
    Нежно люблю верстку
    id - уникален, т.е. по id можно обратиться только к конкретному элементу.
    class - можно обратиться ко всем элементам с таким классом. Но обычно на классы завязана стилизация, они могут быть переименованы, удалены и т.д.
    data-атрибуты - мне нравится этот вариант. Можно поставить нужным элементам сколько угодно раз, можно задать разные data-атрибуты, можно ими свободно манипулировать. Отделены от стилизации. Хотя, конечно, можно стилизовать и по ним, но меньше вероятность, что будут удалены из разметки верстальщиком.
    Ответ написан
    Комментировать
  • Почему картинка вставленная через picture растягивается на неопределенную ширину в firefox?

    Ankhena
    @Ankhena Куратор тега CSS
    Нежно люблю верстку
    Это увлекательная история.
    Вот представьте себя на месте браузера.
    Что видите в коде:
    Картинка должна занять 100% высоты и width auto.
    Как будете рисовать высоту, если у родителя картинки высота тоже 100%, у его родителя тоже нет и т.д. до самого верха. От чего считать проценты? Вроде есть какой-то намек из top 0 и bottom 0. Не прямой, конечно, но хоть что-то.
    Теперь про ширину: написано нарисуй авто. Размер в атрибуте не задан, но можно посмотреть, что там у файла. И хотелось бы сохранить пропорции.
    Следующий этап размышлений о том, что делать с picture. Вроде надо растянуть по содержимому, но у него auto, которым и так сложно решить что делать.

    Как рисовать будете? Как догадаетесь что хотел сказать верстальщик, если у браузера нет возможности заглянуть ни к вам в голову ни в макет?

    Ну вот FF берет в качестве ширины для picture исходную ширину картинки.

    Всё это о том, что когда нет четких инструкций что делать, браузер пытается как-то интерпретировать написанное. Разные браузеры будут делать это по-разному. Причем с течением времени это поведение может меняться.

    Как исправить:
    Вариант 1 (похуже)
    Тег picture тег с особенностями и ещё и часто не известно, будет ли он вообще в разметке или клиенты его потеряют.
    Поэтому самое умное, что можно ему задать это display: contents;, чтобы не мешался.
    И дальше работать с оберткой. Тут вариантов много. Например, задать пропорции, а картинке object-fit. Правда у FF есть проблемы с aspect-ratio от высоты.

    Вариант 2 (получше)
    Картинка, по крайней мере в примере, вообще не контентная и её можно убрать в стили (псевдоэлемент и его фон)
    Ответ написан
  • Как правильно обращаться к элементам при добавление класса?

    Ankhena
    @Ankhena Куратор тега CSS
    Нежно люблю верстку
    1. Совсем банальный: вешайте класс на родительский блок.

    2. Через :has
    .catalog__info:has(.catalog-filter.active)  .catalog__wrapper {
        margin-bottom: 50px;
    }
    
    .catalog__info:has(.catalog-filter.active)  .catalog__btn {
        display: none;
    }


    3. Самый интересный: с помощью кастомных свойств.
    .catalog-filter {
      --open-btn-display: block;
      --margin: 0;
    }
    
    .catalog-filter.active {
      --open-btn-display: none;
      --margin: 50px;
    }
    
    .catalog__wrapper {
      margin-bottom: var(--margin);
    }
    
    .catalog__btn {
      display: var(--open-btn-display);
    }


    p.s. Зачем вам две кнопки, если они в одном месте в разметке, я не придумала. Меняете текст и стили и всё. Тогда уж логичнее закрывающую засунуть внутрь всего открываемого блока, тогда и не нужно с ней отдельных манипуляций.
    Ответ написан
    Комментировать
  • Почему не работает transition для градиента?

    Ankhena
    @Ankhena Куратор тега CSS
    Нежно люблю верстку
    Почему не работает transition для градиента?

    Потому что bg image не анимируется.

    https://css-tricks.com/property/

    Ответ написан
  • Иконочные шрифты для сайтов, необходимо ли использовать в 2024г?

    Ankhena
    @Ankhena
    Нежно люблю верстку
    В каком смысле "необходимо"?
    Но вообще, уже много лет есть замена шрифту - это символьные svg спрайты.
    А теперь и стеки из svg, которые работают откуда хочешь. И из разметки и из стилей.

    Мне ещё симпатичен вариант использования иконок в кастомных свойствах css. А дальше bg или маски.
    Ответ написан
  • Почему рамка не надевается дальше углов?

    Ankhena
    @Ankhena Куратор тега CSS
    Нежно люблю верстку
    Почему рамка не надевается дальше углов?

    Потому что 46 это очень много для картинки 50х50. Всяко меньше половины должно быть.
    Почитайте что делает border-image-slice.
    Ответ написан
    Комментировать