CSS的未来:一些试验性CSS属性
尽管现代浏览器已经支持了众多的CSS3属性,但是大部分设计师和开发人员貌似依然在关注于一些很“主流”的属性,如border-radius、box-shadow或者transform等。它们有良好的文档、很好的测试并且最常用到,所以如果你最近在设计网站,你很难能脱离它们。但是,隐藏在浏览器的大宝库中是一些高级的、被严重低估的属性,但是它们并没有得到太多的关注。或许它们中的一些应该这样(被无视),但是其它的属性应该得到更多的认可。最伟大的财富隐藏在Webkit的下面,而且在iPhone、iPad和Android apps的时代,开始了解它们会非常有用。就连Firefox等使用的Gecko引擎,也提供了一些独特的属性。在本文中,我们将看一下鲜为人知的CSS 2.1和CSS3属性以及它们在现代浏览器中的支持情况。
说明: 对于每个属性,我们这里规定:”WebKit” 即指代使用Webkit内核的浏览器(Safari、Chrome、iPhone、iPad、Android等),”Gecko“指代采用Gecko内核的浏览器(Firefox等)。然后有的属性是官方CSS 2.1. 规范的一部分,这意味着更多的浏览器甚至一些古老的浏览器也会支持它们。最后,一个CSS3 的标签标明遵守这个标准,被最新的浏览器版本——比如Firefox 4、Chrome 10、Safari 5、Opera 11.10以及IE9支持的属性。
WebKit特有属性
;
content:"Section"counter(thecounter)":";
}
示例
对于一个嵌套编码的列表,重设计数器,然后关掉<ol>的自动编码,因为它是无嵌套的:
ol {
counter-reset: section;
list-style-type: none;
}
然后,每个<li>设置为自动编号,分割符是一个点(.),后面跟着一个空格
li:before{
counter-increment: section;
content: counters(section,".")"";
}
HTML代码:
<ol>
<li>item</li> <!-- 1 -->
<li>item <!-- 2 -->
<ol>
<li>item</li> <!-- 1.1 -->
<li>item</li> <!-- 1.2 -->
</ol>
</li>
<li>item</li> <!-- 3 -->
<ol>
浏览器支持: CSS 2.1.,所有的现代浏览器,IE 7+.
扩展阅读: W3C,CSS content, counter-increment 和 counter-reset详解
quotes
你会因为你的CMS不知道如何正确转换引用符号而纠结么?那么开始使用quotes属性吧。这样你就可以自定义任何符号了。然后你就可以用:before和:after伪元素为任何期望的元素指定引号了,悲催的是,webkit浏览器不支持这个属性——经测试,chrome 11已经开始支持这个属性了(之前的版本没有测试)。
示例
前面的两个符号决定第一级引用内容的引号,后面的两个用于二级引用,以此类推:
q {
quotes: '«' '»' "‹" "›";
}
下面两行用于为选定元素指定引号:
q:before{content:open-quote}
q:after{content:close-quote}
这样,<p><q>This is a very <q>nice</q> quote.</q></p>看起来将会是酱紫的:
«This is a very ‹nice› quote.»
浏览器支持: CSS 2.1.,除了WebKit,IE 7和IE6的所有现代浏览器。不过chrome是支持的。。。
扩展阅读: W3C
问题:要直接的添加符号,CSS文档必须要设置为UTF-8吗?这是一个很纠结的问题。遗憾的是,我不能给出一个明确的答案。我的经验是,不必要设置什么特定的字符集,然后utf-8字符集可能会出错,因为它显示错掉的字符(比如”»”)。而是用iso-8859-1 字符集,一切就都是正常的。
W3C这样描述:”由于上个例子中由’quotes’定义的引号方便的定位在电脑键盘上,高质量的字符则需要不同的10646字符集。”
你或许听说过但是没有记住的CSS3属性
接近尾声,让我们重温一些不太流行的以及不像border-radius和box-shadow那样被广泛需求的CSS3属性。
text-overflow
或许你会常常遇到这个问题:某个容器对于其内的文字来说太小了,然后你不得不用javascript来截断字符串并添加”…”符号以避免文字溢出。
忘掉它吧!采用CSS3和text-overflow: ellipsis,如果文字比它的容器的宽度要长的话,你就可以强制文字以”…”结束它。唯一的要求是设置overflow:hidden。不幸的是,Firefox不支持这个属性,但是貌似在最近的版本中将会提供支持。
示例
div {
width: 100px;
text-overflow: ellipsis;
}

浏览器支持: CSS 3,所有浏览器的最新版本,除了Firefox,IE从IE6开始支持,据说Firefox到6.0也会提供支持的——希望如此吧。
扩展阅读: W3C
word-wrap
当文字在一个比较窄的容器中时,它的某个部分可能会因为太长而不能正确的换行。比如链接就常常引起问题。如果你不想用overflow: hidden隐藏溢出的文字,那么你就可以设置 word-wrap 为break-word,它可以让字符串在到达容器的宽度限制时换行。
示例
div {
width: 50px;
word-wrap: break-word;
}

浏览器支持: CSS 3,所有现代浏览器。
扩展阅读: W3C
resize
如果你在使用Firefox或Chrome,那么你肯定注意到了文本框的右下角默认有个小的手柄,它可以让你调整它们的大小。这个标准的行为由CSS3 属性 resize: both实现。
但是它并不仅限于textarea。它可以用于所有的HTML元素。horizontal 和 vertical 值用于控制调整水平方向还是垂直方向。
请注意:对于display:block元素,如果设置了overflow:visible,resize属性将会无效(这一点原文描述不详——by 神飞)。
浏览器支持: CSS3, 除了Opera和IE以为的其它最新的浏览器。
扩展阅读: Safari Developer Library
background-attachment
当你为一个设置了overflow:auto的元素指定背景图片的时候,当内容太多而出现滚动条后,拖动滚动条就会发现背景图片的位置是固定的,而不是随着滚动条移动。如果你想要背景图片随着内容而滚动,可以设置background-attachment:local。

浏览器支持: CSS 3,除了Firefox以外的所有现代浏览器,Firefox是支持background-attachment属性的,只是不支持local值.
扩展阅读: W3C
text-rendering
随着越来越多的网站开始用@font-face来渲染文字,易读性开始被关注了。小号字体上,文字会更容易出现。由于目前还没有CSS属性控制显示在线字体的微妙细节,你可以利用text-rendering来启用kerning 和 ligatures。
Gecko 和WebKit 浏览器处理这个属性的方式很不一样。前者默认启用这个特性,而后者,你需要将其设置为optimizeLegibility。

浏览器支持: CSS3, 所有WebKit 和Firefox浏览器.
扩展阅读: W3C
transform: rotateX/transform: rotateY
如果你已经开始使用CSS3,那么你可能会比较熟悉transform: rotate(),这个在z轴上旋转元素的属性。
但是你是否也知道,它也可以更深入的旋转的(比如,围绕x轴和y轴)? 这些变形结合-webkit-backface-visibility: hidden会更合适。
示例
如果你鼠标经过这个元素,它将会旋转180°,倒转过来:
div:hover {
transform:rotateY(180deg);
}

小技巧:如果只是映射一个元素,你可以设置transform为rotateX(180deg) (对应rotateY)或者设置transform 为scaleX(-1) (对应scaleY).
浏览器支持: CSS3, WebKit、firefox、Opera以及IE9
扩展阅读: W3C,你需要知道的CSS3 动画技术
结语
正如你希望见到的,还有很多未知的很有用的属性。他们中的很多仍然处于试验性阶段并且可能一直这样甚至最终可能会被浏览器摈弃。而有些有望在后续版本中被所有的浏览器持。然而,很难判断他们中的一些是好是坏,WebKit特有的属性随着iOS和Android的成功显得越来越重要。当然,一些CSS3属性多多少少已经可以使用了。如果你不喜欢私有属性,你可以将它们视为实验直到可以在代码中实现以增强用户体验。同时,W3C的CSS validator 同样支持私有属性,它会返回警告而不是错误。
CSS的未来:一些试验性CSS属性的更多相关文章
- CSS的未来
仅供参考 前言 完成<CSS核心技术与实战>这本书,已有一个多月了,而这篇文章原本是打算写在那本书里面的,但本章讲解的内容,毕竟属于CSS未来的范畴,而这一切都还不能够确定下来,所以这一章 ...
- 改变CSS世界纵横规则的writing-mode属性
改变CSS世界纵横规则的writing-mode属性 这篇文章发布于 2016年04月27日,星期三,23:12,归类于 css相关. 阅读 8292 次, 今日 71 次 by zhangxinxu ...
- CSS HTML元素布局及Display属性
本篇文章主要介绍HTML的内联元素.块级元素的分类与布局,以及dispaly属性对布局的影响. 目录 1. HTML 元素分类:介绍内联元素.块级元素的分类. 2. HTML 元素布局:介绍内联元素. ...
- 对CSS中的Position、Float属性的一些深入探讨
对CSS中的Position.Float属性的一些深入探讨 对于Position.Float我们在平时使用上可以说是使用频率非常高的两个CSS属性,对于这两个属性的使用上面可能大多数人存在一些模糊与不 ...
- 使用jquery修改css中带有!important的样式属性
当CSS中含有!important的样式属性时,普通的修改方式是会出现失败的.如下: <div class="test">使用jquery修改css中带有!import ...
- css继承性和不继承的属性。
在CSS中并不是所有的属性都是能够继承的,因此在使用时一定要了解哪些是能够继承的哪些是不能够继承的.visibility和cursor能够被所有元素继承:letter-spacing,word-spa ...
- 装载:对CSS中的Position、Float属性的一些深入探讨
对CSS中的Position.Float属性的一些深入探讨 对CSS中的Position.Float属性的一些深入探讨 对于Position.Float我们在平时使用上可以说是使用频率非常高的两个 ...
- css样式表中四种属性选择器
学习此连接的总结http://developer.51cto.com/art/201009/226158.htmcss样式表中四种属性选择器1> 简易属性 tag[class]{ font-we ...
- 【转】图解CSS padding、margin、border属性
http://www.cnblogs.com/linjiqin/p/3556497.html 图解CSS padding.margin.border属性W3C组织建议把所有网页上的对像都放在一个盒(b ...
- 什么是CSS盒模型及利用CSS对HTML元素进行定位的实现(含h5/css3新增属性)
大家好,很高兴又跟大家见面了!本周更新博主将给大家带来更精彩的HTML5技术分享,通过本周的学习,可实现大部分的网页制作.以下为本次更新内容. 第四章 css盒模型 <!DOCTYPE html ...
随机推荐
- Splash evaljs() 方法
evaljs() 方法可以执行 JavaScript 代码并返回最后一条 JavaScript 语句的返回结果 function main(splash, args) splash:go(" ...
- Java实现给定字符串的倒序输出
1.除2判中法: public static String orderDesc(String str){ byte [] bytes = str.getBytes(); for ( int i = 0 ...
- Linq-string判断忽略大小写
Coupon203Play play = dbContext.Coupon203Plays.Where(u => u.VerifyCode.Equals(verifyCode,StringCom ...
- Puppet nginx+passenger模式配置
Puppet nginx+passenger模式配置 一.简述:Puppet 运行在单台服务器上默认启动的是一个puppetmaster进程,当遇到client高并发的请求时,基于ruby的WEBRi ...
- IOS设计模式第五篇之装饰设计模式的代理设计模式
版权声明:原创作品,谢绝转载!否则将追究法律责任. 代理: 另一个装饰设计模式,代理,是一个代表或者协调另一个对象的行为机制.例如当你用一个tableView,你必须实现他里面的一个tableView ...
- LeetCode 27 Remove Element (移除数组中指定元素)
题目链接: https://leetcode.com/problems/remove-element/?tab=Description Problem : 移除数组中给定target的元素,返回剩 ...
- java.util.concurrent.Future Basics
Hereby I am starting a series of articles about future concept in programming languages (also known ...
- sencha touch 我的公用类myUtil(废弃 仅参考)
/*公共类*/ Ext.define('myUtil', { statics: { //store公用加载方法 storeLoadById: function (id) { var store = E ...
- VUE单独页面body css设置
使用created周期用JS来处理BODY的样式 export default { beforeCreate: function () { document.getElementsByTagName( ...
- 虚拟机VMware怎么完全卸载干净,如何彻底卸载VMware虚拟机
亲测好使. 1.禁用VM虚拟机服务 首先,需要停止虚拟机VMware相关服务.按下快捷键WIN+R,打开windows运行对话框,输入[services.msc],点击确定.如下图. 在服务管理中,找 ...