Ответы пользователя по тегу CSS
  • Как сделать, чтобы stylelint подсвечивал ошибки?

    SeaInside
    @SeaInside
    15 лет пилю все эти штуки
    Какой вывод у расширения?

    64c3db81a874d623443979.jpeg
    Ответ написан
    Комментировать
  • Почему stylelint не подсвечивает ошибки?

    SeaInside
    @SeaInside
    15 лет пилю все эти штуки
    Он по умолчанию, вроде бы, не работает с SCSS (у вас в соседнем вопросе оно фигурирует).
    Так или иначе, проверяйте настройки:

    64c3b4bb9720c807629137.jpeg
    Ответ написан
    1 комментарий
  • Как получить значение выполнения математических действий внутри тега transform?

    SeaInside
    @SeaInside
    15 лет пилю все эти штуки
    Вам не нужна интерполяция при математических операциях внутри SASS:
    transform: rotate($i * 6deg); и всё будет работать.

    Интерполяция будет нужна, если вы будете работать с CSS функциями, например, с calc():
    left: calc(#{$i}px + 10%);
    Ответ написан
    1 комментарий
  • Как приклеивать блок DIV к верхнему и к нижнему краю одновременно используя POSITON:STICKY;?

    SeaInside
    @SeaInside
    15 лет пилю все эти штуки
    Задача на текущий момент не решается на чистом CSS.
    Можете вот это решение попробовать, либо попробовать нагуглить что-то другое по запросу "affix sidebar".
    Ответ написан
  • Как сделать такую кнопку?

    SeaInside
    @SeaInside
    15 лет пилю все эти штуки
    Жму руку дизайнеру, молодец, не как у всех.

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

    Изначально я не обратил внимания, что нижний край строго горизонтальный, и накидал такое как стартовую точку



    Но когда заметил - понял, что так в принципе не выйдет сделать, на CSS нельзя "зафиксировать от трансформации" две стороны сразу.

    Так что остаётся вариант с фоновой SVG-шкой, что по сути "фоновая картинка", либо вариант со вставкой этой SVG напрямую в кнопку (прям инлайном) и дальнейшие манипуляции с ней, если требуется адекватный ховер.

    Делать лень, это нетрудно :)
    Ответ написан
    2 комментария
  • Как задеплоить vite проэкт на gh-pages?

    SeaInside
    @SeaInside
    15 лет пилю все эти штуки
    Скорее всего, не указан ключ base в конфигурации и ресурсы пытаются загрузиться с адреса username.github.io/assets/... вместо username.github.io/package-name/assets/....

    Вот тут пример того, как правильно.
    Или поможет это, или давайте ссылку на репозиторий :)
    Ответ написан
  • Почему изображение выходит за пределы родительского блока?

    SeaInside
    @SeaInside
    15 лет пилю все эти штуки
    Есть от вопроса ощущение проблемы XY
    Но если уж решать обозначенную проблему, то два пути у вас:
    1. Убрать `height` у родительского блока
    2. Сделать внутренним элементам относительное позиционирование, а картинки внутри прибить к ним абсолютами
    Ответ написан
    Комментировать
  • Как перевести letter-spacing в процентах из Figma в px?

    SeaInside
    @SeaInside
    15 лет пилю все эти штуки
    потому что если брать em (допустим letter-spacing: calc(1em / 20);) то размер letter-spacing у всех текстов одинаковый, вне зависимости от размеров шрифта

    Это неправда, величина будет разной при двух условиях:
    1. У текста действительно разный размер шрифта
    2. Правило корректно применено к обоим блокам

    У вас, полагаю, проблемы со вторым - ибо одинаковый размер шрифта сложно не заметить.

    Вот вам codepen: https://codepen.io/morevm/pen/gOebabV
    Вот инструкция по инспектированию:

    62bccb7f7b6df574694045.jpeg
    Посмотрите для обоих элементов. Одинаковое значение?

    Кстати, calc(1em / 20)) - какая-то максимально неинтуитивная запись.

    letter-spacing: .05em; /* 5%  */
    letter-spacing: .2em;  /* 20% */


    Возможно можно в самой figma как-то массово перевести % в px?

    Честно, я бы задонатил тому, кто сделает так, чтобы в Фигме нельзя было использовать px
    Ответ написан
  • Как вернуть четкость сайту, которое убивает css scale?

    SeaInside
    @SeaInside
    15 лет пилю все эти штуки
    Вы можете проспонсировать разработку экранов с плотностью пикселей 10x и вложиться в покупку таковых для пользователей вашего сайта :)

    Серьёзно, это очень простой концепт - вот есть у вас на изображении рамка шириной 1px.
    Вы говорите `transform: scale(.8)`, размер рамки какой должен быть? `0.8px`?
    Но для экрана без повышенной плотности пикселей минимальный размер пикселя - это `1`.
    Как прикажете ситуацию разруливать? Это риторический вопрос, здесь нет решений помимо озвученного в первом абзаце.

    62ad6eb6a09f6450973954.jpeg
    Ответ написан
    Комментировать
  • Изменение значения gap в зависимости от ширины экрана (адаптив) через миксины?

    SeaInside
    @SeaInside
    15 лет пилю все эти штуки
    Здесь используются медиа-запросы, просто реализация скрыта за миксином.
    Вы всегда можете посмотреть в результирующем CSS, во что этот миксин разворачивается.

    Сам миксин почти наверняка выглядит как-то так и разворачивается примерно вот в такое:

    @media (min-width: 320px) {
      gap: calc(20px + 40 * (100vw - 320px) / 850);
    }
    
    @media (min-width: 1170px) {
      gap: 60px;
    }
    Ответ написан
    Комментировать
  • Синий квадрат, появляющийся при нажатии на кнопку на мобильных устройствах, как от него избавиться?

    SeaInside
    @SeaInside
    15 лет пилю все эти штуки
    Ваша проблема решится с помощью -webkit-tap-highlight-color
    Ответ написан
    Комментировать
  • Дублировать контент или динамически адаптировать на js?

    SeaInside
    @SeaInside
    15 лет пилю все эти штуки
    Критерии "лучшести" какие?
    В поддержке обычно проще и очевиднее иметь дубль с говорящим названием: `.block__text` и `.block__text-mobile`, например. Иногда, если контент отличается прям сильно и в нескольких элементах, вплоть до замены самой корневой сущности: `the-hero`, `.the-hero-mobile`, хотя это крайний случай, конечно.

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

    SeaInside
    @SeaInside
    15 лет пилю все эти штуки
    Эта разметка абсолютно правильная в двух случаях:
    1) Ваши `close` и `card` действительно нигде не переиспользуются;
    2) Объём стилей блока `some-class` остаётся адекватным для восприятия.

    Соответственно, вам нужен новый блок в двух случаях: либо он переиспользуется, либо для разделения кода для простоты восприятия.

    Возьмём разметку посложнее (не надо в ней искать какого-то смысла, просто от фонаря что-то набрал для иллюстрации):
    <div class="block">
      <!-- Header -->
      <div class="block__header">
        <h2 class="block__title">Title</h2>
        <div class="block__actions">
          <button type="button" class="block__action block__action--edit">
            <span class="block__action-icon"></span>
          </button>
        </div>
      </div>
      <!-- Content -->
      <div class="block__content">
        <p>...</p>
      </div>
      <!-- Footer -->
      <div class="block__footer">
        <div class="block__about">
          <div class="block__author"></div>
          <div class="block__date"></div>
        </div>
        <div class="block__awards">
          <div class="block__award">
            <div class="block__award-inner"></div>
            <div class="block__award-tooltip">
              <div class="block__award-tooltip-content"></div>
              <button type="button" class="block__award-tooltip-close"></button>
            </div>
          </div>
        </div>
      </div>
    </div>


    Положим, что весь контент этого блока уникальный и никак не переиспользуется.
    Объём стилей `block` при такой структуре неизбежно станет некомфортным для восприятия, строк на 200-300.

    В таком случае хорошо создать внутренний блок (или несколько) просто для того, чтобы размазать сложность.
    `block-header`, `block-footer` или даже `block-footer-award`.

    Самое главное здесь организовать файловую структуру / конфигурационный файл / чем вы там ещё собираете таким образом, чтобы было очевидно, что `block-footer` - это не самостоятельный блок, а внутренний блок `block`, нужный только для упрощения восприятия, и он не может / не должен использоваться в отрыве от него (в этом случае у него не должно быть в названии общего префикса с `block`, чтобы не создавать путаницу)

    * И не забывать о том, что даже для таких внутренних блоков действуют те же самые правила, что и для других - вся внешняя геометрия задаётся через элементы.
    Ответ написан
    8 комментариев
  • Это эффект параллакса из одной фотографии? Как это сделано?

    SeaInside
    @SeaInside
    15 лет пилю все эти штуки
    Подробнее об этом можно узнать здесь
    Ответ написан
    Комментировать
  • Как такое сверстать?

    SeaInside
    @SeaInside
    15 лет пилю все эти штуки
    Вот здесь, например, делал когда-то такую вещь (блок "Этапы создания корпоративного сайта").

    605df09f637c9864487824.jpeg

    Идея, вкратце:
    1. Элементы размещаете просто в сетку с помощью inline-block/float/flex/grid - как привычнее.
    2. Родителю задаёте относительное позиционирование, в него помещаете абсолютный элемент на всю ширину/высоту с небольшим запасом, на котором будете рисовать SVG.
    3. Как нарисуется - на js считаете ключевые точки (координаты), через которые нужно провести линии.
    4. Динамически рисуете SVG по вашим ключевым точкам.
      О том, какие варианты вообще есть, можно почитать на MDN, например.
      Выглядеть это будет примерно так:

      605df0b0256ca826129561.jpeg

      В вашем случае рекомендую использовать кривые Безье. Здесь мне нужно было сделать полукруг, поэтому я использовал дуги, у вас же просто статичная величина закругления.
    5. На ресайз окна считаете ключевые точки заново и перерисовываете SVG.
    6. Опционально заморачиваетесь и добавляете сверху ещё один путь, который по скроллу будет "заполняться"


    Это в целом чёрная магия, можно полдня убить, но красиво :)
    Если это всё очень сложно, то просто картинкой вставьте, высоту элементов фиксируйте, и меняйте картинку для адаптивных вариантов.

    Готовых вариантов тут в общем-то вы вряд ли найдёте, нужно взять и разработать.
    У меня была идея оформить это в какую-то библиотеку, но как и все остальные идеи - и ныне лежит в туду-листе на 60+ пунктов. :)
    Ответ написан
    12 комментариев
  • VSCode - автоматическое создание открытых и закрывающих скобок в CSS?

    SeaInside
    @SeaInside
    15 лет пилю все эти штуки
    При необходимости прям вот такой оптимизации вряд ли, слишком узкая задача. Это не невозможно, просто зачем?

    Если автоматически из HTML-разметки нужно сделать s?css, то для этого есть eCSStractor

    Если лень самостоятельно писать управляющую структуру для CSS, то можно её свести к одному символу с помощью сниппетов. Вот мой вопрос с моим же ответом, до сих пор так и делаю, брат жив.
    Ответ написан
    Комментировать
  • Как верстать с хорошими показателями Google Speed?

    SeaInside
    @SeaInside
    15 лет пилю все эти штуки
    Здесь нет волшебной таблетки. Это комплекс факторов...
    Из главного: ленивая/отложенная загрузка всего и вся (всевозможные метрики и второстепенные скрипты / графика / компоненты, если используете фреймворки), использование современных форматов графики (webp в частности), вёрстка mobile-first (существенно снижает время на расчёт лейаута и рендер на приоритетных устройствах), инжект CriticalCSS (это про time to first paint), уменьшение размера DOM-дерева.
    Это из фронта, на бэке - сжатие gzip/brotli, максимальное время жизни кэша, оптимизация времени до ответа.

    Они же все рекомендации прямо при проверке пишут, там очень подробно всё расписано.
    Волшебной кнопки не существует.

    За 100/100 гоняться на чём-то больше стандартного лендоса - как правило бред сумасшедшего (оно обычно можно, но того совершенно не стоит, так как из-за отложенной загрузки/рендера будет страдать UX, что важнее красивой пузомерки).
    90+ для почти любого проекта - вполне несложно, если умеючи.
    А умеючи - это с опытом, анализом рекомендаций, а не поиском новых сборок/инструментов.
    Ответ написан
    2 комментария
  • Съезжает перспектива при translateX?

    SeaInside
    @SeaInside
    15 лет пилю все эти штуки
    Порядок свойств имеет значение. Сначала сделайте translate, потом всё остальное, только и всего. :)
    Ответ написан
    1 комментарий
  • Применение стилей к динамическому контенту?

    SeaInside
    @SeaInside
    15 лет пилю все эти штуки
    Через каскад такие вещи стилизуются.
    Каскад - плохо в общем случае, но для пользовательского контента - допустимо. Уж тем более не стоит того, чтобы на JS по дому бегать. :)

    .user-content { ... }
    .user-content p { ... }
    .user-content h# { ... }
    Ответ написан
    Комментировать
  • Как сделать прокрутку как на сайте Apple Music?

    SeaInside
    @SeaInside
    15 лет пилю все эти штуки
    Вот тут человек тоже вдохновился продуктами Apple и реализовал библиотеку, которая позволяет делать эти вещи просто.
    Сам пока не использовал, но на первый взгляд выглядит просто и работает.
    Ответ написан
    Комментировать