--css 盒子模型下的 box-sizing 属性,只兼容到ie8;

-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
-o-box-sizing: border-box;
-ms-box-sizing: border-box;
box-sizing: border-box;

--ie10及以下的img会有默认的黑色边框
解决:在指定img设置边框属性 border-style:none\9;

--ie6双边距bug: 当一个元素使用浮动时,且其同时设置了外边距margin并其边距的方向与浮动的方向一致时,这个时候在ie6下,就会出现这个双边距bug,即边距是实际设置的2倍;

解决方案:很简单,在该元素的css类里面写上 display:inline;

(原因是,css float属性浮动的元素,不管他们之前是什么,会被变成 block 属性,而ie6不知为何,在渲染float 及 元素为block的时候会让其边距翻倍,因此,我们只管将其属性再次改回 inline 即可)

--ie8及以下不支持border-radius

解决方案:在这里,我们可以引入PIE.htc  (http://www.zhangxinxu.com/study/js/pie.htc 参考张鑫旭博客)

这种方案是有局限性的:

1.定位问题

为目标元素设置position:relative或是设置祖先元素position:relative并赋予一个z-index值(不可为-1)。

2. 相当路径的问题
IE浏览器的behavior 属性是相对于HTML文档而言的,与CSS其他的属性不一样,不是相对于CSS文档而言的。因此我们在写路径的时候要写成绝对路径;

3. 缩写的问题
不支持border-top-left-radius这种写法

4. 提供正确的Content-Type
要想让IE浏览器支持htc文件,需要一个有着”text/x-component” 字样的content-type 头部,否则,会忽视behavior。(这一步感觉不是特别需要,我个人在ie8尝试了下没有加这个字样照样可以使用);

给个例子:

将以上的pie.htc保存至css目录下;然后在css对应的类里面写上

behavior:url(/dedecms/templets/default/style/pie.htc);/*绝对路径*/

ie6以上 各个版本的兼容 hack 技术

针对ie 的hack 其实有好多个符号,但是,全部记住这个我个人觉得没多大必要,反而会更乱;我列举了一下4种符号,记住一下4种符号就好了,然后按需求组合一下就可以实现了;

_ :选择IE6及以下。

* :选择IE7及以下。

\9:选择IE6及以上

\0:选择IE8及以上

最后再来说说css 的 一个概念 :haslayout

haslayout是IE渲染引擎的一个内部组成部分,IE使用布局概念来控制元素的尺寸和定位,在理想情况下,所有元素都控制自己的尺寸和定位;IE开发团队将“布局”用于实际需要的元素上,从而减少性能开销;拥有布局的元素负责本身及其子元素的尺寸和定位。没有布局的元素,那么它的尺寸和位置由最近的拥有布局的祖先元素控制。

它能用来干嘛,在这里,别的我不说了,我就举2个比较经典的例子。

1、清除浮动

clearfix{

  *zoom:1

}

clearfix:after{

  content:"";

  display:table;

  clear:both;

}

大家有没有发现,*zoom:1;

这个到底是什么原理?这是因为ie6/7不支持伪元素,用:after{}无效,故在ie6/7时又加了个hack,zoom:1;

这个zoom,重点是能起到触发haslayout属性,从而修复高度塌陷的问题;

2、display:inline-block 在ie6/7 不支持

按照对haslayout的理解,我们可以通过在ie6/7 的时候做些特殊的处理

解决方案:

在对应的css类里面添加 “*display:inline; *zoom:1”;

原理就是在ie6/7下为inline元素添加zoom:1,让它触发haslayout,从而有了自己的布局,可以计算自己的框高;于是就达到了类似 display:inline-block 的效果了

关于兼容IE的一些策略的更多相关文章

  1. 通过iframe引入另外一个项目中的html片段到项目中,解决样式,高度,兼容等问题的策略

     <!--尾部开始--> <iframe src="http://172.16.24.11:9000/cartoon-web/footer_new"    m ...

  2. 谷歌的Android Q到底有哪些新特性及变更?

    Android Q 隐私更改相关介绍 存储范围变更 Android Q 改变了应用程序访问设备外部存储上文件的方式. 通过使用更细粒度的媒体特定权限替换以前的 READ_EXTERNAL_STORAG ...

  3. Magento 架构基础知识概述

    Megento 架构基础知识概述 Magento整合了面向对象的基于PHP的应用程序的核心架构原则.这些一般原则的综合讨论既有在线的,也有印刷形式.以下讨论主要关注这些主题如何直接应用于Magento ...

  4. 【DotNetNuke介绍】

    简介 DotNetNuke(以下简称DNN)的最终目的是创建一个门户的框架平台,这个平台可以为开发者增添模块搭建应用程序提供坚实的可靠的支持.应用程序的一个关键的功能就是数据存取..NET Frame ...

  5. Keras Conv1d 参数及输入输出详解

    Conv1d(in_channels,out_channels,kernel_size,stride=1,padding=0,dilation=1,groups=1,bias=True) filter ...

  6. 『动善时』JMeter基础 — 20、JMeter配置元件【HTTP Cookie管理器】详细介绍

    目录 1.HTTP Cookie管理器介绍 2.HTTP Cookie管理器界面详解 3.JMeter中对Cookie的管理 (1)Cookie的存储 (2)Cookie的管理策略 4.补充:Cook ...

  7. Qt 中的二进制兼容策略(简而言之就是地址不能变,剩下的就是让地址不变的技巧)

    本文翻译自 Policies/Binary Compatibility Issues With C++ 二进制兼容的定义 如果程序从一个以前版本的库动态链接到新版本的库之后,能够继续正常运行,而不需要 ...

  8. CSS3与页面布局学习总结(八)——浏览器兼容与前端性能优化

    一.浏览器兼容 1.1.概要 世界上没有任何一个浏览器是一样的,同样的代码在不一样的浏览器上运行就存在兼容性问题.不同浏览器其内核亦不尽相同,相同内核的版本不同,相同版本的内核浏览器品牌不一样,各种运 ...

  9. 深入浏览器兼容 细数jQuery Hooks 属性篇

    关于钩子:http://www.cnblogs.com/aaronjs/p/3387906.html 本章的目的很简单,通过钩子函数更细节的了解浏览器差异与处理方案, 版本是2.0.3所以不兼容ie6 ...

随机推荐

  1. Markdown 语法说明(持续更新-20160822)

    Markdown 是一种轻量级的「标记语言」.Markdown 语法的目标是:成为一种适用于网络的书写语言.Markdown 的语法简单,熟悉Markdown语法规则,事倍功半. 语法 插入图片如何定 ...

  2. mysqlDBA(1-3年)

    1.熟悉Aliyun操作系统的管理.配置和系统调优: 2.熟悉mysql管理 3.熟悉mysql主从复制,主主复制 4.熟悉数据库的备份策略,监控策略,性能测量策略 5.熟悉linux/unix操作系 ...

  3. ionic + cordova+angularJs 搭建的H5 App完整版总结

      为期半个月的项目实践开发,已完整告一段落,团队小组获得第一名,辛苦总算没有白费,想起有一天晚上,整个小组的人,联调到12点才从公司回去,真是心酸.这里总结一下,项目过程中遇到的问题 和感悟.哈哈, ...

  4. jQuery- 表单验证插件-Validation

      ▓▓▓▓▓▓ 大致介绍 jQuery Validate 插件为表单提供了强大的验证功能,让客户端表单验证变得更简单,同时提供了大量的定制选项,满足应用程序各种需求.该插件捆绑了一套有用的验证方法, ...

  5. 限制HTML的input只能输入数字、英文、汉字...

    限制HTML的input只能输入数字.英文.汉字... 关键词:正则表达式, JavaScript, HTML, input 常用HTML正则表达式1.只能输入数字和英文的:<input onk ...

  6. PHP 使用分页方法修改多数据字段

    这个标题听起来很别扭,需求是这样的.mysql中的customer表有5000条数据.现在要给customer表添加一个order_num 字段,客户每下单一次就update这个字段+1. 是的,新增 ...

  7. oracle 11.2.0.4单实例文件系统安装与补丁

    [TOC] 一,预安装处理 1.版本准备 操作系统:RHEL 6.5 数据库版本:Oracle 11.2.0.4 相关包:p13390677_112040_Linux-x86-64_1of7.zip  ...

  8. spring boot使用

    首先spring-boot是个服务框架,更加准确来讲是个微服务框架,实际上来说”微“并不“微”,spring-boot包含很多可嵌入的组件,通过这些组件可以来完成我们的服务, 以往我们使用Spring ...

  9. centos+scala2.11.4+hadoop2.3+spark1.3.1环境搭建

    一.Java安装 1.安装包准备: 首先到官网下载jdk,http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads- ...

  10. 百度UEditor在线编辑器的配置和图片上传

    前言 最近在项目中使用了百度UEditor富文本编辑器,配置UEditor过程中遇到了几个问题,在此记录一下解决方案和使用方法,避免以后使用UEditor出现类似的错误. 基本配置 一.下载UEdit ...