CSS兼容问题(PC端)


CSS兼容问题(PC端).

浏览器兼容性问题,通常是因为不同浏览器对同一端代码有不同的解析,造成页面显示不统一的情况

一、起因.

  • 浏览器不同
    • IE
    • FireFox
    • Chrome
    • Opera
    • Safari
    • 。。。
  • 浏览器版本不同
    • IE6 IE7 。。。
    • IE9 。。。(遵循W3C规范,之前不遵循,其他浏览器遵循,所以说主要兼容来自IE9版本之前的IE浏览器)

二、CSS Hack.

为了让页面形成统一的效果,要针对不同的浏览器或不同版本写出对应可解析的CSS样式,所以我们就把这个针对不同浏览器/版本而写CSS的过程叫CSS Hack

简单理解,根据不同浏览器/版本写样式

1.IE条件注释法.

在正常代码之外添加判别IE浏览器或对应版本的条件注释,符合条件的浏览器或者版本号才执行里边的代码

<!-- 小于等于IE8 识别内容 -->
<!--[if lte IE8]>
    想要执行的代码
<![endif]-->

2.CSS属性前缀法.

给CSS的属性添加前缀。

*可以被IE6/IE7识别

_只能被IE6识别

IE6~IE10可以识别 \9

IE6不能识别 !important

FireFox不能识别 * _ \9

在标准模式下

  • “ _ “ IE6专有的Hack
  • “ \9 “ IE6~IE10 都生效
  • “ \0 “ IE8~IE10 都生效
  • “ \9\0 “ IE9/IE10
<style>
    h1 {
        color: #111; /* all */
        color: #222\9; /* IE */
        *color: #333; /* IE6/IE7 */
        _color: #444; /* IE6 */
    }
</style>

IETester软件

测试IE兼容性

3.选择器前缀法.

  • IE6/IE7可识别 *div{}
  • IE7可识别 *+div{}
  • @media screen\9{} IE6/IE7
  • @media \0screen{} IE8
  • @media \0screen,screen\9{} IE6/IE7/IE8
  • @media screen\0{} IE8/9/10
  • @media screen and (min-width: 100px\0){} IE9/10
  • 。。。

三、浏览器私有属性.

  • -moz代表FireFox浏览器私有属性
  • -ms代表IE浏览器私有属性
  • -webkit代表Chrome、Safari私有属性
  • -o代表Opera私有属性

书写要求:标准写在最后,兼容性写在前面

-webkit-transform:rotate(-3deg);
-moz-transform:rotate(-3deg);
-ms-transforn:rotate(-3deg);
-o-transforn:rotate(-3deg);
transforn:rotate(-3deg);

为什么会出现私有属性呢?这是因为制定HTML和CSS标准的组织w3c动作是很慢的

  • 通常,有W3C组织成员提出一个新属性,比如说圆角border-radius,大家都觉得很好,但w3c制定标准,要走很复杂的程序、审查等,而浏览器市场推广时间紧,如果一个属性已经够成熟了,就会在浏览器中加入支持。
  • 但是为避免日后w3c公布标准时有所变更,会加入一个私有前缀,比如 -webkit- border-radius,通过这种方式来提前支持新属性,等到日后w3c公布了标准,border-radius的标准写法确立之后,再让新版的浏览器支持border-radius这种写法。

彼得朱 链接:https://www.jianshu.com/p/a6f52fe96e6e

四、浏览器样式初始化.

解决不同浏览器/版本代码解析效果不同 – 把默认样式归零

blockquote,body,button,dd,dl,dt,fieldset,form,h1,h2,h3,h4,h5,h6,hr,input,legend,li,ol,p,pre,td,textarea,th,ul {
    margin:0;padding:0;
} /* *{margin:0;padding:0;} */
body, button, input, select, textarea {
    font: 12px/1.5tahoma, arial, \5b8b\4f53;/* 宋体 */
} 
h1, h2, h3, h4, h5, h6 {
    font-size: 100%;
}
address, cite, dfn, em, var {
    font-style:normal;
}
code, kbd, pre, samp {
    font-family:couriernew, courier, monospace;
}
small {
    font-size: 12px;
}
ul, ol {
    list-style: none;
}
a {
    text-decoration: none
}
a:hover {
    text-decoration: underline;
}
sup {
    vertical-align: text-top;
}
sub {
    vertical-align: text-bottom;
}
legend {
    color: #000;
}
fieldset, img {
    border: 0;
}
button, input, select, textarea {
    font-size: 100%;
}
table {
    border-collapse: collapse;
    border-spacing: 0;
}

可以使用 Normlize.css达到初始化效果

Normalize.css 使浏览器呈现所有 HTML 元素更加一致,并且符合现代 web 标准。Normalize.css 只作用于需要规范化的样式。

<!-- 非压缩 -->
<link href="https://cdn.bootcdn.net/ajax/libs/normalize/8.0.1/normalize.css" rel="stylesheet">
<!-- 压缩 -->
<link href="https://cdn.bootcdn.net/ajax/libs/normalize/8.0.1/normalize.min.css" rel="stylesheet">

补充.

https://www.jb51.net/css/571918.html

最全整理浏览器兼容性问题与解决方案.

https://wenku.baidu.com/view/1ceb47637f21af45b307e87101f69e314332fae9.html?fr=search

bootCDN.

稳定、快速、免费的前端开源项目 CDN 加速服务

https://www.bootcdn.cn/


文章作者: liuminkai
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 liuminkai !
评论
 上一篇
IEDA文档注释模板和方法注释模板 IEDA文档注释模板和方法注释模板
文档注释模板./** * @author liuminkai * @version 1.0 * @datetime ${DATE} ${TIME} * @decription ${DECRIPTION} **/ 方法注释模板.*
2020-07-14 liuminkai
下一篇 
响应式Web 响应式Web
响应式Web.响应式布局.简单理解,就是根据不同的屏幕尺寸写不同的样式 必须有 viewport.告诉手机浏览器,这个网站是响应式的 <!-- 内容设备宽度,一倍的缩放 --> <meta name="viewport" con
2020-07-10
  目录