使用场景分析: 常见的对块与块之间的横向排列处理 对同级所有元素使用display:inline-block; , 之后块与块直接会产生间隙问题 解决办法: 给父级设 font-size:0; 别高兴的太早,我们看看在ie7的时候,是显示如何 我们可以发现,问题有二 ① inline-block失效了 原因:inline-block 在ie7及ie6下不识别 解决方法:在后面添加 display: inline-block; zoom:1; /*IE 下触发 hasLayout*/ *display:inline; /*一旦IE 下触发了 hasLayout,设置 block 元素为 inline 会使 display:inline 效果与 display:inline-block 相似*/ ②颜色失效了 原因:我是利用 :nth-of-type() 选择器来给div加背景色,选择器在ie8 就已经不识别 拓展: :nth-of-type() 选择器 ——选择器匹配属于父元素的特定类型的第 N 个子元素的每个元素. n 可以是数字、关键词或公式。与:nth-child(n)不同的是后者与类型无关。(同样不支持IE8) :first-of-type 选择器匹配属于其父元素的特定类型的首个子元素的每个元素。 提示:等同于 :nth-of-type(1)。(同样不支持IE8) :last-of-type 选择器匹配属于其父元素的特定类型的最后一个子元素的每个元素。 提示:等同于 :nth-last-of-type(1)。(同样不支持IE8) :only-of-type 选择器匹配属于其父元素的特定类型的唯一子元素的每个元素。(同样不支持IE8) :nth-last-child(n) 选择器匹配属于其元素的第 N 个子元素的每个元素,不论元素的类型,从最后一个子元素开始计数。n 可以是数字、关键词或公式。(同样不支持IE8) 提示:请参阅 :nth-last-of-type() 选择器,该选择器选取父元素的第 N 个指定类型的子元素,从最后一个子元素开始计数。 :nth-last-of-type(n) 选择器匹配属于父元素的特定类型的第 N 个子元素的每个元素,从最后一个子元素开始计数。n 可以是数字、关键词或公式。(同样不支持IE8) 提示:请参阅 :nth-last-child() 选择器,该选择器选取父元素的第 N 个子元素,与类型无关,从最后一个子元素开始计数。 :last-child 选择器匹配属于其父元素的最后一个子元素的每个元素。(同样不支持IE8) 提示:p:last-child 等同于 p:nth-last-child(1)。 :first-child 选择器用于选取属于其父元素的首个子元素的指定选择器。对于 IE8 及更早版本的浏览器中的 :first-child,需要声明 。 由上我们选择解决方案为:first-child .father .son:first-child+div{/*选取第二个li*/ background: pink; } 由此两步,在ie7下显示结果如下,还是不尽人意,其实也很正常啦,哈哈哈 查看ie7调试工具,哦,box-sizing在ie8以下不兼容,盒子模型的标准也不一样 解决方案: 使用 https://github.com/Schepp/box-sizing-polyfill 使用方式:直接在box-sizing:后面加 box-sizing: border-box;*behavior: url(./boxsizing.htc); ie7结果如下: 解决了box-sizing的问题,又发现了一个盒子无法占满的问题? 稍微测试了下,33.33%比例 确实会出现问题,暂时不知道原因诶,有知道的老铁,麻烦告诉我。 上代码: <!doctype html><html lang="en"><head> <meta charset="UTF-8"> <title>Document</title> <style> * {margin: 0;padding: 0;} .father { width: 500px; margin: 0 auto; border: 1px solid #000; font-size: 0; background: red; } .father .son { width: 33.33%; height: 200px; background: yellow; display: inline-block; zoom:1; /*IE 下触发 hasLayout*/ *display:inline; /*一旦IE 下触发了 hasLayout,设置 block 元素为 inline 会使 display:inline 效果与 display:inline-block 相似*/ border: 1px solid #000; box-sizing: border-box;*behavior: url(./boxsizing.htc); } .father .son:nth-of-type(2) { background: pink; } .father .son:first-child+div{/*选取第二个li*/ background: pink; } </style></head><body> <div class="father"> <div class="son"></div> <div class="son"></div> <div class="son"></div> </div></body></html>View Code