Главная » Полезные статьи » HTML-верстка » Гибкие многострочные списки определений при помощи двух строк CSS 2.1
Распечатать статью

Гибкие многострочные списки определений при помощи двух строк CSS 2.1

Если вы когда-либо использовали списки определений (<dl>) то вы в курсе проблемы. По дефолту, у <dt> и <dd> стоит display: block. Для того, чтобы превратить их в то, что нам надо в большинстве случаев (каждая пара термина и определения на одной строке) мы обычно используем несколько техник:

  • Используем разный <dl> для каждой пары: разметка доминирует над стилями, что плохо
  • Float: не гибко
  • display: run-in; для <dt>: плохая поддержка браузерами (не поддерживается в Firefox)
  • Добавление <br> после каждого <dd> и установка термину и определению display: inline;: невалидная разметка. Нужно ли продолжать?

Ах, если бы добавление <br> было валидным… Или, даже так: что если бы мы могли вставлять <br> при помощи CSS? На самом деле мы можем!

 

Наверняка вы в курсе, что символы CR и LF которые представляют собой разрыв строки — это обычные unicode-символы, которые могут быть вставлены где угодно как и все остальные unicode-символы. Им соответствуют коды 000D и 000A соответсвенно. Это значит, что они тоже могут быть вставлены в генерируемый контент если их должным образом экранировать. Далее, мы можем использовать соответствующее значение white-space, чтобы заставить браузеры обращать внимание только на вставленные разрывы строк. Выглядит это вот так:

dd:after {
    content: '\A';
    white-space: pre;
}

Заметьте, что ничего из вышеперечисленного не относится к CSS3. Все это старый добрый CSS 2.1

Конечно если у вас есть несколько <dd> для каждого <dt>, то вам придется немного изменить код. Но в этом случае вам, скорее всего, не понадобится такое форматирование.

Добавлено: как заметил Кристиан Хейльман (Christian Heilmann), в HTML3(!) в элементах <dl> использовался атрибут compact, который, собственно, делал тоже самое. Сейчас в HTML5 он считается устаревшим, как и остальной фукнкционал представления в HTML.

Вот так выглядит финальный результат:

Протестировано в IE8, Chrome, Firefox 3+, Opera 10, Safari 4+.

Источник:  css-live.ru
Вы можете оставить комментарий, или обратную ссылку на Ваш сайт.

Оставить комментарий

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

  • No Related Post