浮动+清除元素不会影响IE7中的浮动元素 - 是否有解决方法?

时间:2010-10-21 16:22:34

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

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

一样简单
dt {
    float:left;
    clear:left;
}
dd {
    float:left;
}

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

  • 由于这是一个定义列表,我无法将元素包装在div的相同行中。
  • 我不想使用不可见的非浮动清除元素 - 它必须是dtdd,并且使用定义listr而不是表或span - br汤将具有语义标记,这将被纯粹的表达性dt / dd元素搞砸。
  • 据我所见,当每行的元素数量不固定时,基于触发hasLayout(因此触发内联块行为)的方法(例如this)不起作用。 (另外,我宁愿不打扰剥离空白。)
  • 我无法this solution使用dl代替ul;即使设置display:list-item也无济于事。

还有其他方法可以强制IE7模仿标准的浮动行为吗?

1 个答案:

答案 0 :(得分:0)

尝试使用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提出这个问题。