dr.Brain

doctor Brain

мир глазами веб-разработчика

CSS: counter

учимся использовать счетчики в CSS

dr.Brain

время чтения 2 мин.

Photo by Anne Nygård on Unsplash

Что такое CSS-счетчики? Их можно рассматривать, как переменные CSS, значения которых увеличиваются по определенным правилам.

Чтобы инициализировать счетчик нужно пройти процедуру его сброса counter-reset с указанием произвольного названия счетчика (пользовательского идентификатора) в качестве параметра. Сброс счетчика может быть CSS-свойством любого HTML-элемента.

Давайте создадим счетчик paragraph и посчитаем все элементы p страницы:

body {
  counter-reset: paragraph;
}

p::before {
  counter-increment: paragraph;
  content: 'Параграф ' counter(paragraph) ': ';
}

Если теперь создать HTNL-структуру:

<p>Мой текст</p>
<p>Мой текст</p>
<p>Мой текст</p>
<p>Мой текст</p>
<p>Мой текст</p>

Получим результат:

Параграф 1: Мой текст
Параграф 2: Мой текст
Параграф 3: Мой текст
Параграф 4: Мой текст
Параграф 5: Мой текст

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

Например, можно создать основной счетчик первого уровня для заголовков h2. А для каждого абзаца p, находящегося внутри раздела, начиниающегося с заголовка h2, определить внутренний счетчик второго уровня.

Представим такую HTML-структуру:

<h2>Первый заголовок</h2>
<p>Мой текст</p>
<p>Мой текст</p>
<p>Мой текст</p>
<h2>Второй заголовок</h2>
<p>Мой текст</p>
<p>Мой текст</p>

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

body {
  counter-reset: heading;
}
h2 {
  counter-reset: paragraph;
}
h2::before {
  counter-increment: heading;
  content: 'Раздел ' counter(heading) ': ';
}
p::before {
  counter-increment: paragraph;
  content: counter(heading) '.' counter(paragraph) ' ';
}

Результат:

Раздел 1: Первый заголовок
1.1 Мой текст
1.2 Мой текст
1.3 Мой текст
Раздел 2: Второй заголвок
2.1 Мой текст
2.2 Мой текст

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


Спасибо за внимание.

Новые публикации

Далее

Категории

О нас

Frontend & Backend. Статьи, обзоры, заметки, код, уроки.