Tom*_*mas 5 html css semantic-markup
我想使用一个简单的定义列表:
<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>
Run Code Online (Sandbox Code Playgroud)
渲染类似于:
name: Tomas
address: this is a very long
wrapping address
age: 29
Run Code Online (Sandbox Code Playgroud)
定义列表在语义上似乎是最好的选择.
使用新的run-in显示样式将起到作用:
<style> dt { display: run-in; } </style>
Run Code Online (Sandbox Code Playgroud)
但目前尚未得到广泛支持.如何设置我的定义列表以获得更好的跨浏览器支持(即没有必要),而不更改html(目前我使用显示内联并添加丑陋的br)?
编辑澄清:
dt { clear: left; }
dd { float: left; }
Run Code Online (Sandbox Code Playgroud)
将无法工作,因为它将呈现为:
name: Tomas
address: this is a very long
wrapping address
age: 29
Run Code Online (Sandbox Code Playgroud)
设计指定这些多行字段应包裹到行的起始处以保留空间.
我认为这会奏效:
dt {
float: left;
clear: left;
margin: 0;
padding: 0 .5em 0 0;
}
dd {
margin: 0;
padding: 0;
}
Run Code Online (Sandbox Code Playgroud)
另一个有用的选项是:after伪类.您可以跳过每个dt元素上的冒号,并具有:
dt:after {
content: ":";
}
Run Code Online (Sandbox Code Playgroud)
这使它更灵活,您可以在整个列表和网站上更改该字符,或者如果您愿意,可以删除它.
要解决您提到的包装问题,您需要在dt和dd元素上设置宽度.或者,使用表格,th用于名称/地址等以及td"数据".IMO表是一种语义上可接受的解决方案 - 它是表格数据.
| 归档时间: |
|
| 查看次数: |
3745 次 |
| 最近记录: |