`

解决IE不支持display:inline-block

阅读更多

【前言】

   关于IE不支持display:inline-block的问题,这是浏览器兼容的问题。随着所做项目的积累和学习深入后,都会开始接触兼容的问题。

   现在大多项目,都不太要求兼容。一般都只要兼容到IE8即可

 

【案例】

   对于这个问题,我先举个例子

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<title>demo测试</title>
	<style type="text/css">
		*{margin: 0;padding: 0}
		.parent{
			width: 400px;
			height: 200px;
			border: 1px solid red;
			margin: auto;
		}
		.parent div{
			background-color: red;
			display: inline-block;
			width: 100px;
			height: 100px;
		}
	</style>
</head>
<body>
<div class="parent">
	<div></div>
	<div></div>
	<div></div>
</div>
</body>
</html>

 测试后会发现,在IE浏览器下解析异常。那么我们来分析一下原因

 

【详解】

(1)到底什么是inline-block?

       设置了inline-block的元素创建了一个行级的块容器,该元素内部即内容被格式化为一个块级元素,同时元素本身被格式化为一个行内元素。直白点就是inline-block的元素既有block元素可以设置高度宽度的特性,同时又具有inline元素默认不换行的特性。

      通俗的分开对inline元素和block元素来说就是:inline元素设置了该属性以后,任保持默认的不换行的特性,但其内部表现得就是一个block元素,可以设置高度宽度等。而block元素设置了该属性以后,表现得就是一个行内元素,持有不换行的特性,但实质上任由block的特性,可以设置高度宽度。

 

(2)IE的inline-block

      很多人都说ie6/7不支持inline-block特性,但是在msdn微软开放社区里找到证据,ie从5.5开始就已经对inline-block支持了,只是表象形式上有所偏差。

 

【方案】

      从差异上可以看出ie和其他浏览器的表现形式上不一样,即使是inline-block触发了haslayout还是不具有inline-block不换行的特性,不过想要block支持inline-block元素的特性,我们可以在其基础上添加:

display: inline;  
zoom:1; 

    设置display:inline,使block元素变为inline元素,然后设置zoom:1,使其具有布局,就可以设置高度宽度等特性。

 

【总结】

    总结来说就是:ie中的display:inline和zoom:1相当于display:inline-block

 

 

 

 

 

 

 

 

 

 

.

分享到:
评论

相关推荐

    display:inline-block的实际应用

    `display:inline-block` 是 `display` 的一个值,它结合了块级元素(block-level element)和内联元素(inline element)的一些特性,为网页布局提供了更灵活的选择。在本篇文章中,我们将深入探讨 `display:inline-...

    CSS属性display:inline-block用法深入理解

    要让IE支持`inline-block`效果,有以下两种常见的解决方案: 1. 使用双`display`属性技巧:先设置`display:inline-block`触发layout,然后立即设置`display:inline`。代码示例如下: ```css div { display: ...

    display:inline-block的原理分析

    IE 6 和 7 不直接支持 `display:inline-block`,但在某些情况下,对内联元素设置 `display:inline-block` 会触发 "layout",这是一种 IE 特有的行为,使元素获得类似 `display:inline-block` 的效果。然而,对于块级...

    让IE6/IE7支持display:inline-block属性的两种方法

    然而,IE6和IE7这两个较老的浏览器对`display:inline-block`的支持并不完善,这给开发者带来了不小的困扰。为了解决这个问题,本文将详细介绍两种方法,使得这些旧版IE浏览器也能正确地处理`display:inline-block`。...

    深入display:inline-block

    早期版本的Firefox(小于3.0)并不支持`display:inline-block`,而是使用私有属性`-moz-inline-box`来实现类似的效果。但由于`-moz-inline-box`存在一些副作用,如可能影响`text-align`的正常工作,因此通常不推荐...

    inline-block 前世今生1

    首先,我们需要澄清一个误区:IE6和IE7并非完全不支持display:inline-block。早在IE5.5,微软就已经引入了对这个属性的支持。但与现代浏览器相比,IE5.5至IE7的实现并不完整,存在一些特定的行为和限制。例如,当在...

    CSS教程:inline-block在各浏览器的显示

    例如,Firefox 2不支持`inline-block`,但支持Mozilla专有的`-moz-inline-stack`。通过同时设置`display: -moz-inline-stack`和`display: inline-block`,可以确保在Firefox 2和其他支持`inline-block`的浏览器中都...

    关于css display: inline block inline-block的区别分析

    但很遗憾,最流行的 IE 和 Firefox 却不支持这个属性(在 Firefox3 版本中将会支持 display:inline-block)。不过 Firefox 下却有私有属性 -moz-inline-box 和inline-block 形似,为什么是“形似”而不是“神似”呢...

    如何解决IE6/IE7不识别display:inline-block属性

    ie6,ie7的haslayout属性是个让人头疼的问题,想到一个属性display:inline-block;对!inline- block就是干这个事的,让一个元素既不换行又具有block元素的特性

    IE6的inline-block

    IE6不支持这个属性,但IE8开始支持这个属性。 让IE6内联元素具备inline-block特性 由于inline-block会触发IE的layout,所以IE6中只要设置{display:inline-block;}即可。 让IE6区块元素具备inline-block属性,有两...

Global site tag (gtag.js) - Google Analytics