
首先,什么是浏览器兼容性问题
相同的代码,某些浏览器显示正常,某些浏览器显示异常
第二,为什么存在浏览器兼容性问题
同一产品,版本越旧,漏洞越多
同一产品的较新版本具有更. 旧版浏览器尚不具备此功能,当然显示不正确
不同的浏览器,不同的标准和不同的效果. 例如,不同的浏览器具有不同的内核
三个二手网站
1,caniuse.com检查CSS属性的兼容性
2. Browserhacks检查Hack的措辞
第四,解决兼容性问题的想法
1. 你想做吗
产品角度(产品受众,受众浏览器比例,性能优先级或基本功能优先级)
成本角度(有必要做些什么)
2. 在什么程度上
哪些浏览器支持哪些效果
3. 怎么做

(1)根据兼容要求选择技术框架/库(jquery)
(2)根据兼容要求选择兼容的工具(html5shiv.jsie10 浏览器css兼容问题,response.js,css reset,normalize.css,Modernizr)
postCSS
(3)条件注释,CSS Hack和js能力检测以制作一些补丁
五个渐进增强和优雅降级
渐进增强:
为低级浏览器构建页面以确保最基本的功能,然后为高级浏览器改进和添加效果和交互等功能,以获得更好的用户体验
正常降级:
从一开始就构建一个完整的功能,然后使其与低级浏览器兼容.
六个. 解决兼容性问题的方法1.选择合适的框架
(1)引导程序(> = ie8)
(2)jQuery 1.〜(> = ie6),jQuery 2.〜(> = ie9)
(3)Vue(> = ie9)
(4)反应(与ie8兼容)
针对不同的框架,兼容的浏览器有所不同ie10 浏览器css兼容问题,在开发之前需要注意
2. 条件注释(也称为IE条件注释)

条件注释(条件注释)是IE在HTML源代码中有条件解释的句子. 条件注释可用于向IE提供和隐藏代码.
<!--[if IE 6]>
<p>You are using Internet Explorer 6.</p>
<![endif]-->
<!--[if !IE]><!-->
<script>alert(1);</script>
<!--<![endif]-->
<!--[if IE 8]>
<link href="ie8only.css" rel="stylesheet">
<![endif]-->
使用条件注释的页面在Windows Internet Explorer 9中可以使用,但在Internet Explorer 10中不能使用. IE10不再支持条件注释
3,CSS hack
(1)原因: 由于不同供应商的浏览器(例如Internet Explorer,Safari,Mozilla Firefox,Chrome等)或同一供应商的不同版本的浏览器(例如IE6和IE7), CSS分析不完全相同,因此将导致不同的页面效果,而我们将无法获得所需的页面效果.
我们需要为不同的浏览器编写不同的CSS,以便在不同的浏览器中获得所需的页面效果. 实际项目中的大多数CSS Hacks都是针对不同版本的IE浏览器之间的性能差异而引入的.
(2)CSS hack表现
hack(黑客)使用不同浏览器的bug来实现浏览器兼容性问题
CSS Hack大致有三种表现形式,即CSS属性前缀方法,选择器前缀方法和IE条件注释方法(即IE时为HTML标头引用)Hack
属性前缀方法(即内部Hack)
例如,IE6可以识别下划线_和星号*,
IE7可以识别星号*,但不能识别下划线_,
IE6〜IE10都知道“ \ 9”,但是以上三个Firefox都不知道
这些是ie的错误,我们可以通过这些错误来识别ie的版本
.box{
color: red;
_color: blue; /*ie6*/
*color: pink; /*ie67*/
color: yellow\9; /*ie/edge 6-8*/
}
选择器前缀方法(即选择器Hack)

IE条件注释方法(即HTML条件注释Hack)
对于所有IE(注意: IE10 +不再支持条件注释): <!-[如果IE]> IE浏览器显示的内容<! [endif]->;
对于IE6和以下版本: <!-[如果是IE 6]>仅在IE6-中显示内容<! [endif]->.
这种类型的断点不仅对CSS有效,而且对判断语句中编写的所有代码均有效
<!–-[if IE 7]> <link rel="stylesheet" href="ie7.css" type="text/css" /> <![endif]–->
(3)栗子
.target{
display: inline-block;//inline-block在ie以上才支持
*display: inline; //设置它为inline元素
*zoom: 1;//是ie67比较老的功能,可以触发ie的haslayout,生成类似bfc的效果
}
.clearfix:after{
content: '';
display: block;
clear: both;
}
.clearfix{
*zoom: 1; /* 仅对ie67有效,可以用来清除浮动*/
}
摘要: css hack是使某些功能与低版本的兼容,即,一种实现该功能的新书写方式. 然后使用ie的bug来执行一些只能通过*或_识别的低级代码.
<!DOCTYPE html> <!--[if IEMobile 7 ]> <html dir="ltr" lang="en-US"class="no-js iem7"> <![endif]--> //如果是移动端的,增加一个iem7的class <!--[if lt IE 7 ]> <html dir="ltr" lang="en-US" class="no-js ie6 oldie"> <![endif]--> //如果是小于ie7,增加一个ie6的class <!--[if IE 7 ]> <html dir="ltr" lang="en-US" class="no-js ie7 oldie"> <![endif]--> //如果是ie7,增加一个ie7的class <!--[if IE 8 ]> <html dir="ltr" lang="en-US" class="no-js ie8 oldie"> <![endif]--> // 如果是ie7,增加一个ie7的class <!--[if (gte IE 9)|(gt IEMobile 7)|!(IEMobile)|!(IE)]><!--><html dir="ltr" lang="en-US" class="no-js"><!--<![endif]-->
您可以使用如图所示的类. 就像将class属性添加到不同的Internet浏览器一样,通过.class选择浏览器,并向其中添加一些功能. 无需通过浏览器错误选择浏览器.
七: 常见的CSS属性的兼容性
inline-block: > = ie8
最小宽度/最小高度: > = ie8
: 之前,: 之后: > = ie8
div: 悬停: > = ie7

inline-block: > = ie8
background-size: > = ie9
圆角: > = ie9
阴影: > = ie9
/渐变: > = ie10
八: 使用兼容的开发工具
html5shiv.js
respond.js
css重置
normalize.css
Modernizr
这是处理兼容性的想法的改变. 以前,浏览器负责兼容性. Modernizr方法不关心浏览器,而是帮助检测浏览器是否支持新功能,也就是说,Modernizr仅关心是否有相应的CSS功能.
运行时,它将在html元素上添加一批CSS类名称. 这些类名称标记了当前浏览器支持和不支持的功能
有关详细信息,请参阅文档: Modernizr简介
文章来源:segmentfault,作者:bamboo。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:william.shi#ucloud.cn(邮箱中#请改为@)进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。

背景-系统设置-扩展变量-移动广告空间-内容主体底部
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-196940-1.html
骗来
>我自愿为国家尊严而战
许多网民认为现在中国实力不够强