2010-01-03 70 views
1

我在显示中遇到问题:内联和显示:内联块.......我应该如何在CSS中定义...即显示:内联for即与显示:inline-block的为FF和铬....显示问题:内联和显示:内嵌块

+1

另见http://blog.mozilla.com/webdev/2009/02/20/cross-browser- inline-block/on如何在IE 6和7中使用'display:inline-block'工作。 –

回答

3

您可以使用Conditional Comments加载只有Internet Explorer加载的覆盖CSS文件。例如:

<!-- main stylesheet for all browsers (uses display: inline-block) --> 
<link href="main.css" media="screen" rel="stylesheet" type="text/css" /> 

<!-- overrides for IE 7 and earlier (uses display: inline where necessary) --> 
<!--[if lte IE 7]> 
    <link href="main-ie.css" media="screen" rel="stylesheet" type="text/css" /> 
<![endif]--> 

<!-- overrides for IE 6 and earlier (uses display: inline where necessary) --> 
<!--[if lte IE 6]> 
    <link href="main-ie6.css" media="screen" rel="stylesheet" type="text/css" /> 
<![endif]--> 
+0

如果我在同一个css文件中同时添加display:inline和display:inline-block,将会发生什么... –

+1

if您将值应用于元素的显示属性,后者将覆盖前者。如果你不想使用几个CSS文件,请尝试使用其中一个CSS黑客 –

0

IE的问题在于它没有正确支持“内嵌块”。因此,为了弥补这一点,你必须浮动元素。因此,必须清除浮动元素的容器,使用“clear:both”,除非所有内容都是固定大小,例如菜单链接。

我更喜欢搞清楚每个浏览器不支持的内容,而不是为每个浏览器写单独的样式表。

1

IE7及以下版本不支持内联块。但是有一个简单的解决方法。作为一个内联块 - 简单地说 - 一个行为像一个块但是内联对齐的元素,你只需要告诉IE它是一个带有布局(IE idiossincracy)的内联元素。所以:

.el { display:inline-block; *display:inline; *zoom:1; } 

你有它!真的很简单。你也可以使用有条件的评论,并避免明星黑客入侵。我个人使用保罗爱尔兰的HTML声明(http://paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither/),然后我专门针对IE7及以下使用:

.el { display:inline-block; } 
.lt-ie8 .el { display:inline; zoom:1; }