I am trying to create a definition list (with the help of this guide) with its dt
and dd
elements having different content. Ofcourse i could hardcode a width for these elements, but i'd like to have the list takes the longest dt
element and make its siblings to have its length. Also, when the content of the dd
element is longer than the available space the new line must not begin below the dt
element but rather where the dd
element begins like on the second screenshot in this question.
I thought i could solve this with the display: flex
attribute but stuck with a non-working solution. Is it not possible or am a on the wrong way?
Here is what i've got so far (fiddle):
HTML:
<dl>
<dt>dt: Lorem Ipsum</dt>
<dd>dd: Lorem imperdiet</dd>
<dt>dt: Lorem id libero in Ipsum and so on and so on</dt>
<dd>dd: Lorem id libero in ipsum dolor</dd>
<dt>dt: Lorem Ipsum</dt>
<dd>dd: I should be sitting to the right of the previous dt and not wrapping round below it.</dd>
<dt>dt: Lorem id libero in Ipsum</dt>
<dd>dd: Lorem in ipsum dolor</dd>
</dl>
CSS:
dl {
display: flex;
flex-flow: column nowrap;
}
dt {
background: gold;
display: flex;
flex-flow: row wrap;
}
dd {
background: yellowgreen;
display: flex;
flex-flow: row wrap;
width: auto;
margin: 0;
padding: 0;
}
I don't think that it is possible to archive what you are trying. Flexbox won't help at this case. You also cannot use display table and so on, because the dl
syntax unfortunately lacks wrapping of dt+dd
groups. You would have to use JS to calc widths of the dt
elements, but it wouldn't be also so easy because of multiline variants.
But how about this a little bit modified "traditional" approach: make them min-width but allow the dt to overflow to the dd.
dl:after {
content: '';
display: block;
clear: both;
}
dt {
float: left;
clear: left;
padding-top: 1em;
margin-right: 1em;
}
dd {
padding-top: 1em;
margin-left: 15em;
}
http://codepen.io/ThiemelJiri/pen/KrZrxG
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With