CSS3快速入门教程:新特性



CSS3 离我们越来越近了。尽管,很多人指出CSS3这样那样的缺陷,如标准还没有最后完善、浏览器的支持也不够全面。但是,有哪次变革毋须阵痛呢?技术的革新是大势所趋,早点熟悉它绝对没

     CSS3离我们越来越近了。尽管,很多人指出CSS3这样那样的缺陷,如标准还没有最后完善、浏览器的支持也不够全面。但是,有哪次变革毋须阵痛呢?技术的革新是大势所趋,早点熟悉它绝对没有坏处。

 

本文中,笔者带各位熟悉一下CSS3的一些新特性;并给出目前主流浏览器对它的支持情况。算是CSS3的快速入门了。

 

投入CSS3的怀抱

       很多博客文章中都会谈到CSS3的一些缺点还不够完美(尤其是浏览器的兼容性),这让很多网页设计者们对它敬而远之。不要以这个借口就不使用CSS3,没有它,我们还停留在CSS2.1阶段呢。

       其实目前大部分浏览器都是全面或部分支持CSS3的(IE<9.0除外)。尤其对于日趋壮大的手机、平板电脑用户来说。由于其内嵌的浏览器多不是IE内核的^_^。

 

基于这个原因,笔者会在下面的每个示例中明确地给出该项css3属性浏览器的兼容性,以供各位设计时参考。

 
 
 

第三方前缀(Vendor Prefixes)

        这个属性其实最初是为网页测试设计的。但在实际的应用中,利用第三方前缀来为不同浏览器设置同一属性也屡见不鲜。

目前这些前缀有
-moz- : 火狐浏览器
-webkit-: 基于webkit核心的浏览器,如Safari、Chrome。
-o-:Opera浏览器
-ms-:IE浏览器

带第三方前缀的属性为网站兼容性提供很好的便利。

 
 
 

常用CSS3新属性:

CSS圆角

       这个恐怕是使用最多的CSS3属性了。在此之前如果要为div标签或按钮添加圆角那可要大费周折地做一堆类和图片来实现。到了CSS3只要一句语法就能搞定:

使用方法:

  
  
  1. border-radius: [<length> | <%>]; 
  2. border-radius: [top-left] [top-right] [bottom-right] [bottom-left]; 
  3. border-top-left-radius: [<length> | <%>]; 

和其他CSS属性一样,可以定义一条总的规则;也可以为每个角定义不同角度。如何使用第三方前缀,用法略有区别:

WebKit(chorme浏览器,safari浏览器)

      使用border-radius定义圆角时,webkit浏览器只认前两个值。解决方法是使用长格式定义如border-top-left-radius。

Mozilla(friefox火狐浏览器)

     火狐浏览器的长格式圆角定义与其他略有不同

  
  
  1. -moz-border-radius-topleft:10px;   
  2. -moz-border-radius-topright:10px;   
  3. -moz-border-radius-bottomleft:10px;   
  4. -moz-border-radius-bottomright:10px

 

示例:

css3-quick-guide-demo1

 CSS代码:

  
  
  1. #1 {border-radius:10px;}   
  2. #2 {border-radius:50%;}   
  3. #3 {border-radius:25px 5px;}   
  4. #4 {border-radius:40px 30px 20px 10px;} 

 

 兼容性

     IE9+,Safari 3.2以上[WebKit的前缀],Safari 5以上,Chrome 4 +和Firefox 3.0 + [-MOZ-前缀 Opera 10.5 +

 

 
 
CSS颜色(Color)

      CSS3颜色最大的改进是支持了alpha透明度选项。而之前CSS却无法做到这点。

  
  
  1. color: rgba([<0-255>],[<0-255>],[<0-255>],[<0-1.0>]);   
  2.  
  3. color: hsla([<0-360>],[<%>],[<%>],[<0-1.0>]); 

 HSL为色彩体系的:色相(Hue),饱和度(Saturation),明度(Lightness),,透明度(Alpha)

 

      最后一个选项指定透明度。另外,边框的颜色和阴影也支持这种带透明度选项的颜色设定。如果希望和老的浏览器兼容,那么就要额外定义一个。

  
  
  1. color:rgb(0,0,0); color: rgba(0,0,0,0.5); 

 

示例:

css3-quick-guide-demo1

 

  
  
  1. #1 {background:rgba(255,255,255,0.3);}  
  2. #2 {background:rgba(45,35,200,0.5);}  
  3. #3 {background:hsla(225,90%,10%,0.2);}  
  4. #4 {background:hsla(125,100%,50%,0.5);} 

 

兼容性:

IE9 +,Safari 3.2以上,Chrome 5 +和Firefox 3.0 +,Opera 10.1 +

 

 

 

CSS文字阴影 (Text Shadow)

      该属性可以指定文字显示阴影,以及阴影的颜色、位置、模糊度

  
  
  1. text-shadow: [color] [x-coordinate] [y-coordinate] [blur radius];    
  2.  
  3. text-shadow#000000 10px -5px 3px

      指定的颜色可以是任意的RGB或HSL色表中的一个。X,Y表示阴影的相对位置,可正可负。

模糊度的值可以大于等于0的任意整数,默认为0。

      其实,CSS文字阴影早在CSS2.0的标准制定中就被提了出来。可惜到3.0版本才得以实现。遗憾的是,目前IE 9系列仍然不支持这个属性。

 

示例:

css3-quick-guide-demo3

 CSS代码: 

  
  
  1. #1 {text-shadow:rgba(0,0,0,0.51px 1px 0;}   
  2. #2 {text-shadow:rgba(0,0,0,0.75px 5px 3px;}   
  3. #3 {text-shadow:rgba(45,35,200,0.7-10px -10px 3px;} 

 

兼容性:

Safari 3.2 +,Chrome4 +,火狐3.0 +,Opera 10.1 +

 

 

 

盒子阴影(Box Shadow)

      CSS盒子的概念各位如果不清楚的请搜索之。盒子阴影和文字阴影略有不同,一个是基于div之类的块元素,另一个则是针对文字。

  
  
  1. text-shadow: [x-coordinate] [y-coordinate] [blur radius] [color];   
  2. text-shadow10px -5px 3px #000000;   
  3. text-shadowinset 10px -5px 3px #000000

 

       它的定义方法和文字阴影差不多。之前只有在PS中才有的内阴影、外阴影如今只需一句css定义了。

  
  
  1. text-shadowinset 10px -5px 3px #00000010px -5px 3px #000000

 示例:

css3-quick-guide-demo4

 CSS代码:

  
  
  1. #1 {box-shadow:10px 10px 0 #666666;}   
  2. #2 {box-shadow:-10px -10px 5px #666666;}   
  3. #3 {box-shadow:inset -5px -5px 0 rgba(255,255,255,0.5);}  
  4. #4 {box-shadow:5px 5px 5px #666666inset 5px 5px 5px rgba(255,255,255,0.5);} 

 

兼容性

SupportIE9+, Safari 3.2+[-webkit- prefix], Safari 5+, Chrome 4+, Firefox 3.5+ [-moz- prefix], Opera 10.5+

 

 

CSS多重背景

      可以为一个div定义多个背景图片。而在此之前,我们实现的方法是使用多个div,并为每个div定义一个背景图片。

  
  
  1. backgroundurl([image]) [position] [repeat], url([image]) [position] [repeat]; 

 

示例:

css3-quick-guide-demo5

 

  
  
  1. {background:url(lollipop.png) 10px 10px no-repeat
  2. url(stripes.png) left bottom repeat-x
  3. url(diagonal-pattern.jpg), #FFFFFF;

 

 兼容性

IE9+, Safari 3.2+, Chrome 4+, Firefox 3.6+, Opera 10.5+

     需要注意的是,如果要保持对旧浏览器的兼容,则需要额外再定义一个background以作备用

 

 

 

 

背景大小

      CSS3既然能够制定多重背景,那么指定背景大小也不在话下。

  
  
  1. background-size: [<length> | <%> | <auto>] [<length> | <%> | <auto>];   
  2. background-size100% auto;   
  3. background-size100% auto10px 10px

 

兼容性

IE9+, Safari 3.2+, Chrome 4+, Firefox 3.6[-moz- prefix], Firefox 4+, Opera 10.5+

 

 

 

background-clip 和 background-origin

       这两个属性用来确定背景的定位。

 

background-clip 用来判断 background 是否包含 border 区域。

background-origin 用来决定 background-position 计算的参考位置。

  
  
  1. background-origin: [<border-box> | <padding-box> | <content-box>];   
  2. background-clip: [<border-box> | <padding-box> | <content-box>]; 

 

对于 background-clip

     如果是 padding 值,则 background 包括padding范围,border 是透明的。如果是 border 值,则background 包括border 区域。如果 background-image(in CSS3 via W3C) 图片有多个,对应的 background-clip 值之间用逗号分隔。

 

对于 background-origin

     如果是 padding 值,则 position 相对于 padding 边缘(”0 0″ 为 padding 边缘的左上角,而 “100% 100%” 为右下角)。如果是 border 值,则意味着相对 border 边缘。而 border 值则相对于内容边缘。与 background-clip 相同,多个值也用逗号分隔。如果 background-clip 是 padding 值,background-origin 是 border 值,并且 background-position 是 “top left”(默认初始值),则背景图左上角将会被截取掉部分。

 

具体效果看下面的图示:

css3-quick-guide-demo6

 

兼容性

IE9+, Safari 3.2+[-webkit- prefix], Chrome 4+[-webkit- prefix], Firefox 4+, Opera 10.5+

 

 

 

图片边框

       在CSS2中边框只能是一成不变的一条直线,要么是实线,要么是虚线。如此乏味的设计当然不能满足网页设计的需要。应运而生了许多边框设计方案。

      到CSS3里,人家给你统一了,直接可以定义图片边框,简单而又有趣。

   
   
  1. border-image: [img] [slice] [<repeat> | <round> | <stretch>];   
  2.  
  3. border-top-image: [img] [slice] [<repeat> | <round> | <stretch>];   
  4.  
  5. border-corner-image: [img] [slice] [<repeat> | <round> | <stretch>];   
  6.  
  7. border-top-left-image: [img] [slice] [<repeat> | <round> | <stretch>]; 

 

示例:

css3-quick-guide-demo7

 
   
   
  1. #1 {border-image:url(border.jpg) 15 15 15 15 round;}  
  2.    
  3. #2 {border-width:15px; border-image:url(border.jpg) 15 15 15 15 round;}   
  4.  
  5. #3 {border-width:15px; border-image:url(border.jpg) 15 15 15 15 stretch;}   
  6.  
  7. #4 {border-width:20px; border-image:url(border.jpg) 15 15 15 15 repeat;} 

 

      基于这个定义我们就可以设计五花八门的独特边框啦^_^

兼容性

Safari 3.2+[-webkit- prefix], Chrome 5+[-webkit- prefix], Firefox 3.5+ [-moz- prefix], Opera 10.5+

 

 

其他一些新特性:

       讲了不少,其实CSS3的新特性远不止这么多。笔者也不能一个个全都说一遍^_^。挑几个常用的属性为各位详细叙述下。

余下的,笔者简单提一下,如果感兴趣的朋友可以自己搜索一下自行阅读啦。

 

选择符

选择符类型

表达式

描述

子串匹配的属性选择符

E[att^="val"]

匹配具有att属性、且值以val开头的E元素

子串匹配的属性选择符

E[att$="val"]

匹配具有att属性、且值以val结尾的E元素

子串匹配的属性选择符

E[att*="val"]

匹配具有att属性、且值中含有val的E元素

结构性伪类

E:root

匹配文档的根元素。在HTML中,根元素永远是HTML

结构性伪类

E:nth-child(n)

匹配父元素中的第n个子元素E

结构性伪类

E:nth-last-child(n)

匹配父元素中的倒数第n个结构子元素E

结构性伪类

E:nth-of-type(n)

匹配同类型中的第n个同级兄弟元素E

结构性伪类

E:nth-last-of-type(n)

匹配同类型中的倒数第n个同级兄弟元素E

结构性伪类

E:last-child

匹配父元素中最后一个E元素

结构性伪类

E:first-of-type

匹配同级兄弟元素中的第一个E元素

结构性伪类

E:only-child

匹配属于父元素中唯一子元素的E

结构性伪类

E:only-of-type

匹配属于同类型中唯一兄弟元素的E

结构性伪类

E:empty

匹配没有任何子元素(包括text节点)的元素E

目标伪类

E:target

匹配相关URL指向的E元素

UI元素状态伪类

E:enabled

匹配所有用户界面(form表单)中处于可用状态的E元素

UI元素状态伪类

E:disabled

匹配所有用户界面(form表单)中处于不可用状态的E元素

UI元素状态伪类

E:checked

匹配所有用户界面(form表单)中处于选中状态的元素E

UI元素状态伪类

E::selection

匹配E元素中被用户选中或处于高亮状态的部分

否定伪类

E:not(s)

匹配所有不匹配简单选择符s的元素E

通用兄弟元素选择器

E ~ F

匹配E元素之后的F元素

 

 

Media Queries

      Media Queries可以针对不同设备的一些Media属性设定不同的CSS属性或者是不同的CSS文件调用。

   
   
  1. @media screen and (max-width800px) {   
  2.     body {background#000000;}   

css3-quick-guide-demo8

 

可以看到在不同的宽度设置下,呈现不同的布局。这对于正如日中天的移动平台应用无疑有着巨大的影响力。

兼容性

IE9+, Safari 3.2+, Chrome 5+, Firefox 3.5+, Opera 10.1+

 

 

后记:

      这片东拼西凑的东西终于写完了,笔者深感欣慰。上班时间快到了,css快速入门到此结束。笔者自己其实也是学员之一。希望这篇文章能对你有点小小的作用^_^。

 

 

背景大小

CSS3既然能够制定多重背景,那么指定背景大小也不在话下

 

  
  
  1. background-size: [<length> | <%> | <auto>] [<length> | <%> | <auto>];   
  2. background-size100% auto; background-size100% auto10px 10px
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值