Используя CSS, как я могу стилизовать следующее:
<dl>
<dt>Mercury</dt>
<dd>Mercury (0.4 AU from the Sun) is the closest planet to the Sun and the smallest planet.</dd>
<dt>Venus</dt>
<dd>Venus (0.7 AU) is close in size to Earth, (0.815 Earth masses) and like Earth, has a thick silicate mantle around an iron core.</dd>
<dt>Earth</dt>
<dd>Earth (1 AU) is the largest and densest of the inner planets, the only one known to have current geological activity.</dd>
</dl>
Таким образом, содержание dt
шоу в одном столбце и содержание dd
в другом столбце, с каждым dt
и соответствующим dd
на одной строке? Т.е. производить что-то похожее на:
Ответы:
источник
clear: left
к стилю dt, чтобы они оставались встроенными, даже если им нужно обернуть.* { ... }
утверждение заставляет все терять отступы и отступы, а удаление его искажает DL. Использование класса тоже не поможет. Кажется, что если я хочу что-нибудь, кроме DL, мне придется везде обходиться без наценок и прокладок ... Или?У меня есть решение без использования поплавков!
проверить это на codepen
А именно
Обновление - 3 - го января 2017: решение , основанное я добавил прогибается ящик для этой проблемы. Проверьте это в связанном codepen и уточните его в соответствии с потребностями. Спасибо!
источник
CSS Grid layout
Чтобы изменить размеры столбцов, взгляните на
grid-template-columns
свойство.источник
Если вы используете Bootstrap 3 (или ранее) ...
источник
dl-horizontal
был фактически исключен из Bootstrap 4. В BS4, вам нужно использовать классы сетки вместо этого.Предполагая, что вы знаете ширину поля:
источник
Поскольку я еще не видел пример, который подходит для моего варианта использования, вот наиболее полное решение, которое я смог реализовать.
Как ни странно, это не работает с
display: inline-block
. Я полагаю, что если вам нужно установить размер любого изdt
элементов илиdd
элементов, вы можете установитьdl
отображение какdisplay: flexbox; display: -webkit-flex; display: flex;
иflex
сокращениеdd
элементов иdt
элементов как что-то вродеflex: 1 1 50%
иdisplay
какdisplay: inline-block
. Но я этого не проверял, поэтому подходите осторожно.источник
Посмотреть демо jsFiddle
Мне нужен был список, точно такой же, как описанный для проекта, который показал сотрудников компании, с их фотографией слева и информацией справа. Мне удалось выполнить очистку с помощью psuedo-элементов после каждого
DD
:Кроме того, я хотел, чтобы текст отображался только справа от изображения, без переноса под плавающее изображение (эффект псевдостолбца). Это может быть достигнуто путем добавления
DIV
элемента с CSSoverflow: hidden;
вокруг содержимогоDD
тега. Вы можете опустить это дополнительноеDIV
, но содержимоеDD
тега будет перенесено в плавающееDT
.Поработав с ним некоторое время, я смог поддерживать несколько
DT
элементовDD
, но не несколькоDD
элементовDT
. Я попробовал , добавив еще один необязательный класс , чтобы очистить только после того , как последнийDD
, но последующиеDD
элементы завернуты подDT
элементами (не мой желаемого эффекта ... Я хотелDT
иDD
элементы для формирования столбцов, а также дополнительныеDD
элементы были слишком широки).По всем правилам, это должно работать только в IE8 +, но из-за причуд в IE7 оно работает и там.
источник
Вот еще один вариант, который работает, отображая dt и dd inline, а затем добавляя разрыв строки после dd.
Это похоже на решение Navaneeth, описанное выше, но при таком подходе содержимое не будет выстраиваться в линию, как в таблице, но dd будет следовать за dt сразу в каждой строке независимо от длины.
источник
Мне нужно сделать это, чтобы
<dt>
содержимое было отцентрировано вертикально относительно<dd>
содержимого. Я использовалdisplay: inline-block
вместе сvertical-align: middle
Смотрите полный пример на Codepen здесь
источник
В зависимости от стиля элементов dt и dd вы можете столкнуться с проблемой: заставить их иметь одинаковую высоту. Например, если вы хотите видеть какую-либо видимую границу внизу этих элементов, вы, скорее всего, захотите отобразить границу на той же высоте, как в таблице.
Одним из решений этого является мошенничество и превращение каждой строки в элемент «dl». (это эквивалентно использованию tr в таблице) Мы теряем первоначальный интерес к спискам определений, но, напротив, это простой способ получить псевдотаблицы, которые быстро и красиво оформлены.
CSS:
HTML:
источник
quatreVingtCinqPts
? :)Я нашел решение, которое кажется мне идеальным, но для этого нужны дополнительные
<div>
теги. Получается, что<table>
для выравнивания не нужно использовать тег, как в таблице, достаточно использоватьdisplay:table-row;
иdisplay:table-cell;
стили:источник
dl
s могут иметь толькоdt
s иdd
s как дети.dt
В качестве дочерних элементов могут быть только встроенные элементы.dd
s, по некоторым причинам, может иметь элементы уровня блока как дочерние элементы.DI
элемент, как и я . Но с любым таким элементом вам вообще не нужны такие эзотерические вещи, как таблицы CSS ... Во всяком случае, этого элемента не существует, и поэтому вы не должны его использовать.run-in
CSSdisplay
- это именно то, что я хочу (в моем случае я хочу простые списки метаданных значения имени).Я недавно нужно смешивать встроенные и не рядный дт / дд пар, указав класс
dl-inline
на<dt>
элементах , которые должны быть затем встроенными<dd>
элементами.источник
Это работает на IE7 +, соответствует стандартам и допускает различную высоту.
Смотрите JSFiddle .
источник
это работает, чтобы отобразить их в виде таблицы с рамкой, она должна соответствовать 3em ширине первого столбца. Перенос слов просто разбивает любые слова шире столбца
Сравнение
<table>
с<dl>
:источник
Обычно при оформлении списков определений в виде таблиц я начинаю со следующего:
источник
Большая часть того, что люди здесь предложили, работает, однако вы должны помещать только общий код в таблицу стилей и помещать конкретный код в HTML-код, как показано ниже. В противном случае вы получите раздутую таблицу стилей.
Вот как я это делаю:
Код вашей таблицы стилей:
Ваш HTML-код:
Выглядит так
источник