CSS3前缀和rem长度单位

学习要点:
1.CSS3前缀
2.长度单位rem

本章主要探讨HTML5中CSS在发展中实行标准化的一些问题,重点探讨CSS3中新属性前缀问题和新的单位rem。

一 CSS3前缀
在CSS3的很多新属性推出时,这些属性还处在不太稳定的阶段,随时可能被剔除。而此时的浏览器厂商为了实现这些属性,采用前缀方法。各大厂商前缀列表如下:

                   浏览器                              厂商前缀

              Chrome、Safari                     -webkit-

                   Opera                               -o-

                  Firefox                               -moz-

            Internet Explorer                     -ms-

我们之前学习过几个CSS3的新属性,比如:box-shadow、border-radius、opacity 等。这几个属性我们在前面的使用中,并没有添加所谓的浏览器厂商前缀。那是因为,这些属性已经在主流浏览器或版本成为了标准。具体进化步骤如下:

1.属性尚未提出,这个属性所有浏览器不可用;

2.属性被提出,但未列入标准,浏览器厂商通过私有前缀来支持该属性;

3.属性被列入标准,可以使用前缀或不使用前缀来实现属性特性;

4.属性不需要再使用前缀,所有浏览器都稳定支持。

我们就拿border-radius举例,它是CSS3的标准属性。早期的时候处于实验阶段,尚未列入标准时,需要使用厂商前缀。具体浏览器支持度如下:

        属性               浏览器               带前缀版本               不带前缀版本 标准/实验

 border-radius                IE                           不支持                     9.0+

                                 Firefox             3.0需带-moz-              4.0+

                  Safari             3.1需带-webkit-           5.1+        标准

                             Chrome               4.0                     5.0+

                             Opera              不支持                            10.5+

如果是手机等移动端一般采用的是IOS或安卓系统,那么基本上它的引擎是webkit,直接参考-webkit-即可。在CSS3手册上,Chrome支持border-radius的版本为13.0,而部分教材和文章上写到只要5.0。当然,这里可能表达的含义可能不同。而截至到2015年4月份最新的Chrome版本已经到41.0了,所以,不管是5.0还是13.0都是老古董了,没必要深究。Opera支持border-radius版本为11.5,而目前的版本是28.0,也无伤大雅了。而被列入标准的box-shadow和opacity基本与border-radius前缀版本一致。

因为目前处在标准阶段,没必要写前缀了

div {
border-radius: 50px;
}

实验阶段的写法 

div {
-webkit-border-radius: 50px;
-moz-border-radius: 50px;
border-radius: 50px;
}

实验阶段的写法有三句,分别解释一下:-webkit-表示Chrome浏览器的私有属性前缀、-moz-表示Firefox私有属性前缀,如果是处于实验阶段的旧版本浏览器,那么不支持border-radius,从而通过厂商前缀的方式来支持。如果是新版浏览器,已经是处于标准阶段,那么又有两种说法:1.如果新版浏览器废弃了前缀,那么前缀写法就不支持了,仅支持标准写法;2.如果新版浏览器没有废弃前缀,那么两种写法都可以,但要注意顺序,且属性值要保持一致。

如果同时出现四个前缀+一个标准写法,四个前缀是当实验阶段时让四种引擎的浏览器厂商支持自己的私有属性,一个标准写法表示当这个属性列入标准后,使用新版浏览器运行时直接执行这个标准属性。

前缀写法写在标准后面,且值不一样,就会出现问题

div {
border-radius: 50px;
-webkit-border-radius:100px;
}

特别注意:1.IE的前缀-ms-,和Opera的前缀-o-,在border-radius中不存在;2.现在的Opera浏览器也支持-webkit-前缀,-webkit-border-radius就能支持;3.Safari for Windows已被苹果公司在2012年放弃,遗留版本为5.1.7。

最后说明:W3C官方的立场表示实验阶段的属性仅为了测试,未来有可能修改或删除,而大量的开发者也认为在实际项目中不应该使用前缀,而使用一种优雅降级保证一定的用户体验,而通过渐进增减的方式让新版高级浏览器保证最高的效果。

二 长度单位rem
CSS3引入了一些新的尺寸单位,这里重点推荐一个:rem或者成为(根em)。目前主流的现代浏览器都很稳定的支持。它和em、百分比不同的是,它不是与父元素挂钩,而是相对于根元素<html>的文本大小来计算的,这样能更好的统一整体页面的风格。

这里做几个解释,我们在之前的Web设计中大量使用了px单位进行布局。因为,早期的固定布局使用px较为方便,逐渐养成了这种习惯。而使用rem单位其实更加灵活,尤其是在修改样式时,只需要修改一下挂钩根元素的那个大小即可,无须每个元素一个个修改。W3C推出了直接基于根元素单位:

html{
font-size: 5px;
}
h1{
font-size: 3rem;
}
h2{
font-size: 2.5rem;
}
h3{
font-size: 2rem;
}
h4{
font-size: 1.5rem;
} <h1>这是标题1</h1>
<h2>这是标题2</h2>
<h3>这是标题3</h3>
<h4>这是标题4</h4>

简单的说就是,在html根设置一个文字大小的像素px,然后html里面的元素用rem单位来定义,如html根元素文字大小为5px,里面的h1标签为3rem,也就是h1的文字大小是根5px的3倍,5乘以3就是15px,以此计算,这样如果以后想改变页面整体的大小,只需要改变根文字大小即可,因为其他标签会根据根大小来自适应

注意:html根文字大默认是16px,所以调试阶段根一般为16px

rem浏览器支持情况

                  浏览器                             rem单位

                  Opera                             11.6+

                  Firefox                            3.6+

                  Safari                              5.0+

                  Chrome                           6.0+

                    IE                                 9.0+

单位计算

要设置的像素除以根基准=rem单位

rem单位乘以根基准=像素

换算子元素宽度站父元素宽度的百分之几,子元素宽度除以父元素宽度=子元素宽度站父元素宽度的百分之几

将子元素宽度站父元素宽度的百分之几换算成像素,子元素宽度的百分之几乘以父元素的宽度=子元素的像素

第七十七节,CSS3前缀和rem长度单位的更多相关文章

  1. 第三百七十七节,Django+Xadmin打造上线标准的在线教育平台—apps目录建立,以及数据表生成

    第三百七十七节,Django+Xadmin打造上线标准的在线教育平台—apps目录建立,以及数据表生成 apps目录建立 我们创建一个apps目录,将所有的app放到apps目录里去,这样方便管理,也 ...

  2. 第 20 章 CSS3 前缀和 rem

    学习要点: 1.CSS3 前缀 2.长度单位 rem 主讲教师:李炎恢 本章主要探讨 HTML5 中 CSS 在发展中实行标准化的一些问题,重点探讨 CSS3 中新属性前缀问题和新的单位 rem. 一 ...

  3. 第二百七十七节,MySQL数据库-数据表、以及列的增删改查

    MySQL数据库-数据表.以及列的增删改查 1.创建一个表 CREATE(创建) TABLE(表) ENGINE(引擎) ENGINE=INNODB(引擎)还有很多类引擎,这里只是简单的提一下INNO ...

  4. 第一百七十七节,jQuery,知问前端--概述及 jQuery UI

    jQuery,知问前端--概述及 jQuery UI 学习要点: 1.项目介绍 2.jQuery UI 3.UI 主题 一.项目介绍 我们重点仿照“知乎”的架构模式来搭建界面和布局,以及大部分前端功能 ...

  5. 第三百八十七节,Django+Xadmin打造上线标准的在线教育平台—网站上传资源的配置与显示

    第三百八十七节,Django+Xadmin打造上线标准的在线教育平台—网站上传资源的配置与显示 首先了解一下static静态文件与上传资源的区别,static静态文件里面一般防止的我们网站样式的文件, ...

  6. 第三百五十七节,Python分布式爬虫打造搜索引擎Scrapy精讲—利用开源的scrapy-redis编写分布式爬虫代码

    第三百五十七节,Python分布式爬虫打造搜索引擎Scrapy精讲—利用开源的scrapy-redis编写分布式爬虫代码 scrapy-redis是一个可以scrapy结合redis搭建分布式爬虫的开 ...

  7. 第三百一十七节,Django框架,缓存

    第三百一十七节,Django框架,缓存 由于Django是动态网站,所有每次请求均会去数据进行相应的操作,当程序访问量大时,耗时必然会更加明显,最简单解决方式是使用:缓存,缓存将一个某个views的返 ...

  8. centos samba/squid 配置 samba配置 smbclient mount fstab自动挂载samba curl -xlocalhost:3128 www.qq.com squid配置 3128 DNSPOD 第二十七节课

    centos  samba/squid 配置  samba配置 smbclient  mount fstab自动挂载samba curl -xlocalhost:3128 www.qq.com squ ...

  9. (转)css3前缀

    CSS3的前缀是一个浏览器生产商经常使用的一种方式.它暗示该CSS属性或规则尚未成为W3C标准的一部分.看看都有哪些前缀: -webkit(chrome) -moz(firefox) -ms(ie) ...

随机推荐

  1. Access一些常用的SQL语句

    您可以将 Microsoft Office Access 2013 用作创建.修改数据库以及处理数据的工具,还可将 Office Access 2013 用作服务器数据库管理系统(如 Microsof ...

  2. JavaEE XML XPath

    JavaEE XML XPath @author ixenos XPath技术 1 引入 问题:当使用dom4j查询比较深的层次结构的节点(标签,属性,文本),比较麻烦!!!需要遍历DOM树的众多节点 ...

  3. 转:iOS程序main函数之前发生了什么

    原文地址:http://blog.sunnyxx.com/2014/08/30/objc-pre-main/ 我是前言 一个iOS app的main()函数位于main.m中,这是我们熟知的程序入口. ...

  4. C#删除只读文件或文件夹(解决File.Delete无法删除文件)

    引用: http://www.jb51.net/article/72181.htm   C#删除只读文件的方法: if (File.GetAttributes(FFName).ToString().I ...

  5. NGUI中的Tween的委托使用

    public TweenPosition tweenIn; public TweenScale tweenOut; EventDelegate In = new EventDelegate(this, ...

  6. 数据库中Schema、Database、User、Table的关系[转]

    数据库的初学者往往会对关系型数据库模式(schema).数据库(database).表(table).用户(user)之间感到迷惘,总感觉他们的关系千丝万缕,但又不知道他们的联系和区别在哪里,对一些问 ...

  7. http&https&证书&数字签名

    http协议 http是超文本传输协议,是用来网络间传输数据.底层是tcp协议(传输控制协议). 是一种面向连接的主机对主机层的可靠传输,这里的可靠是指数据丢失极小.Tcp建立一次连接需要经过3次握手 ...

  8. [Poi2015]

    [POI2015]Łasuchy 一看以为是sb题 简单来说就是每个人获得热量要尽量多 不能找别人 首先这道题好像我自己找不到NIE的情况 很容易想到一个优化 如果一个数/2>另一个数 那么一定 ...

  9. [M]表格中的天正文字转换问题

    若表格中含有天正文字,则不能使用MagicTable直接转换,需要先EXPLODE命令分解(快捷键为x),天正单行文字和天正多行文字都可以使用该命令分解为普通AutoCAD单行文字,分解后即可正常转换 ...

  10. Struts2的DMI跟SMI

    我使用的Struts2的版本是2.5.2,今天在使用Struts2的DMI(动态方法调用)的时候出现了一个有趣的问题,我先把我的配置及代码展示一下: web.xml <filter> &l ...