Ответ 1
Попробуйте следующее:
dt, dd { float: left }
dt { clear:both }
Добавьте margin-bottom в dt dd
, если вам нужно больше пространства между ними.
Я пытаюсь создать список определений пар term-definition, каждая из которых существует на отдельной отдельной строке. Я пробовал сделать dt
и dd
display:inline
, но затем я теряю разрывы строк между парами. Как я могу убедиться, что у меня есть строка для каждой пары (а не для каждого отдельного термина/определения)?
Пример:
<dl>
<dt>Term 1</dt><dd>Def 1</dd>
<dt>Term 2</dt><dd>Def 2</dd>
</dl>
получая:
Term 1 Def 1
Term 2 Def 2
CSS для их создания:
dt,dd{display:inline;}
получая:
Term 1 Def 1 Term 2 Def 2
... это не то, что я хочу (разрывы между парами отсутствуют).
Попробуйте следующее:
dt, dd { float: left }
dt { clear:both }
Добавьте margin-bottom в dt dd
, если вам нужно больше пространства между ними.
Другое решение:
dt:before {
content: "";
display: block;
}
dt, dd {
display: inline;
}
Я пробовал эти ответы, наконец, в итоге я получил этот.
Что я упростил:
dl {
padding: 0.5em;
}
dt {
float: left;
clear: left;
width: 100px;
text-align: right;
font-weight: bold;
}
dt:after {
content: ":";
}
dd {
margin: 0 0 0 110px;
}
Другим решением является использование встроенных блоков и процентной ширины. Пока объединенная ширина dd + dt больше 50%.
dt, dd {
display: inline-block;
}
dt {
width: 50%;
}
dd {
min-width: 5%;
}
Я нашел, что это дало мне более последовательное позиционирование элементов dd.
Если у вас есть "зебра" backgronund или граница, разделяющая каждую пару DT-DD, то это будет работать красиво:
dt,
dd {
padding: 8px 6px;
display: block;
}
dt {
font-weight: 600;
float: left;
min-width: 50%;
margin: 0 8px 0 0;
}
dd:nth-of-type(odd) {
background: #eee;
}
код >
Это приведет к обертыванию обоих элементов в строке с серым фоном. Пока DT имеет меньшую вертикальную высоту, чем DD, что обычно происходит.
Еще одно простое решение
dt {
display: block;
float: left;
min-width: 100px;
}
Ответ Андрея Федосеева не работает в старых андроидах (биржевой браузер 4.3).
Это работает для этого браузера и всех других, которые я проверил:
dt::before {
content: "\A";
white-space: pre-wrap;
display: block;
height: .5em;
}
dt, dd {
display: inline;
margin: 0;
}
<dl>
<dt>AM</dt>
<dd>Description for am that should span more than one line at narrow screen widths.</dd>
<dt>PM</dt>
<dd>this means afternoon.</dd>
</dl>