CSS3的浏览器兼容问题

这次给大家带来CSS3的浏览器兼容问题,CSS3浏览器兼容的注意事项有哪些,下面就是实战案例,一起来看一下。

本篇介绍了CSS3与页面布局学习总结——浏览器兼容与前端性能优化,具体如下:

一、浏览器兼容

1.1、概要

世界上没有任何一个浏览器是一样的,同样的代码在不一样的浏览器上运行就存在兼容性问题。不同浏览器其内核亦不尽相同,相同内核的版本不同,相同版本的内核浏览器品牌不一样,各种运行平台还存在差异、屏幕分辨率不一样,大小不一样,比例不一样。兼容性主要考虑三方面:

1)、CSS兼容

2)、JavaScript兼容

3)、HTML兼容

这三类也是前端的主要组成部分,都存在一定的兼容性问题,知己知彼,百战百胜,我们先了解浏览器的发动机—内核。

CSS3的浏览器兼容问题

多年前我们一直为IE6兼容烦恼,为它没少加班;盼走了IE6现在又出现了IE8,看来兼容没有尽头…

1.2、浏览器内核

Trident

Microsoft公司浏览器内核,IE6、IE7、IE8(Trident 4.0)、IE9(Trident 5.0)、IE10(Trident 6.0)及许多品牌浏览器的内核。其中部分浏览器的新版本是“双核”甚至是“多核”,其中一个内核是Trident,然后再增加一个其他内核。

Gecko

Firefox内核,Netscape6开始采用的内核,后来的Mozilla FireFox(火狐浏览器) ,Mozilla Firefox、Mozilla SeaMonkey、waterfox(Firefox的64位开源版)、Iceweasel、Epiphany(早期版本)、Flock(早期版本)、K-Meleon使用的内核。

Presto

Opera前内核,已废弃,Opera现已改用Google Chrome的Blink内核。

CSS3的浏览器兼容问题

Webkit

Safari内核,Chrome内核原型,开源,它是苹果公司自己的内核,也是苹果的Safari浏览器使用的内核。 傲游浏览器3、Apple Safari、(Win/Mac/iPhone/iPad)、Symbian手机浏览器、Android 默认浏览器

Blink

Blink是一个由Google和Opera Software开发的浏览器排版引擎,Google计划将这个渲染引擎作为Chromium计划的一部分,这一渲染引擎是开源引擎WebKit中WebCore组件的一个分支,并且在Chrome(28及往后版本)、Opera(15及往后版本)。

edge

微软专门为新IE打造的引擎,速度快,目前已经基于此引擎开发了浏览器,目前IE11使用该内核,估计以后微软的新浏览器会继续采用该内核。

1.3、浏览器市场份额(Browser Market Share)

能过浏览器的市份额我们可以在处理浏览器兼容性时会更加关注市场份额高的浏览器,适当的时候可以放弃市场份额占有量小的浏览器。

国际:

查询地址:https://www.netmarketshare.com

CSS3的浏览器兼容问题

2016年12月PC浏览器数据

CSS3的浏览器兼容问题

2016年12月平板+移动数据

CSS3的浏览器兼容问题

2016年浏览器份额变化

国内:

查询地址:http://tongji.baidu.com/data/browser

CSS3的浏览器兼容问题

CSS3的浏览器兼容问题

CSS3的浏览器兼容问题

从上图可以看出,我们在针对PC Web开发时需要重点关注Chrome、IE浏览器,开发Mobile项目时要重点关注Chrome浏览器与Safari。

1.4、兼容的一般标准

1)、在不同的主流的浏览器上表现效果一致

2)、能适应不同的屏幕大小

3)、能适应不同的分辨率与色彩深度

浏览器兼容在线测试:

http://browsershots.org/

CSS3的浏览器兼容问题

http://browsershots.org/

CSS3的浏览器兼容问题

IE测试可以安装:IETester在本地测试。

CSS3的浏览器兼容问题

 1.5、CSS Reset

每种浏览器都有一套默认的样式表,即user agent stylesheet,网页在没有指定的样式时,按浏览器内置的样式表来渲染。这是合理的,像word中也有一些预留样式,可以让我们的排版更美观整齐。不同浏览器甚至同一浏览器不同版本的默认样式是不同的。但这样会有很多兼容问题,CSSReset可以将所有浏览器默认样式设置成一样。

如全局重置*{ padding: 0; margin: 0; border:}虽然能全部重置,但由于性能较低,不推荐使用。因为*需要遍历整个DOM树,当页面节点较多时,会影响页面的渲染性能。这个网站http://cssreset.com/有最新的CSSReset提供给大家参考。

CSS3的浏览器兼容问题

Normalize (号称是CSS reset的替代方案,保留了一些内置的样式,并不是清除所有)

http://nicolasgallagher.com/about-normalize-css/

https://github.com/necolas/normalize.css

示例:请看第2章的内容

1.6、CSS Hack

CSS Hack就是针对不同的浏览器或不同版本浏览器写特定的CSS样式达到让浏览器兼容的过程。

1.6.1、条件注释法

IE条件注释(Conditional comments)是IE浏览器私有的代码,在其它浏览器中被视为注释。

gt : greater than,选择条件版本以上版本,不包含条件版本 >

lt : less than,选择条件版本以下版本,不包含条件版本

gte : greater than or equal,选择条件版本以上版本,包含条件版本>=

lte : less than or equal,选择条件版本以下版本,包含条件版本

! : 选择条件版本以外所有版本,无论高低

*只有IE浏览器认识条件注释、其它浏览器会跳过

示例:

                                                                

效果:

 IE8

CSS3的浏览器兼容问题

chrome

CSS3的浏览器兼容问题

ie6

CSS3的浏览器兼容问题

 1.6.2、样式内属性标记法

在CSS样式的属性名前或值后面添加特殊的字符让不同的浏览器解析。

CSS3的浏览器兼容问题

http://browserhacks.com/在线查询, 这一个功能强大的提供各种针对性兼容办法的网站,非常实用。

CSS3的浏览器兼容问题

“-″下划线是IE6专有的hack

“9″ IE6/IE7/IE8/IE9/IE10都生效

“″ IE8/IE9/IE10都生效,是IE8/9/10的hack

“9″ 只对IE9/IE10生效,是IE9/10的hack

这里以IE6双边距问题为例。

代码:

                                        #p1{                width: 100px;                height: 100px;                background: lightgreen;                float: left;                        margin-left: 100px;                _margin-left: 50px;                    }                        

效果:

CSS3的浏览器兼容问题

CSS3的浏览器兼容问题

CSS3的浏览器兼容问题

 1.6.3、选择器前缀法

*html *前缀只对IE6生效

*+html *+前缀只对IE7生效

@media screen9{…}只对IE6/7生效

@media screen {body { background: red; }}只对IE8有效

@media screen,screen9{body { background: blue; }}只对IE6/7/8有效

@media screen {body { background: green; }} 只对IE8/9/10有效

@media screen and (min-width:0) {body { background: gray; }} 只对IE9/10有效

@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {body { background: orange; }} 只对IE10有效

《hack速查表》:

        hack速查表            /*reset*/                * {            margin: 0;            padding: 0;        }                body {            font: normal 12px/2 Tahoma, Arial, "5b8b4f53", Helvetica, sans-serif;            height: 100%;            text-align: center;            background: #fff;        }                h1,        h2,        h3,        h4,        h5,        h6 {            font-size: 100%;            font-weight: normal;        }        /* Tables still need 'cellspacing="0"' in the markup. */                table {            border-collapse: collapse;            border-spacing: 0;        }                ul,        ol {            list-style: none;        }                em {            font-style: normal;            color: #f00;        }                h1 {            font-size: 2em;            font-weight: 700;        }                .hack {            width: 1000px;            margin: 0 auto;            text-align: left;        }                .hack table {            width: 100%;            margin: 10px 0;        }                .hack td,        .hack th {            height: 30px;            padding: 0 5px;            border: 1px solid #ccc;        }                .hack th {            color: #cc0bf6;        }                .hack th.eq,        .hack td.eq {            width: 350px;            color: #333;        }                .hack th.identifier,        .hack td.hack-data {            width: 350px;            color: #61602f;        }                .hack td.no {            color: #fff;            text-align: center;            background-color: red;        }                .hack td.yes {            color: #fff;            text-align: center;            background-color: green;        }                .hack p b {            color: green;        }                .hack p b.red {            color: red;        }                .hack h2 {            margin: 10px 0 0 0;            font-size: 1.5em;            font-weight: 700;        }                .hack-list {            margin: 10px 0;        }                .hack-list li {            margin-bottom: 5px;            zoom: 1;        }                .hack-list span {            float: left;            width: 15px;            font-family: "5b8b4f53";        }                .hack-list-inf {            padding: 0 0 0 15px;        }                .hack-list em {            display: inline-block;            margin: 0 5px;        }        

hack速查表

建议:以标准浏览器为准书写代码,如遇到兼容问题,尝试其他方法解决问题,在万不得已怕情况下,采用hack解决。

以下是我总结的HACK书写方法:

浏览器:仅限IE6+,FF,safari,chrome,opera;(截止到2011.10.12非IE均为最新版本)。

测试环境:windows系统;

兼容浏览器的jquery拖动滑块验证
兼容浏览器的jquery拖动滑块验证

兼容浏览器的jquery拖动滑块验证

兼容浏览器的jquery拖动滑块验证 37
查看详情 兼容浏览器的jquery拖动滑块验证

DOCTYPE: .

标志符 示例 IE6 IE7 IE8 IE9 FF OP SA CH
* .eq {*color:#000;} Y Y N N N N N N
_ .eq {_color:#000;} Y N N N N N N N
+ .eq {+color:#000;} Y Y N N N N N N
- .eq {-color:#000;} Y N N N N N N N
> .eq {>color:#000;} Y Y N N N N N N
.eq {color:#000;} N N Y Y N Y N N
9 .eq {color:#0009;} Y Y Y Y N N N N
9 .eq {color:#000;} N N NY Y N N N N
:root .xx{xxx:xxx9;} :root .eq {color:#a009;} N N N Y N N N N
*+ .eq {*+color:#000;} Y Y N N N N N N
*- .eq {*-color:#000;} Y N N N N N N N
*html *html .eq {color:#000;} Y N N N N N N N
*+html *+html .eq {color:#000;} N Y N N N N N N
html* html* .eq {color:#000;} Y Y N N N N N N
[; .eq {color:red;[;color:blue;} Y Y N N N N Y Y
html>body html>body .eq {color:blue;} N Y Y Y Y Y Y Y
html>/**/body html>/**/body .eq {color:blue;} N N Y Y Y Y Y Y
html/**/>body html/**/>body .eq {color:blue;} N Y Y Y Y Y Y Y
@media all and (min-width:0px){} @media all and (min-width:0px){.eq {color:#000;}} N N N Y Y Y Y Y
*:first-child+html *:first-child+html .eq {color:blue;} N Y N N N N N N
*:first-child+html{} *html *:first-child+html{} *html .eq {color:blue;} Y N N N N N N N
@-moz-document url-prefix(){} @-moz-document url-prefix(){ .eq {color:blue;}} N N N N Y N N N
@media screen and (-webkit-min-device-pixel-ratio:0){} @media screen and (-webkit-min-device-pixel-ratio:0){.eq {color:blue;}} N N N N N N Y Y
@media all and (-webkit-min-device-pixel-ratio:10000), not all and (-webkit-min-device-pixel-ratio:0){} @media all and (-webkit-min-device-pixel-ratio:10000), not all and (-webkit-min-device-pixel-ratio:0){.eq {color:blue;}} N N N N N Y N N
body:nth-of-type(1) body:nth-of-type(1) .eq {color:blue;} N N N Y Y Y Y Y
标志符 示例 IE6 IE7 IE8 IE9 FF OP SA CH

FF:firefox; OP:opera; SA:safari; CH:chrome; Y代表支持,N代表不支持。

立即学习前端免费学习笔记(深入)”;

注意事项:

  • ·

    由于各浏览器更新神速,所以有些HACK可能会有变化,所以请大家注意。

  • ·

    [;此种方式会影响后续样式,不可取。

  • ·

    9并非对所有属性都能区分IE8和IE9.比如:background-color可以,但background不可以,还有border也不可以。所以在实际用时要测试下。

  • ·

    当同时出现;*;_;时,推荐将写在*和_前面。例如:color:red;*color:blue;_color:green;可行,否则IE7和IE6里的效果会失效。但border例外,放在前后都可以。保险起见,还是放在前面。

推荐写法:

demo:

        .eq {             color:#f00;/*标准浏览器*/             color:#f30;/*IE8,IE9,opera*/             *color:#c00;/*IE7及IE6*/             _color:#600;/*IE6专属*/            }        :root .eq {color:#a009;}/*IE9专属*/        @media all and (-webkit-min-device-pixel-ratio:10000), not all and (-webkit-min-device-pixel-ratio:0){.eq {color:#450;}}/*opera专属*/        @media screen and (-webkit-min-device-pixel-ratio:0){.eq {color:#879;}}/*webkit专属*/        @-moz-document url-prefix(){ .eq {color:#4dd;}}/*firefox专属*/  

    

以上就是CSS3的浏览器兼容问题的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1609626.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月24日 00:53:38
下一篇 2025年12月24日 00:53:55

相关推荐

  • CSS3制作粉红色登录界面

    这次给大家带来CSS3制作粉红色登录界面,CSS3制作粉红色登录界面的注意事项有哪些,下面就是实战案例,一起来看一下。 心血来潮,想学学 material design 的设计风格,就尝试完成了一个登录页面制作. 这是整体效果. 感觉还不错吧,结尾会附上代码 在编写的过程中,没有使用任何图片或者字体…

    2025年12月24日 好文分享
    000
  • css3视觉特效的实现

    这次给大家带来css3视觉特效的实现,实现css3视觉特效的注意事项有哪些,下面就是实战案例,一起来看一下。 一、单侧阴影 1、box-shadow属性的应用,格式:h-shadow v-shadow blur spread color inset属性取值介绍 h-sahdow:水平阴影的位置,允许…

    2025年12月24日 好文分享
    000
  • css3实现动画自行车效果

    这次给大家带来css3实现动画自行车效果,css3实现动画自行车效果的注意事项有哪些,下面就是实战案例,一起来看一下。 首先来看看实现的效果图(静态): 实例源码: 自行车 * { margin: 0; padding: 0 } ol, ul { list-style: none/*去掉圆点或数字*…

    2025年12月24日
    000
  • css3的新属性box-sizing详解

    这次给大家带来css3的新属性box-sizing详解,css3属性box-sizing的注意事项有哪些,下面就是实战案例,一起来看一下。 在了解box-sizing之前,让我们来稍稍回顾一下盒子模型,模型分为:标准盒模型+IE盒模型。那这有什么区别呢?见图所示: 从上图可以看到标准 w3c 盒子模…

    2025年12月24日 好文分享
    000
  • CSS3实现鼠标悬停时边框旋转特效

    这次给大家带来CSS3实现鼠标悬停时边框旋转特效,CSS3实现鼠标悬停时边框旋转特效的注意事项有哪些,下面就是实战案例,一起来看一下。 纯CSS3实现的鼠标悬停时边框旋转的效果: 实现代码如下,代码中注释已经比较详细,就不再多说了: Document body { width: 40rem; hei…

    2025年12月24日
    000
  • CSS3中nth-child与nth-of-type的区别以及使用技巧

    这次给大家带来CSS3中nth-child与nth-of-type的区别以及使用技巧,使用nth-child与nth-of-type的注意事项有哪些,下面就是实战案例,一起来看一下。 CSS3中nth-child与nth-of-type的区别其实很简单::nth-of-type为什么要叫:nth-o…

    2025年12月24日
    000
  • CSS怎么处理浏览器的默认样式

    这次给大家带来CSS怎么处理浏览器的默认样式,CSS处理浏览器的默认样式注意事项有哪些,下面就是实战案例,一起来看一下。 发现 最近在调整网页的格式发现网页底部总是有一个10像素左右的空格。 通过用Chrome流浪器的审查元素发现有一个叫user agent stylesheet设置整个form的m…

    2025年12月24日
    000
  • CSS3实现点击放大的动画实例

    这次给大家带来CSS3实现点击放大的动画实例,CSS3实现点击放大动画实例的注意事项有哪些,下面就是实战案例,一起来看一下。 前言 最近在工作中遇到一个需求,实现的效果是当点击商品图片右上的收藏按钮触发放大动画,后来通过查找相关的资料,发现利用css3:@keyframes animation即可实…

    2025年12月24日
    000
  • css3多类选择器使用详解

    这次给大家带来css3多类选择器使用详解,使用css3多类选择器的注意事项有哪些,下面就是实战案例,一起来看一下。 下面一段代码给大家介绍css3类选择器之结合元素选择器和多类选择器用法,具体代码如下所示: Title .p2{font-size:30px;} /*结合元素选择器*/ p.p1{co…

    好文分享 2025年12月24日
    000
  • React与CSS3实现微信拆红包动画

    这次给大家带来React与CSS3实现微信拆红包动画,React与CSS3实现微信拆红包动画的注意事项有哪些,下面就是实战案例,一起来看一下。 微信红包曾经引爆过一系列的营销热潮,相信大家对于这种红包形式并不陌生,这里本着娱乐至上的精神用React简单地实现了拆红包的动画效果,供大家一起交流学习 用…

    2025年12月24日
    000
  • 用CSS3实现头像旋转效动画

    这次给大家带来用CSS3实现头像旋转效动画,用CSS3实现头像旋转效动画的注意事项有哪些,下面就是实战案例,一起来看一下。 鼠标未放上效果: 鼠标放上之后旋转效果: transition: all 2.0s;表示所有的属性变换在2秒内完成; transform: rotate(360deg);表示图…

    2025年12月24日
    000
  • CSS3实现进度条的俩种方法

    这次给大家带来CSS3实现进度条的俩种方法,CSS3实现进度条的注意事项有哪些,下面就是实战案例,一起来看一下。 效果图如下:     第一种姿势如下  先上代码 /*对应CSS*/ #progress{ width: 300px; height: 30px; border:1px solid #c…

    2025年12月24日 好文分享
    000
  • 用css3画个同心圆

    这次给大家带来用css3画个同心圆,用css3画个同心圆的注意事项有哪些,下面就是实战案例,一起来看一下。 基本思路 首先你得画三个圆吧,那三个圆怎么重叠到一块呢?这个就得靠-margin来控制了。 css #t1 { float:left; width:150px; height:150px; b…

    2025年12月24日
    000
  • css3取消上下边的列表间隔线

    这次给大家带来css3取消上下边的列表间隔线,css3取消上下边的列表间隔线的注意事项有哪些,下面就是实战案例,一起来看一下。 效果图:   方法一:通用兄弟选择器( ~ ) Document ul {margin: 0; padding: 0;} li { list-style: none; he…

    2025年12月24日
    000
  • css3的移动属性

    这次给大家带来css3的移动属性,使用css3移动属性的注意事项有哪些,下面就是实战案例,一起来看一下。 transform功能 放缩 使用sacle方法实现文字或图像的放缩处理,在参数中指定缩放倍率,比如sacle(0.5)表示缩小50%,例子如下: scale方法使用示例 p { width: …

    2025年12月24日 好文分享
    000
  • 用CSS3实现无限循环的无缝滚动效果

    这次给大家带来用CSS3实现无限循环的无缝滚动效果,CSS3实现无限循环的无缝滚动效果注意事项有哪些,下面就是实战案例,一起来看一下。 有时候在页面的某个模块中,需要无限循环的滚动一些消息。那么如果我们用js实现无缝衔接滚动的思路是什么呢(比如我们这个模块是向上滚动的)? 克隆A一份完全一样的数据B…

    2025年12月24日
    000
  • 用CSS3实现发光方格边框

    这次给大家带来用CSS3实现发光方格边框,用CSS3实现发光方格边框的注意事项有哪些,下面就是实战案例,一起来看一下。 本文介绍的是一个使用伪元素来实现边框逐渐发光的代码,主要用到scale和opacity这两个属性。下面来看看详细的介绍: 效果图如下: HTML代码: @@##@@ 前端开发博客 …

    2025年12月24日
    000
  • 使用CSS3制作进度条

    这次给大家带来使用css3制作进度条,使用css3制作进度条的注意事项有哪些,下面就是实战案例,一起来看一下。 这里只是一个小demo,一个用CSS3写的进度条。 如图所示: 具体代码如下: new document .process-bar{ width:100px; display:inline…

    2025年12月24日
    000
  • CSS3中display属性布局详解

    这次给大家带来CSS3中display属性布局详解,CSS3中display属性布局的注意事项有哪些,下面就是实战案例,一起来看一下。 最近在学习微信小程序,在设计首页布局的时候,新认识了一种布局方式display:flex .container { display: flex; flex-dire…

    2025年12月24日
    000
  • 用css3实现圆圈进度条

    这次给大家带来用css3实现圆圈进度条,用css3实现圆圈进度条的注意事项有哪些,下面就是实战案例,一起来看一下。 在开发微信小程序的时候,遇到圆形进度条的需求。使用canvas绘图比较麻烦: 1、为了实现在不同屏幕上面的适配,必须动态的计算进度条的大小; 2、在小程序中,canvas的画布具有最高…

    2025年12月24日
    000

发表回复

登录后才能评论
关注微信