Как стилизовать теги «ol» с помощью CSS
Введение
Вот случай, в который я попадаю время от времени: мне нужен упорядоченный список, и я хочу, чтобы он был красивым.
Поскольку семантика HTML важна, я использую проверенный тег
:
- Stop
- Drop
- Roll
Проблема в том, что «пули» (числа префиксов) находятся в CSS — мертвая зона селектора. Невозможно стилизовать их независимо!
Я не из тех, кто принимает апатичные пули. Поэтому я немного покопался и нашел отличное решение 🎉.
У CSS есть довольно изящный трюк, чтобы справиться с этой ситуацией. Имеет встроенный счетчик.
Вот как это выглядит:
Давайте рассмотрим это шаг за шагом:
-
counter-increment
— это свойство CSS, которое будет увеличивать определенную переменную «счетчик» всякий раз, когда встречается новый элемент. Мы ставим его на каждый элемент заказанного списка. Я назвал свою переменную «маффины», потому что мне нравятся маффины. - Перед каждым элементом заказанного списка я показываю текущее значение счетчика.
counter()
можно рассматривать как функцию CSS, которая возвращает значение для определенного счетчика. В данном случаекексов
. - Я удаляю ненастраиваемые маркеры по умолчанию с помощью
list-style: none
и указываю сброс счетчика. Это гарантирует, что если у меня есть несколько элементов
на странице, счетчик будет сбрасываться для каждого из них.
В этом трюке используются псевдоэлементы. Псевдоэлемент в CSS — это способ внедрить поддельный элемент до или после основных дочерних элементов элемента. content
позволяет указать, что должно быть в этом элементе.
В этом примере мы добавляем текущий счетчик и немного форматируем (точка и пробел), чтобы имитировать значение по умолчанию или
. Смело экспериментируйте с этим!
С помощью этого CSS мы фактически воссоздали значение по умолчанию
. Разница в том, что теперь у нас есть селектор CSS,
ol li:before
, который мы можем использовать для применения пользовательских стилей.
Вот как выглядят упорядоченные списки в этом блоге, используя этот трюк:
Ссылка на эту рубрику
Как испечь тортЯ думаю, что вы делаете что-то с сухими ингредиентами
Миксеры играют роль здесь
Все перемешать, скрестив пальцы
Отправить в печь
Потыкать зубочисткой для удовольствия, а потом подавать
Это не день и ночь, но я очень доволен общим эффектом!
Счетчики CSS кажутся функцией следующего поколения, но на самом деле они были примерно навсегда . Они поддерживаются в Internet Explorer 8!!
Используйте это свойство без вины ✨
Рабочая группа CSS согласна — они написали проект нового псевдоэлемента ::marker, который позволит вам применять стили непосредственно к маркерам списка.
К сожалению, это доступно только в Firefox и Safari.
Кроме того: есть еще одна хитрость, у счетчиков CSS есть свои рукава…
Вот действительно крутая вещь: у счетчика
есть двоюродный брат, счетчики
, и он работает для вложенных списков .
Обратите внимание, как нумерация рекурсивно складывается в этом великолепно звучащем учебном плане:
Вот необходимый для этого CSS:
Это очень похоже, за исключением того, что вы используете счетчиков
вместо счетчика
, и вы добавляете «промежуточный» разделитель (в данном случае точку).
ol
не получил много любви по сравнению с ul
. И все же, люди любят считать вещи! Что-то не сходится.
Возможно, с помощью этого ловкого трюка мы, наконец, увидим, что ol
получит то внимание, которого он заслуживает.
Последнее обновление
7 апреля 2020 г.
css — Как сделать так, чтобы OL переопределял стиль списка, который был назначен для соблюдения свойства type
спросил
Изменено 5 лет, 7 месяцев назад
Просмотрено 2к раз
Ситуация такова, что одна из таблиц стилей, поставляемых с темой, имеет этот ol { list-style: decimal; }
. Однако для этой конкретной страницы я хочу, чтобы она использовала стиль, определенный тип
свойство элемента ol
.
Например,
- сначала
- Второй
или
- сначала
- Второй
Я пробовал ol { list-style: initial}
и ol { list-style: inherit}
, но безуспешно.
Может ли кто-нибудь дать мне способ сбросить примененный стиль с помощью CSS?
- css
- css-селекторы
Когда свойство CSS определено в пользовательских стилях глобально, вы не можете изменить этот стиль из атрибута HTML из-за того, как рассчитывается специфичность CSS.
list-style-type: initial Тоже не работает, используется для сброса в браузер, а не в значение по умолчанию для темы.
Так что вам придется написать свой собственный, более конкретный CSS. В этом случае вы можете использовать селекторы атрибутов.
Тогда результат будет примерно таким:
HTML
- сначала
- Второй
- сначала
- Второй
CSS
/* Стиль, определенный темой */ пр { стиль списка: десятичный; } /* Список, определенный вашей страницей */ ол [тип = 'а'] { тип стиля списка: нижняя альфа; } ол [тип = 'я'] { тип стиля списка: нижний роман; }
Вы можете поиграть с этим кодом в codepen (codepen.io/Xopoc/pen/yPQBEM)
Атрибут type устарел в HTML4 и повторно введен в HTML5 [1]. Его действительно не следует использовать, кроме как в юридических документах. В идеале вы должны переопределить это в CSS. Однако вы можете переопределить атрибут type для упорядоченного списка, поместив разные типы для каждого li [2]:
- первый
- Второй
Что касается вашего примера, вот скрипт, демонстрирующий работу этой техники:
https://jsfiddle.