HTML5简明教程(三)使用CSS3

HTML是骨架,CSS是装饰,CSS使得网页丰富多彩,它也是Web开发不可或缺的一部分。

同HTML5一样,CSS3也存在兼容性问题,不同浏览器支持情况不同,甚至,特定的浏览器指定了特定CSS属性。

下表是针对不同浏览器需要的特殊前缀:

前缀 浏览器
-moz- Firefox
-webkit- Chrome, Safari
-ms- Internet Explorer
-o- Opera

CSS3新特性分为两大类,一是支持了新的选择器,比如伪类:last-child:first-child等等;二是页面渲染方面的新功能。

本文只介绍第二类中比较重要的新特性。

1. Web字体@font-face

CSS3支持自定义字体,只需要在项目中导入字体文件或者文件链接url(常用的有.woff.svgeot等格式),样式文件中用@font-face定义字体名,字体文件路径等等。之后,可以在font-familiy属性中使用自定义字体名。

例如,我们在项目中使用google font:

// 定义字体
@font-face {
    font-family: 'BadScript';
    font-style: normal;
    font-weight: 400;
    src: local('Bad Script Regular'), local('BadScript-Regular'), 
         url(../font/googlefonts/rL_b2ND61EQmMOJ8CRr1fhsxEYwM7FgeyaSgU71cLG0.woff) format('woff');
}

// 使用字体
.BadScript {
    font-family: 'BadScript', Georgia, "Times New Roman", Times, serif;
}
2. 多栏文本

支持多栏文本有的CSS3属性有:

  • column-count设置栏数
  • column-width设置每栏的宽度
3. 媒体查询media

媒体查询media可以取得设备关键信息,如大小,分辨率等等,根据这些信息应用不同样式。

(1)定义样式表外部链接时使用

<head>
  <!-- 屏幕显示中使用样式style.css -->
  <link media = "screen" href="style.css" />
  <!-- 打印页面中使用样式print.css -->
  <link media = "print" href="print.css" />
  <!-- 在480像素设备且是竖屏情况下应用phone.css -->
  <link media = "(max-device-width:480px) and (orientation:portrait)" href="phone.css" />
</head>

(2) CSS样式表中使用

/*窗口宽度介于600像素到700像素直接,使用该样式*/
@media  (min-width: 600px) and (max-width: 700px) { ... }

/*窗口宽度小于400像素使用该样式*/
@media  (min-width: 400px) { ... }
4.透明度 opacity

注意,opacity值是小数。

使用opacity给元素设置透明度,会将背景颜色,文本颜色和边框颜色都变透明。如果只想设置其中一种类型的透明度,可以使用函数ragb(val1, val2, val3, opacity)

5. 圆角 border-radius

支持矩形圆角,可以给一个盒子设置四个弧度不同的圆角。

roundBox {
    border-top-left-radius: 150px 30px; /* 圆弧 */
    border-top-right-radius: 150px 60px;
    border-bottom-left-radius: 150px; /* 半圆弧 */
    border-bottom-right-radius: 150px; 
}
border-radius.png
5. 背景盒子

利用background-xxx几个属性,可以给盒子设置背景图片(应用多个图片,指定图片是否重复,图片位置等信息)。

.bgBox {
  /*设置多张背景图片*/
  background-image: url("top-left.png"), url("bottom-right.png");
  /*背景图片不重复*/
  background-repeat: no-repeat, no-repeat;
  /*定义背景图片位置*/
  background-position: left top, right bottom;
}
6. 阴影盒子

CSS3定义了两种阴影:文字阴影和盒子阴影,分别为text-shadowbox-shadow,阴影默认被设置在盒子外部。

该属性值格式为([]内的是可选项):水平偏移量+垂直偏移量+阴影模糊程度[+阴影延伸范围]+阴影颜色[+inset(在元素内部创建阴影)]

.box {
  box-shadow: 1px 5px 10px 20px blue inset;
}
.text {
  text-shadow: 1px 3px 5px green;
}
7. 渐变盒子

渐变是多种颜色混合的效果,有三种渐变:

  • 线性渐变:linear-gradient函数
  • 径向渐变:radial-gradient函数

目前,需要加浏览器前缀来支持渐变效果,而且,不同浏览器支持函数参数不同:

/*一个从左到右的渐变效果*/
background-image: -moz-linear-gradient(left, $leftColor, $rightColor);
background-image: -ms-linear-gradient(left, $leftColor, $rightColor);
background-image: -webkit-gradient(linear, left top, right bottom, color-stop(0, $leftColor), color-stop(1, $rightColor));  
8. 过渡效果 transition

过渡效果有:颜色变换,移动。利用transition可以让过渡效果更佳平滑。

transition属性值格式为:过渡样式+过渡时间

/*在盒子上应用两个过渡效果,分为针对背景色和文本颜色*/
.box {
  transition: background 0.5s, color 0.5s;
}
9. 变换 transform

变换包括移动,缩放,旋转等等,比如45度旋转一个盒子transform: rotate(45deg)。下面是常用值:

  • 旋转
    • 2D旋转:rotate(angle)
    • 3D旋转:rotate3d(x,y,z,angle)
    • 沿着X轴3D旋转:rotateX(angle)
    • 沿着Y轴3D旋转:rotateY(angle)
    • 沿着Z轴3D旋转:rotateZ(angle)
  • 缩放
    • 2D缩放:scale(x, y)
    • 3D缩放:scale3d(x,y,z)
  • 位移
    • 2D位移:translate(x,y)
    • 3D位移:translate3d(x,y,z)
    • 沿着X轴位移:translateX(x)
    • 沿着Y轴位移:translateY(x)
    • 沿着Z轴位移:translateZ(x)
  • 倾斜旋转
    • 倾斜旋转:skew(x-angle,y-angle)
    • 沿X 轴倾斜旋转:skewX(angle)
    • 沿Y 轴倾斜旋转:skewY(angle)
10. 动画 animation

动画设置分为两部分,一是定义动画帧变化;二是应用动画。

定义动画帧变化,一般用百分数把动画分割为若干关键点,声明在keyframes关键字下,分别定义每个节点的表现形式。

下面是一个W3C官网的例子,该动画有4个节点会发生左偏移和背景色变化(建议加上浏览器前缀)。

@-webkit-keyframes 'wobble' { 
  0% { 
    margin-left: 100px; 
    background: green; 
  } 
  40% {
    margin-left: 150px; 
    background: orange; 
  } 
  60% { 
    margin-left: 75px; 
    background: blue; 
  } 
  100% { 
    margin-left: 100px; 
    background: red; 
  } 
}

然后用animation属性应用动画:

.box {
  /*动画属性名,也就是前面keyframes定义的动画名*/
  animation-name:'wobble';
  /*动画持续时间,以s或者ms计算*/
  animation-duration: 10s;
  /*动画速度曲线*/
  animation-timing-function: ease-in-out;  
  /*动画延迟时间*/
  animation-delay: 2s; 
  /*循环次数,infinite为无限次*/
  animation-iteration-count: 10; 
  /*是否反向播放动画,normal:默认值,正常播放;alternate:反向播放*/
  animation-direction: alternate;
}

小结

CSS3新属性非常多,上面10个只是比较常用的和渲染相关的功能,如果需要进一步学习,可以参考W3C或者developer.mozilla。

下一节:HTML5简明教程(四)Web存储

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,457评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,837评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,696评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,183评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,057评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,105评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,520评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,211评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,482评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,574评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,353评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,897评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,489评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,683评论 2 335

推荐阅读更多精彩内容