Css IE8显示内联块不工作

Css IE8显示内联块不工作,css,internet-explorer-8,Css,Internet Explorer 8,假设我有以下代码 <style type="text/css" media="all"> span, ul, ul li { display: inline-block; vertical-align: top; margin: 0; padding: 0; list-style: none; } </style> <span>i would want</span> <ul> &

假设我有以下代码

<style type="text/css" media="all">
  span, ul, ul li {
    display: inline-block;
    vertical-align: top;
    margin: 0;
    padding: 0;
    list-style: none;
  }   
</style>
<span>i would want</span>
<ul>
  <li>this</li>
  <li>on</li>
  <li>one line.</li>
</ul>

span,ul,ul-li{
显示:内联块;
垂直对齐:顶部;
保证金:0;
填充:0;
列表样式:无;
}   
我想要
  • 这个
  • 一行

我想让它在IE8中内联显示。在我读过的所有文章中,IE8都支持内联块。然而,经过一个上午的努力,我无法让上面的线。我知道我可以浮动它,但对于页面上的其他元素(这里没有显示),我需要使用一个“clearfix”,这是一个更高的标记。我只需要针对IE8,并且想知道为什么内联块在明显受支持的情况下对我不起作用。上面的代码在Google Chrome中查看时符合我的要求。

我猜您还没有声明doctype。尝试将其放置在html标记前的第一行:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">


您粘贴的代码在具有该doctype的IE8中工作。

并非所有IE8版本都能同样工作。我发现给定的代码,即使带有DOCTYPE,在早期版本的IE 8.0.6001.18702中也不起作用

然而,较低IE版本的解决方案在特定的IE 8上也发挥了作用:

<!--[if lt IE 8]>
<style type="text/css">
    li { display: inline; }
</style>   
<![endif]-->

您可以正确设置边距:1px


对我来说效果很好。

对于IE8,您可以添加一个特定的声明:

显示:内联表


这非常有效。

IE8会将其视为块级元素,除非您使用float

.divInlineBlock
{
   display: inline-block;
   float: left;
}   

请注意,如果您正在查看intranet站点,IE8的行为将类似于IE7,这可能在您开发时发生!请参见以下问题:


根据我的经验,使用声明内联块的通用方法(IE6+)总是一个更好的主意。即使每次我试图说它只受较新浏览器支持时,你都瞄准较新的浏览器,但一些客户仍然会弄乱他们的文档类型,然后销售人员会说,这需要修复,因为客户仍然可以看到它,但无法得到它,这取决于他们的IE设置,而不是我们的错。更详细地说,当你使用内联块作为结构材料时,如果用户出于任何原因在旧IE上查看站点,它可以防止站点完全崩溃

display: inline-block;
*zoom: 1;
*display: inline;

我只补充了一句,效果非常好!重要的是要覆盖,似乎内联实际上是IE中的内联块。谢谢!随机发现这个,为我工作,内联确实是内联块。谢谢你,这对我有效,我也有同样的问题,Windows7IE8和内联块不完全有效,对我来说也是一样!我有完全相同的IE版本,DOCTYPE本身不起作用。只有当IE8在兼容视图中时才会发生这种情况,这是IE7模拟。这不是IE8版本不同的问题,而是渲染模式不正确的问题。这并不奇怪,即使使用DOCTYPE,也会发生这种情况,因为IE7和更早版本一直存在这个问题,即使使用DOCTYPE。此外,8.0.6001.18702是RTM,不是早期版本,甚至这也不相关,因为
display:inline block
支持从第一个测试版开始就已经完成。正确的解决方法是
,这是迄今为止所有答案中最好的选择。好提示!删除了断开的链接()他们似乎改变了他们的网站,再也找不到帖子了。难道你不喜欢IE:-/我爱你,这让我省去了很多IE的痛苦!哇!该死,我忘了everytime@Iazel你的意思是IE’s-hit谢谢你担心我会在网上搜索答案。这是惯用的说法!就像
if(var i<0;i y x.length;i++)
@HerrSerker不知道你这么说是什么意思,但这就是你如何以IE6+的方式获得内联块的(不管你喜欢与否)。是的,我的意思正是如此。您应该像学习JS循环构造一样学习它。“惯用”,但是您编写了
if
而不是
for
。@HerrSerkerI使用
display:inline;显示:内联块*缩放:1--IE将忽略第二条显示规则,缩放仅适用于旧版IE最佳答案如下: