解决ie7下display: inline-block失效的BUG

 

方法一

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

后来又看到一方法

#id{display:inline-block;}

#id{display:inline;}

注意:一定要分开写,如果写在同一个选择器里是不起作用的,这是IE的一个bug。

在IE下,display:inline-block只是触发了元素的layout。比如将display:inline-block给到div上,只能保证这个div拥有块元素的特征(可以设置宽度和高度),但是还是行布局(产生换行)。接下来要设置display:inline.更改这个div的布局为内联布局(不产生换行)。

附后一方法

IE6下块元素如何实现display:inline-block的效果?

有两种方法:
1、 先使用display:inline-block属性触发块元素,然后再定义display:inline,让块元素呈递为内联对象(两个display 要先后放在两个CSS声明中才有效果,这是IE的一个经典bug,如果先定义了display:inline-block,然后再将display设回 inline或block,layout不会消失)。代码如下(...为省略的其他属性内容):

div {display:inline-block;...}
div {display:inline;}

2、直接让块元素设置为内联对象呈递(设置属性display:inline),然后触发块元素的layout(如:zoom:1 或float属性等)。代码如下:

div { display:inline-block; _zoom:1;_display:inline;} /*推荐*/
div { display:inline-block; _zoom:1;*display:inline;} /*推荐:IE67*/

例子

<!DOCTYPE html>
<html lang="gb2312">
<head>
<meta charset="gb2312" />
<title>example</title>
<style>
    #example li {display:inline-block;}/* 在这里设置的inline-block属性在ie6 7下无效,仅仅是触发了ie的layout*/
    #example li {*display:inline;}/* 解决办法:针对ie6 7添加inline属性,使之呈现为内联元素 */
</style>
</head>
 
<body>
    <div id="example">
            <ul>
                <li>1</li>
                <li>1</li>
            </ul>
      </div>
</body>
</html>

下面给出具体例子:
css代码

?

.head{
width:106px;
padding:20px;
margin:0 auto;
border:1px solid #000;
}
 
.logo{
background:url(images/logo.jpg) no-repeat;
width:106px;
height:42px;
display:inline-block;
text-indent:-999em;
overflow:hidden;
direction:ltr;
}
html结构

<div class="head"><a class="logo" href="#">logo</a></div>
firefox下截图                               ie6下截图,图片消失不见了

          

修改过的css代码

 代码如下 复制代码

.logo{
background:url(images/logo.jpg) no-repeat;
width:106px;
height:42px;
display:block;/*float:left;*/
text-indent:-999em;
overflow:hidden;
direction:ltr;
}

firefox下截图                               ie6下截图

          

时间: 2024-11-10 07:54:44

解决ie7下display: inline-block失效的BUG的相关文章

测试-本地与服务器打开同一个html页面,服务器上的页面在ie7下css3样式 旋转失效

问题描述 本地与服务器打开同一个html页面,服务器上的页面在ie7下css3样式 旋转失效 本地样式测试没有问题.提交服务器**旋转样式**失效.失效只在ie7下失效. 而且如果ie的版本是11的调成7才会有这个问题.如果是低于11的调成7的就没有问题. <div id="shade" style="position: absolute; z-index: 99;top: 275px;left: 888px;width: 145px;height: 145px; tr

liunx之:解决liunx下dns配置重启失效的问题

有时候能ping同ip地址,却ping不通域名,这就是dns没有配置的缘故. 但是DNS配置文件 /etc/resolv.conf 每次重启就会失效. 打开这个配置文件,发现有注释提示: Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)# DO NOT EDIT THIS FILE BY HAND - YOUR CHANGES WILL BE OVERWRITTEN 原来系统已经提示我们不要手

jquery在ie7下选择器的问题导致append失效的解决方法_jquery

1,有如下这样一段html 复制代码 代码如下: <div class="right"id="pending">  <table class="one"width="100%"border="0"cellspacing="0"cellpadding="0"> <tbody> </tbody> </table>

ie7下利用ajax跨域盗取cookie的解决办法_AJAX相关

研究了一下午,第一个难题是ajax跨域提交数据,可以用web代理来解决,http://192.168.8.108上的a.htm代码: <script>  function getXmlHttpRequest(){         if(window.ActiveXObject){              var ieArr=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];                          

各位大哥,麻烦看看下面这段代码,在ie6下一点问题都没有,但是在Ie7下却显示不出效果,经查是Response.WriteFile(filePath)的问题,估计是iE7安全性太高,可是设为最低还不行,大家帮解决下啊.

问题描述 if(!IsPostBack){NameValueCollectionnameValue=Request.QueryString;if(nameValue==null)return;stringfilePath=nameValue.Get("File");if(filePath==null||filePath=="")return;filePath=Request.PhysicalApplicationPath+"rpt\"+fileP

Jquery在IE7下无法使用 $.ajax解决方法_jquery

通过查看源码发现 复制代码 代码如下: // Create the request object; Microsoft failed to properly // implement the XMLHttpRequest in IE7, so we use the ActiveXObject when it is available // This function can be overriden by calling jQuery.ajaxSetup xhr:function(){ retu

ie7下利用ajax跨域盗取cookie的解决办法

研究了一下午,第一个难题是ajax跨域提交数据,可以用web代理来解决,http://192.168.8.108上的a.htm代码: <script>  function getXmlHttpRequest(){         if(window.ActiveXObject){              var ieArr=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];                          

在ie7下css居中样式text-align:center;偏左问题解决方法

css样式text-align:center;在ie7下偏左问题,想必有很多朋友的遇到过吧,下面有个不错的方法,大家可以参考下,希望对大家有所帮助     复制代码 代码如下: body { text-align:center; } 用ie7打开是居左的. 万能 float 闭合(非常重要!) 关于 clear float 的原理可参见 [How To Clear Floats Without Structural Markup] 将以下代码加入Global CSS 中,给需要闭合的div加上

效果-a标签在ie7下的兼容。。。

问题描述 a标签在ie7下的兼容... 将a标签当做盒子来使用,但是在ie7下a标签不显示手型,使用cursor:pointer也没有任何效果 解决方案 使用cursor:pointer 正常可以的 解决方案二: 如果是display:block的话,给a标签的style加一个background 试试.