Оформите список определений как простой набор значений ключа.
-
21-09-2019 - |
Вопрос
Я хотел бы использовать простой список определений:
<dl>
<dt>name:</dt>
<dd>Tomas</dd>
<dt>address:</dt>
<dd>this is a very long wrapping address</dd>
<dt>age:<dt>
<dd>29</dd>
<dl>
чтобы отобразить что-то вроде:
name: Tomas
address: this is a very long
wrapping address
age: 29
Список определений кажется здесь семантически лучшим вариантом.
Использование нового стиля отображения обкатки поможет:
<style> dt { display: run-in; } </style>
Но это пока не получило широкой поддержки.Как я могу стилизовать свой список определений для лучшей поддержки кросс-браузера (ie6 не требуется), не меняя HTML (в настоящее время я использую встроенное отображение и добавляю уродливые br)?
Изменить, чтобы уточнить:
dt { clear: left; }
dd { float: left; }
не будет работать, потому что он будет отображаться как:
name: Tomas
address: this is a very long
wrapping address
age: 29
В дизайне указано, что эти многострочные поля должны переноситься в начало строки, чтобы сохранить пространство.
Решение
Я думаю, это сработает:
dt {
float: left;
clear: left;
margin: 0;
padding: 0 .5em 0 0;
}
dd {
margin: 0;
padding: 0;
}
Еще один полезный вариант — это :after
псевдокласс.Вы можете пропустить двоеточие в каждом из dt
элементы и имеют:
dt:after {
content: ":";
}
Это делает его более гибким, и вы можете изменить этого персонажа в списке и на веб-сайте в целом или избавиться от него, если захотите.
Чтобы решить упомянутую вами проблему упаковки, вам нужно установить ширину как для dt
и dd
элементы.Или используйте таблицу с th
для имени/адреса и т. д. и td
для «данных».IMO, таблица здесь является семантически приемлемым решением - она является табличные данные.
Другие советы
Вы можете просто разместить dd слева от предыдущего элемента, вот так.
dt { clear: left; }
dd { float: left; }
Вы также можете добавить атрибут ширины для дополнительного выравнивания.
dt { clear: left; width: 20%; }
dd { float: left; }
Ну, вы могли бы просто позволить dt плавать:левый
dt { float: left; }
или же пусть dt отображает встроенное:
dt { display: inline; }
Вам нужно удалить левое поле по умолчанию из файла dd.
dt {float:left;clear:left;margin-right:5px;}
dd {margin:0;}
Я думаю так (ракомментируйте первую строку, чтобы проверить небольшую ширину):
dl, dd, dt { margin: 0; }
/*dl { width: 80px; }*/
dl dt, dl dd { display: inline; }
dl dd:after { content: ' '; padding-left: 100%; }