Java, UX, HTML, CSS, WEB-design

Построение количественных запросов CSS «на лету»

[ad_1]

  • Дрю Миннс

  • 0 Комментарии

Построение количественных запросов CSS «на лету»

  • 5 минут чтения

  • Инструменты, CSS, Методы

Краткое резюме ↬

Часто в рамках проекта представление нашего контента меняется в зависимости от определенных потребностей. Мы видим это, когда используем медиа-запросы для изменения наших стилей в зависимости от пользовательского устройства. Запросы количества в CSS следуют той же концепции изменения стилей на основе условия: условием в запросе количества является количество одноуровневых элементов. Примером может служить навигация, где элементы имеют ширину 25%, когда доступно четыре элемента; но когда доступно пять элементов, ширина элементов навигации изменяется на 20%. Это распространенная проблема с динамическими платформами сайтов, такими как WordPress или Ghost. Клиент может не осознавать сложности, которые могут возникнуть, например, при добавлении еще одного пункта меню, когда CSS не настроен для его размещения.

Часто в рамках проекта представление нашего контента меняется в зависимости от определенных потребностей. Мы видим это, когда используем медиа-запросы для изменения наших стилей в зависимости от пользовательского устройства. Запросы количества в CSS следуют той же концепции изменения стилей на основе условия: условием в запросе количества является количество одноуровневых элементов.

Примером может служить навигация, где элементы имеют ширину 25%, когда доступно четыре элемента; но когда доступно пять элементов, ширина элементов навигации изменяется на 20%. Это распространенная проблема с динамическими платформами сайтов, такими как WordPress или Ghost.

Дальнейшее чтение на SmashingMag:

  • Пришло время начать использовать пользовательские свойства CSS
  • Заказ количества с помощью CSS
  • Как масштабировать приложения React
  • По-настоящему плавная типографика с единицами vh и vw

Клиент может не осознавать сложности, которые могут возникнуть, например, добавление еще одного пункта меню, когда CSS не настроен для его размещения. Теперь вы можете легко решить эту проблему с помощью Flexbox (и многие другие проблемы), но как насчет умного запасного варианта для браузеров, не поддерживающих Flexbox — желательно только с CSS, без JavaScript вообще? В идеале мы могли бы использовать @supports, но вы, вероятно, можете догадаться, какие браузеры не поддерживают это свойство.

Еще после прыжка! Продолжить чтение ниже ↓
Вы, должно быть, сталкивались с этой проблемой в прошлом: у вас есть динамическое количество братьев и сестер, и вам нужно стилизовать их по-разному, основываясь на общем количестве братьев и сестер. Это можно легко решить с помощью количественных запросов CSS. Источник изображения: Quantity Queries на ALA.

Однако иногда Flexbox не справляется. Что, если вы разрабатываете галерею с нечетным количеством элементов и хотите выделить изображение в центре, не отслеживая с помощью JavaScript, сколько элементов помещается на экране? Или как насчет таблицы, в которой некоторые столбцы могут нуждаться в различном стиле в зависимости от того, сколько элементов может отображаться в данном разрешении — например, при выборе рейса авиакомпании или бронировании билетов в кино?

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

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

Пример запроса количества

Использование селекторов CSS, таких как nth-last-child(), last-child и ~, мы можем создать селекторы, соответствующие нашим требованиям. Если вам интересно узнать больше о том, как они работают, Леа Веру, Хейдон Пикеринг и я написали статьи на эту тему.

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


ul li:nth-last-child(n+5), ul li:nth-last-child(n+5) ~ li {
  // styles go here
}

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


ul li:nth-last-child(-n+5):first-child, ul li:nth-last-child(-n+5):first-child ~ li {
  // styles go here 
}

Еще больше расширяясь, мы можем устанавливать границы и применять стили, если родственные элементы находятся в пределах определенного диапазона.


ul li:nth-last-child(n+5):nth-last-child(-n+10):first-child, ul li:nth-last-child(-n+5):nth-last-child(-n+10):first-child ~ li {
  // styles go here
}

Решение для написания количественных запросов

Как видите, эти запросы могут быть немного подробными и сложными для написания. Вот почему я создал QuantityQueries.com: инструмент, который мне был нужен для создания и демонстрации количественных запросов для моих собственных проектов.

QuantityQueries.com
Построение количественных запросов на QuantityQueries.com (увеличенный снимок экрана)

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

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

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

qq_demoImage-opt-маленький
Демонстрация в действии. (Посмотреть большую версию)

«Но я должен поддерживать браузер X…»

Запросы количества строятся с использованием современных свойств CSS для выполнения выбора. Они будут работать во всех современных браузерах (как настольных, так и мобильных, включая Opera Mini 8), вплоть до IE9. Селекторы, такие как nth-last-child(), ~ и last-child были введены в CSS3 и first-child был представлен CSS2.1. Очевидно, вы можете рассматривать их как прогрессивное улучшение, но если вам абсолютно необходимо поддерживать устаревшие браузеры, вы можете использовать Selectivizr и Modernizr.

Использование сегодня

Не стесняйтесь добавить сайт в закладки и держать его под рукой в ​​своем инструментальном поясе. Каждый проект имеет разные требования и должен быть адаптирован к потребностям клиента, но этот инструмент может пригодиться, когда вам нужен довольно сложный селектор и вы не хотите тратить часы на вычисление математики. Вы также можете использовать тестер селекторов структурных псевдоклассов CSS3 от Lea Verou, тестер CSS Tricks: nth и nth-test для тестирования.

Если вы хотите помочь улучшить инструмент или обнаружить какие-либо ошибки, вы можете помочь улучшить приложение или сообщить о любых проблемах. Надеюсь, что проект будет полезен для ваших проектов!

Сокрушительная редакция
(ог)



[ad_2]
Source: https://smashingmagazine.com

Заключение

Вы ознакомились с статьей — Построение количественных запросов CSS «на лету»

Пожалуйста оцените статью, и напишите комментарий.

Похожие статьи

Добавить комментарий

Ваш адрес email не будет опубликован.

Краткое описание по статье Построение количественных запросов CSS «на лету»

Название: Построение количественных запросов CSS «на лету» . Краткое описание: [ad_1] ⭐ Дрю Мин . Дата публикации: 07.02.2022 . Автор: Алишер Валеев .

Для чего создан сайт Novosti-Nedeli.ru

Данный сайт посвящен новостям мира и мира технологий . Также тут вы найдете руководства по различным девайсам.

Сколько лет сайту?

Возраст составляет 3 года

Кнопка «Наверх»