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等网页语言标准不同,不同客户端环境(如分辨率不同)造成实际显示效果未能达到预期理想效果 首先我们来看一下目前市面上常见的一 ...
随机推荐
- HashMap 取数算法
Map,百度翻译给我的解释是映射,在Java编程中,它是存储键值对(key-value)的一种容器,也是Java程序员常用的对象.这篇博客介绍下HashMap的实现:java是面向对象编程语言,jdk ...
- 前端深入之css篇丨2020年前,彻底掌握css动画【transition】
写在前面 马上就2020年了,不知道小伙伴们今年学习了css3动画了吗? 说起来css动画是一个很尬的事,一方面因为公司用css动画比较少,另一方面大部分开发者习惯了用JavaScript来做动画,所 ...
- day 19作业
目录 今日作业: 今日作业: 1.什么是对象?什么是类? 答:对象是特征与技能的集合体,类是一系列对象相同的特征与技能的结合体 2.绑定方法的有什么特点 答:由对象来调用称之为对象的绑定方法,不同的对 ...
- Tensorflow-gpu1.13.1 和 Tensorflow-gpu2.0.0共存之安装教程
tf1.13.1 及 tf2.0.0 相关依赖及版本 硬件说明:显卡NVIDIA-GEFORCE-GTX-1060 1.驱动版本检查,并且更新显卡驱动[这一步很重要,你的驱动版本低了,cuda及cu ...
- 章节十七章、2- 给执行失败的case截图
一.案例演示 1.首先我们把截图的方法单独进行封装方便以后调用. package utilities; import java.io.File; import java.io.IOException; ...
- Web渗透之mssql LOG备份getshell
log备份的总结 当SQL注入是得到DB权限时候,接下来可以做的工作很多,象找管理员密码,后台管理这些都可以帮助你拿到WEBSHELL,但是这篇文章讲的是log备份,LOG备份出来的小马的体积小,而且 ...
- [JZOJ5185] 【NOIP2017提高组模拟6.30】tty's sequence
Description
- Cocos2d-x 学习笔记(11.1) MoveBy MoveTo
1. MoveBy MoveTo 两方法都是对node的平移,MoveBy是相对当前位置的移动.MoveTo是By的子类,是移动到世界坐标位置. 1.1 成员变量和create方法 MoveBy的主要 ...
- 『嗨威说』算法设计与分析 - 动态规划思想小结(HDU 4283 You Are the One)
本文索引目录: 一.动态规划的基本思想 二.数字三角形.最大子段和(PTA)递归方程 三.一道区间动态规划题点拨升华动态规划思想 四.结对编程情况 一.动态规划的基本思想: 1.1 基本概念: 动态规 ...
- Django之视图层的简介与使用
Django的View(视图) 一个视图函数(可以是类),简称视图,是一个简单的Python 函数(可以是类),它接受Web请求并且返回Web响应. 响应可以是一张网页的HTML内容,一个重定向,一个 ...