我正在尝试设置定义列表的样式,以便 dt
标记开始新行,并且可以在同一行上跟任意数量的 dd
元素。在现代浏览器中,这很简单
dt {
float:left;
clear:left;
}
dd {
float:left;
}
但是在IE7中,如果清空元素有 float ,则后续的 float 不受影响。 ( example ) 这个错误有什么解决方法吗?我一直在四处寻找,但通常建议的解决方案似乎都不适用:
- 因为这是一个定义列表,所以我不能将元素包装在
div
中的相同行上。 - 我不想使用不可见的非 float 清除元素 - 它必须是
dt
或dd
,并且使用定义的全部意义listr 而不是表或span
-br
soup 将具有语义标记,这将被纯粹的表示性dt
/搞砸dd
元素。 - 据我所知,当每行的元素数量不固定时,基于触发 hasLayout(从而触发内联 block 行为)的方法(例如 this)不起作用。 (另外,我不想为剥离空格而烦恼。)
- 我无法让 this solution 使用
dl
而不是ul
;即使设置display:list-item
也无济于事。
是否有任何其他方法可以强制 IE7 模仿标准 float 行为?
最佳答案
尝试使用 inline-block而不是花车。
dl {
line-height:1.2em;
padding-left:1em;
}
dt {
display:block;
margin:0 0 -1.2em -1em;
}
dd {
display:inline-block;
display:inline !ie;
margin-left:1em;
}
感谢想出这个的 deathshadow。
关于css - Floated+cleared 元素不影响 IE7 中的后续 float 元素 - 有解决方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3989653/