由inline-block小例子引申出的一些问题,及IE6、IE7兼容性解决方案
使用场景分析:
常见的对块与块之间的横向排列处理
对同级所有元素使用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>
由inline-block小例子引申出的一些问题,及IE6、IE7兼容性解决方案的更多相关文章
- CSS3如何去除 inline block 元素之间多出的空格
display: inline-block 属性很好的避免了元素的浮动问题,但是会有点小问题,就是 inline-block 元素间的回车会被显示为一个空格.然而,我们写代码时,都是用回车来格式化的. ...
- c小例子 10个数找出第一名
这个小例子,是从十个数中找到第一名,如果第一名的分数相同,则二者都可以晋级,进入下一轮比赛,我们就对这个数进行排序,这样要求输出晋级人员的标号0-9号中其中一个或几个. 如何用c语言来实现呢? 1) ...
- java即时通信小例子
学习java一段时间了,今天写来一个即时通信的小例子练手在其过程中也学到了一些知识拿出来和大家分享,请路过的各位大神多多赐教... 好了下面讲一下基本的思路: 首先,编写服务器端的程序,简单点说吧就是 ...
- 【zTree】 zTree使用的 小例子
使用zTree树不是第一次了 但是 还是翻阅着之前做的 对照着 使用起来比较方便 这里就把小例子列出来 总结一下使用步骤 这样方便下次使用起来方便一点 使用zTree树的步骤: 1.首先 在 ...
- c# BackGroundWorker 多线程操作的小例子
在我们的程序中,经常会有一些耗时较长的运算,为了保证用户体验,不引起界面不响应,我们一般会采用多线程操作,让耗时操作在后台完成,完成后再进行处理或给出提示,在运行中,也会时时去刷新界面上的进度条等显示 ...
- (转)C#序列化和反序列化小例子
网友关于序列化和反序列化的总结: ①序列化基本是指把一个对象保存到文件或流中,比如可以把文件序列化以保存到Xml中,或一个磁盘文件中 ②序列化以某种存储形式使自定义对象持久化: ③将对象从一个地方传递 ...
- 一:AndEngine的小例子
首先导入架包,下载:http://download.csdn.net/detail/duancanmeng/4060082 lib文件夹中 像我们写android程序entends Activity一 ...
- c#几个小例子引发的思考
楚广明老师的c#教程每一节都会给出几个小例子让大家联系,对于初学者来说这确实是一件很纠结的事情,下面我把这几个小例子简单的写一下.同时看一下我们学到了什么 1.面向过程版的圆周长面积计算 using ...
- MVVM模式的一个小例子
使用SilverLight.WPF也有很长时间了,但是知道Binding.Command的基本用法,对于原理性的东西,一直没有深究.如果让我自己建一个MVVM模式的项目,感觉还是无从下手,最近写了一个 ...
随机推荐
- C#学习基础(1)命名约定
c#语言规范建议使用特定大小写约定创建字标识符 Pascal 大小写 标识符中每个单词的首字母大写 用于类型名和成员名 例如:CarDeck,FirstName Camel 大小写 ...
- openlayers 聚合效果
//cyd var cydclusterSource = new ol.source.Cluster({ distance: 40, source: new ol.source.Vector({ fe ...
- spring事务之多个业务之间怎么共享用同一个事务
应用场景:一个月前在学校做一个羽毛球馆的项目时,那个时候用的是springboot,然后项目分成几个模块,教练模块,学生模块,管理员模块,场地模块等等,然后Service层是按模块化进行的设计. 但是 ...
- 【Android】4.0 神一样的仪式感:Android第一个项目HelloWorld——eclipse
进入Eclipse,在左侧栏右击: 新建 “Android Application Project”项目,如果new之后没有,选择“Project”中“Android”目录下的 “Android Ap ...
- mongodb 32为安装
启动命令:mongod --dbpath D:\MongoDB\data --logpath c:\MongoDB\log\mongod.log --journal 安装引擎: mongod --db ...
- 正则表达式备忘录-Regular Expressions Cheatsheet中文版
正则表达式备忘录Regular Expressions Cheatsheet中文版原文:https://www.maketecheasier.com/cheatsheet/regex/ 测试文件a.t ...
- Jmeter(一)http接口添加header和cookie --转载
Jmeter(一)http接口添加header和cookie HTTP信息头管理器在Jmeter的使用过程中起着很重要的作用,通常我们在通过Jmeter向服务器发送http请求(get或者post ...
- Exchange 域用户无权管理邮箱
将需要管理邮箱的域用户添加至“Microsoft Exchange Security Groups”用户组即可.
- MySQL Database on Azure 支持 5.7 版本啦!
MySQL Database on Azure 目前已经全面开放对 5.7 的支持.您可以通过管理门户,在 MySQL 数据库服务器创建时选择 5.7 版本进行体验.MySQL 5.7 版本目前是 M ...
- 大数据的正确用法你get到了吗?
Azure 镜像市场已于2016年9月21日正式上线,在这个统一的集成平台中,客户可以轻松地浏览.搜索和选择一系列来自第三方的应用和解决方案,并可以将其快速一键部署到 Azure 实例当中. 在移动为 ...