一些试验性CSS属性二【well】

来源:互联网 发布:量化数据分析方法 编辑:程序博客网 时间:2024/05/02 11:20

-moz-border-top-colors

这个属性可以归类为’养眼’。它让你可以在border宽度大于1px的时候为其设置不同的边框颜色。当然-moz-border-bottom-colors, -moz-border-left-colors 和-moz-border-right-colors也是可用的。

不爽的是,没有一个简写的-moz-border-colors 缩写,所以每个边框都要分开设置。同时,border-width要和给到的颜色的数量保持一致,否则,最后的那个颜色值会填充到剩下的宽度。

示例

这个例子中,元素的左右两边边框会是标准的橙色,上下则有种类似渐变的颜色——红黄蓝三色。

div {
border: 3px solid orange;
-moz-border-top-colors: red yellow blue;
-moz-border-bottom-colors: red yellow blue;
}

浏览器支持: Gecko.

扩展阅读: Mozilla Developer Network

混合属性

-webkit-user-select 和 -moz-user-select

或许你常常不希望用户在你的网站上选择文本,无论是否是出于版权的原因。通常大家会有js来实现,另一个方案就是,将-webkit-user-select 和-moz-user-select 的值设为none。

请谨慎使用这个属性:因为大部分用户是来查看信息的,他们可以复制并存储下来以备将来之用,所以这种方法既无用也无效。如果你禁用了复制粘贴功能,用户还是可以通过查看源文件来获取到他们想要的内容。搞不懂这个属性为什么会被webkit和gecko支持。

浏览器支持: WebKit, Gecko.

扩展阅读: Safari Developer Library, Mozilla Developer Network

-webkit-appearance 和 -moz-appearance

你曾经想过将一张图片伪装成单选按钮么?或者,一个输入框看起来像一个复选框?那么现在appearance 出现了。即便你并不想要让一个链接看起来总是像个按钮,下面这个例子也可以让你了解到,只要你愿意就可以做到的:

示例

a {
-webkit-appearance: button;
-moz-appearance: button;
}

浏览器支持: WebKit, Gecko.

扩展阅读: Safari Developer Library, Mozilla Developer Network, Mozilla Developer Network,CSS3 appearance简介

text-align: -moz-center/-webkit-center

这是一个属性(或者精确来说,是个“属性值”)的存在很让人惊喜啊。要让一个块级元素居中,大家通常将其设置为margin:0 auto。但是,现在你也可以将元素的容器的text-align属性设置为-moz-center 和 -webkit-center。相应的,你也可以通过设置-moz-left、-webkit-left或-moz-right、-webkit-right将元素居左或者居右。

浏览器支持: WebKit, Gecko.

扩展阅读: Safari Developer Library

CSS 2.1属性

counter-increment

你是否经常希望你可以让一个有序列表或者一篇文章的所有标题自动编号?不幸的是,目前尚未有CSS3属性支持。但是在CSS 2.1中,counter-increment 提供了一个解决方案。这就意味着它已经出现好些年了,而且在IE8中就已经支持了。

配合:before 伪元素和content 属性,counter-increment可以为所有的HTML标签添加自动的编号。即便是嵌套的编码也是支持的。

示例

要给标题编码,先将计算器重设一下:

body {counter-reset: thecounter}

下面的样式让每一个<h1>标题都有一个”Section”的前缀,然后其后面的数字自动的递增1(这是默认的,可以省略掉),这里thecounter是计算器的名称:

.counter h1:before {
counter-increment: thecounter 1;
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+.

扩展阅读: W3CCSS 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来启用kerningligatures

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属性

译自:The Future Of CSS: Experimental CSS Properties


原创粉丝点击