[13]CSS3 前缀和rem
来源:互联网 发布:java后端开发教程 编辑:程序博客网 时间:2024/05/18 22:13
一.CSS3 前缀
HTML5 中 CSS 在发展中实行标准化的一些问题,重点探讨 CSS3 中新属性前缀问题和新的单位 rem。
在 CSS3 的很多新属性推出时,这些属性还处在不太稳定的阶段,随时可能被剔除。而此时的浏览器厂商为了实现这些属性,采用前缀方法。各大厂商前缀列表如下:
之前用过几个 CSS3 的新属性,比如:box-shadow、border-radius、opacity等。这几个属性在前面的使用中,并没有添加所谓的浏览器厂商前缀。那是因为,这些属性已经在主流浏览器或版本成为了标准。具体进化步骤如下:
1.属性尚未提出,这个属性所有浏览器不可用;
2.属性被提出,但未列入标准,浏览器厂商通过私有前缀来支持该属性;
3.属性被列入标准,可以使用前缀或不使用前缀来实现属性特性;
4.属性不需要再使用前缀,所有浏览器都稳定支持。
就拿border-radius 举例,它是 CSS3 的标准属性。早期的时候处于实验阶段,尚未列入标准时,需要使用厂商前缀。具体浏览器支持度如下:
如果是手机等移动端一般采用的是 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.Safarifor Windows 已被苹果公司在 2012年放弃,遗留版本为 5.1.7。
最后说明:W3C 官方的立场表示实验阶段的属性仅为了测试,未来有可能修改或删除。而大量的开发者也认为在实际项目中不应该使用前缀,而使用一种优雅降级保证一定的用户体验,而通过渐进增减的方式让新版高级浏览器保证最高的效果。
二.长度单位 rem
CSS3 引入了一些新的尺寸单位,这里重点推荐一个:rem 或者成为(根 em)。目前主流
的现代浏览器都很稳定的支持。它和 em、百分比不同的是,它不是与父元素挂钩,而是相
对于根元素<html>
的文本大小来计算的,这样能更好的统一整体页面的风格。
//首先,来一段 HTML<h1>标题<em>小标题</em></h1><p>我是一个段落,我是一段<code>代码</code></p>
//其次来一段 CSShtml { font-size: 62.5%;}h1 { font-size: 3em;}p { font-size: 1.4em;}
这里做几个解释,我们在之前的 Web 设计中大量使用了 px 单位进行布局。因为,早期的固定布局使用 px 较为方便,逐渐养成了这种习惯。而使用 em 单位其实更加灵活,尤其是在修改样式时,只需要修改一下挂钩元素的那个大小即可,无须每个元素一个个修改。但就算是 em,还是有一定问题。网页默认的字号大小为 16px,然后通过<html>
设置62.5%,将网页基准设置为10px。而<h1>
设置为 3em,就是自身大小的 3 倍;<p>
设置为1.4em,就是10px 的 1.4 倍,即 14px。
现在问题来了,<code>
里面的文本想设置 11px,怎么办呢?设置 1.1em 吗?不对,因为它挂钩的父元素不是<html>
而是<p>
变成了 14px 的 1.1 倍了,而想设置 11px,则需要设置 0.786 倍才行。但是,这样的计算量太大了。所以,W3C 推出了直接基于根元素单位:
rem。
//直接基于<html>的单位code { font-size: 1.1rem;}
- [13]CSS3 前缀和rem
- CSS3前缀和rem
- css3前缀和rem
- css3前缀、rem和浏览器css3支持版本
- 【HTML5学习笔记】27:CSS3前缀和新单位rem
- CSS 前缀和rem(20160825-0025)
- CSS3 rem
- css3前缀
- css3前缀
- css3大小单位px、pt、em和rem的区别
- css3大小单位px、pt、em和rem的区别
- 响应式布局 css3 media 媒体查询 和js+rem
- css3 rem如何使用
- rem用法 css3
- CSS3中的rem适配
- CSS3中的rem单位
- css3中rem详解
- CSS3:REM设置字体大小
- 构建知识图谱,让自己更值钱
- 263. Ugly Number
- 【LeetCode】 023. Merge k Sorted Lists
- 【网络流24题】方格取数问题
- 80老翁谈人生(307):老翁的悲哀无处诉说
- [13]CSS3 前缀和rem
- 新手入门:Spring的一些学习方法及意见
- poj 1755 Triathlon (半平面交求解不等式组)
- 并查集1.0(找集合个数 hdu 1232 1213)
- 关于高斯滤波的一些理解
- 8. String to Integer (atoi) 对于输入情况的考察
- Ubuntu的LAMP与相关软件安装设置
- 软件架构(CS结构/BS结构)
- 最小生成树1.0(hdu1233 还是畅通工程)