ie浏览器兼容性的入门解决方案
IE浏览器的兼容性素来是令人头疼的问题,大名鼎鼎的FUCK-IE不是浪得虚名的。
这里使用的解决方案是HACK,具体原理就是针对不同的浏览器写不同的HTML、CSS样式,从而使各种浏览器达到一致的渲染效果。
HTML的兼容写法
HTML的HACK由注释<!-- -->演变而来,在高级浏览器中注释不会被加载,把IE浏览器的兼容代码写在注释中,IE浏览器会识别。
<!--[if IE 6]>
<p>只有IE6认识我</p>
<![endif]-->
<!--[if gte IE 9]>
<h1>大于等于IE9的浏览器能看到</h1>
<![endif]-->
<!--[if lte IE 8]>
<h1 class="red">您的浏览器版本过低(IE8及以下版本),请更新浏览器!</h1>
<![endif]-->
上面三个例子非常简单,聪明的你肯定能举三反一。
实际应用场景的话多是用于添加一些兼容性的JavaScript片段。
CSS的兼容写法
CSS的HACK包括属性的HACK和选择器的HACK。
要提醒的是,设置CSS的HACK要注意CSS样式的层叠性,给同一个元素设置的兼容写法必须写在后面,否则会被层叠掉。
只兼容IE6的HACK(属性)
HACK符号是【-】或者【_】,作为前缀在属性前面,中间不加空格。在属性名前加上这个HACK符号,高级浏览器及其他浏览器会认为这是一个未知的属性,不会加载这个属性,也不会报错。
background-color: red; /* 高级浏览器识别 */
_background-color: pink; /* 仅IE6识别 */
兼容IE6/7的HACK(属性)
HACK符号可以是【`】、【~】、【!】、【@】、【#】、【$】、【%】、【^】、【&】、【*】、【(】、【)】、【+】、【=】、【[】、【]】、【|】、【<】、【>】、【,】和【.】中的任一个字符,作为前缀写在属性前面。
background-color: red; /* 高级浏览器识别 */
!background-color: pink; /* 仅IE6/7识别 */
只兼容IE8的HACK(属性)
HACK符号是【\0/】,必须写在属性值与分号之间,中间不加空格。
background-color: red; /* 高级浏览器识别 */
background-color: pink\0/; /* 仅IE8识别 */
兼容IE8/9/10的HACK(属性)
HACK符号是【\0】,必须写在属性值与分号之间,中间不加空格。
background-color: red; /* 高级浏览器识别 */
background-color: pink\0; /* IE8/9/10识别 */
兼容IE6/7/8/9/10(属性)
HACK符号是【\9】,必须写在属性值与分号之间,中间不加空格。
background-color: red; /* 高级浏览器识别 */
background-color: pink\9; /* IE6/7/8/9/10识别 */
兼容IE6及以下版本(选择器)
HACK符号是【* html】,注意*和html之间有空格,再加一个空格,后面写选择器。
/* 常规写法 */
.box {
width: 200px;
height: 200px;
border-radius: 50%;
background-color: yellowgreen;
}
/* 兼容写法 */
* html .box {
width: 100px;
height: 100px;
background-color: skyblue;
}
兼容IE7及以下版本(选择器)
HACK符号是【,】,英文的逗号,直接写在选择器的后面,不加空格。
.box, {
background-color: #999;
}
还有第二种,HACK符号是【*+html】,加一个空格,后面写选择器。
*+html .box {
background-color: #999;
}
兼容IE6以外的其他版本(选择器)
HACK符号是【html>body】,写在选择器的前面,与选择器之间有一个空格。
html>body .box {
background-color: yellow;
}
兼容IE6/7以外的版本(选择器)
HACK符号是【html>/**/】或【html~/**/】,写在选择器的前面,与选择器之间有一个空格。
html>/**/body .box {
background-color: purple;
}
html~/**/body .box {
background-color: purple;
}
以上就是IE浏览器兼容性的入门解决方案。浏览器的兼容性一直是一个很大难题,对于专业前端开发者来说是一个必须勇敢直面的挑战。而对于非专业前端开发者(比如说我)来说,稍微有了解就好了。
"你别皱眉,我走就好。"
ie浏览器兼容性的入门解决方案的更多相关文章
- JAVASCRIPT 浏览器兼容性问题及解决方案列表
JAVASCRIPT 浏览器兼容性问题及解决方案列表(1)获取HTML元素只兼容IE:document.all.hello hello 兼容所有: document.getElementById(“h ...
- CSS 多浏览器兼容性问题及解决方案
兼容性处理要点1.DOCTYPE 影响 CSS 处理 2.FF: 设置 padding 后, div 会增加 height 和 width, 但 IE 不会, 故需要用 !important 多设一个 ...
- 笔试常考--浏览器兼容性问题及解决方案(CSS)
问题一:不同浏览器的标签默认的外补丁和内补丁不同 问题现象:随便写几个标签,不加样式控制的情况下,各自的margin 和padding差异较大. 解决方案:css里加: ;;} 备注:这个是最常见的也 ...
- 常见浏览器兼容性问题与解决方案css篇
浏览器兼容问题一:不同浏览器的标签默认的外补丁和内补丁不同 问题症状:随便写几个标签,不加样式控制的情况下,各自的margin 和padding差异较大. 碰到频率:100% 解决方案:CSS里 ...
- 常见的浏览器兼容性问题与解决方案——CSS篇
1.不同的浏览器的标签默认的外补丁和内补丁不同 问题症状:随便写几个标签,不加样式控制的情况下,各自的margin和padding差异较大. 碰到频率:100% 解决方案:初始化CSS的默认样式,*{ ...
- 常见CSS浏览器兼容性问题与解决方案【转载自http://blog.csdn.net/chuyuqing/article/details/37561313/】
所谓的浏览器兼容性问题,是指因为不同的浏览器对同一段代码有不同的解析,造成页面显示效果不统一的情况.在大多数情况下,我们的需求是,无论用户用什么浏览器来查看我们的网站或者登陆我们的系统,都应该是统一的 ...
- PC/H5端各浏览器兼容性问题及解决方案?
概念:所谓的浏览器兼容性问题,是指因为不同的浏览器对同一段代码解析的差异,造成页面显示效果不统一的情况. 1>不同浏览器的标签默认的外补丁和内补丁不同问题症状:随便写几个标签,不加样式控制的情况 ...
- Javascript 多浏览器兼容性问题及解决方案
一.document.formName.item(”itemName”) 问题 问题说明:IE下,可以使用 document.formName.item(”itemName”) 或 document. ...
- web前端开发浏览器兼容性 - 持续更新
浏览器兼容性问题又被称为网页或网站兼容性问题:不同浏览器内核及所支持的html等网页语言标准不同,不同客户端环境(如分辨率不同)造成实际显示效果未能达到预期理想效果 首先我们来看一下目前市面上常见的一 ...
随机推荐
- redis在mac上的下载安装
redis官网下载压缩包: 在终端进入下载后的目录,然后: 解压:tar zxvf redis-5.0.5.tar.gz 移动到:sudo mv redis-5.0.5 /usr/local 切换到: ...
- Bugku练习
首先我们拿到了一个admin.exe的文件,根据惯例我先用查一下有没有加壳: ???这是怎么回事??? 我于是用了winhex打开看了一下,发现 这不就是data协议吗~~~,把后面的base64解密 ...
- SQL Server换版本卸载问题
好久没更博客了,今天随性的更一篇.. 你是否也在问这个问题. 给你答案: 1.运行:输入regedit 进入注册表编辑器,进入之后执行下列操作: 2.在注册表,删除如下项:HKEY_CURRENT_U ...
- abp(net core)+easyui+efcore实现仓储管理系统——EasyUI之货物管理五 (二十三)
abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一) abp(net core)+ ...
- [JOYOI1307] 联络员
题目限制 时间限制 内存限制 评测方式 题目来源 1000ms 131072KiB 标准比较器 Local 题目描述 Tyvj已经一岁了,网站也由最初的几个用户增加到了上万个用户,随着Tyvj网站的逐 ...
- Cocos2d-x 学习笔记(19) Control Invocation
[Cocos2d-x 学习笔记 目录链接] 1. 简介 control为其子类提供了touch回调函数,当子类触发EventType相关事件时,会调用相关的回调函数. control对象接收到的事件类 ...
- openssl生成密钥/证书
一.公钥/私钥/签名/验证签名/加密/解密/非对称加密 对称加密:用同一个密码 加密/解密 文件. 非对称加密:加密用的一个密码,解密用另外一组密码. 加密解密:公钥加密数据,然后私钥解密. 公钥 ...
- IaaS基础平台
第一部分:IaaS云计算基础架构平台 服务器:先电 任务一.IaaS云平台搭建 基础环境: 1.使用命令行方式设置主机名,防火墙以及 SELinux 设置如下: (1)设置控制节点主机名 contro ...
- Mysql面试题及千万级数据查询优化
今天在说Mysql查询优化之前,我先说一个常见的面试题,并带着问题深入探讨研究.这样会让大家有更深入的理解. 一,Mysql数据库中一个表里有一千多万条数据,怎么快速的查出第900万条后的100条数据 ...
- Vue学习系列(三)——基本指令
前言 在上一篇中,我们已经对组件有了更加进一步的认识,从组件的创建构造器到组件的组成,进而到组件的使用,.从组件的基本使用.组件属性,以及自定义事件实现父子通讯和巧妙运用插槽slot分发内容,进一步的 ...