css - Floated+cleared 元素不影响 IE7 中的后续 float 元素 - 有解决方法吗?

标签 css internet-explorer-7 css-float internet-explorer-6

我正在尝试设置定义列表的样式,以便 dt 标记开始新行,并且可以在同一行上跟任意数量的 dd 元素。在现代浏览器中,这很简单

dt {
    float:left;
    clear:left;
}
dd {
    float:left;
}

但是在IE7中,如果清空元素有 float ,则后续的 float 不受影响。 ( example ) 这个错误有什么解决方法吗?我一直在四处寻找,但通常建议的解决方案似乎都不适用:

  • 因为这是一个定义列表,所以我不能将元素包装在 div 中的相同行上。
  • 我不想使用不可见的非 float 清除元素 - 它必须是 dtdd,并且使用定义的全部意义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/

相关文章:

css - 使用 Bootstrap 的带有图像背景的选项卡菜单

javascript - 我怎样才能将这支笔的代码整合到我的网站上?

html - 使用 CSS 和 html 使一个 Div 显示在整个浏览器中

javascript - jquery:将 style.css 的链接替换为 game.css?

css - 这是哪个 CSS 错误? (页边距底部,ie6 + ie7)

html - float div 以填充剩余空间

css - 创建div布局

css - IE7 和 IE8 不支持默认跨度行为

internet-explorer - CSS 背景大小在 IE7/8 中不起作用

CSS 挑战 : INPUT going outside of DIV