H5知识点大总结勾起你的欲望
2016-04-26 10:34
387 查看
第 19 章
CSS 其他样式
学习要点:1.颜色和透明度2.盒子阴影和轮廓3.光标样式
本章主要探讨 HTML5 中
CSS 其他剩下几个常用的样式,包括颜色、透明度、盒子的阴影轮廓以及光标的样式。
一.颜色和透明度
颜色我们之前其实已经用的很多了,比如字体颜色、背景颜色、边框颜色。但除了背景颜色和边框颜色讲解过,字体颜色却没有系统的讲解过。设置字体颜色其实也成为文本块的前景色。
p {
color: red;
}
解释:设置文本颜色。
CSS3 提供了一个属性 opacity,可以设置元素的透明度。
p {
color: red; opacity: 0.5;
}
解释:设置元素的透明度。
二.盒子阴影和轮廓
1.box-shadow
CSS3 提供了一个非常实用的效果样式,就是阴影效果。通过 box-shadow
属性来实现,样式表如下:
解释:给元素盒子增加阴影效果。
box-shadow: 5px 4px 10px 2px gray inset;
解释:实现内部阴影。
2.outline
CSS3 还提供了轮廓样式,它和边框一样,只不过它可以在边框的外围再加一层。样式表如下:
div {
width: 200px;
height: 200px;
border: 10px solid silver;
outline: 10px double red;
}
解释:在边框的外围再增加一圈轮廓。
三.光标样式
我们不但可以指定页面上的元素样式,就连光标的样式也可以指定。样式表如下:
div {
cursor: move;
}
解释:设置当前元素的光标为移动光标。
第 20 章
CSS3 前缀和
rem
学习要点:
1.CSS3 前缀2.长度单位 rem
本章主要探讨 HTML5 中
CSS 在发展中实行标准化的一些问题,重点探讨
CSS3 中新属性前缀问题和新的单位
rem。
一.CSS3 前缀
在 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.Safari for
Windows 已被苹果公司在 2012
年放弃,遗留版本为 5.1.7。
最后说明:W3C 官方的立场表示实验阶段的属性仅为了测试,未来有可能修改或删除。而大量的开发者也认为在实际项目中不应该使用前缀,而使用一种优雅降级保证一定的用户
体验,而通过渐进增减的方式让新版高级浏览器保证最高的效果。
二.长度单位 rem
CSS3 引入了一些新的尺寸单位,这里重点推荐一个:rem
或者成为(根 em)。目前主流的现代浏览器都很稳定的支持。它和
em、百分比不同的是,它不是与父元素挂钩,而是相对于根元素<html>的文本大小来计算的,这样能更好的统一整体页面的风格。
//首先,来一段 HTML
<h1>标题<em>小标题</em></h1> <p>我是一个段落,我是一段<code>代码</code></p>
//其次来一段 CSS
html {
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;
}
第 21 章
CSS3 文本效果
学习要点:1.文本阴影2.文本裁剪3.文本描边4.文本填充
本章主要探讨 HTML5 中
CSS3 中文本效果,其中也包含一些之前讲过的
CSS3 文本属
性。
一.文本阴影
CSS3 提供了 text-shadow
文本阴影效果,这个属性在之前讲过,只是没有涉及浏览器支持情况。
这里有几个注意点:1.text-shadow 在
CSS2 的时候出现过,但各大浏览器碍于消耗大量的资源,迟迟未支持,然后在
CSS2.1 中剔除了。现在,CSS3 已经全面支持了;2.最低支持版本上,不同手册和教材上都不太同,但版本年代久远,无伤大雅。最准确的可以查询这个网站:http://caniuse.com。最需要注意的只有
IE10 才支持,IE9 不支持的;3.
目前的浏览器不需要给这个属性加上任何前缀,具体查询前缀版本可以访问刚才提供的地址。
//正值阴影
text-shadow: 1px 1px 1px red;
//负值阴影
text-shadow: -1px -1px 1px red;
//多重阴影叠加
text-shadow:0px 0px 0 rgb(188,178,188), 1px 0px 0 rgb(173,163,173), 2px 0px 0 rgb(157,147,157), 3px 0px 0 rgb(142,132,142), 4px 0px 0 rgb(126,116,126), 5px 0px 0 rgb(111,101,111), 6px 0px 0 rgb(95,85,95), 7px 0px 0 rgb(79,69,79),
8px 0px 7px rgba(0,0,0,0.35), 8px 0px 1px rgba(0,0,0,0.5), 0px 0px 7px rgba(0,0,0,0.2);
二.文本裁剪
CSS3 提供了 text-overflow
属性来控制文本的溢出部分,它的作用是对溢出的部分裁剪掉,然后判定是否添加省略号。首先我们先看下样式表的属性,如下:
//必须不换号和使用 overflow
控制溢出
p {
width: 160px; white-space: nowrap; background: silver; /*text-overflow: clip;*/ text-overflow: ellipsis; overflow: hidden;
}
对于 text-overflow 的支持度,是根据它的属性值来判定的,不同的属性值浏览器支持度不同。
-o-text-overflow: ellipsis; text-overflow: ellipsis;
}
而在 Opera 主流版本中,引擎已经靠拢
webkit,则不需要-o-了。目前来说,也不需要兼容-o-了。
三.文本描边
CSS3 提供了描边属性,即 text-stroke、text-stroke-width、text-stroke-color。
目前只有 webkit 引擎的浏览器支持,并且必须加上-webkit-前缀才能有效。
//实验阶段的产物,了解即可 p {
font-size: 50px; -webkit-text-stroke:1px red;
}
//修改描边的颜色和厚度 p {
font-size: 50px; -webkit-text-stroke:1px red; -webkit-text-stroke-color: orange; -webkit-text-stroke-width: 2px;
}
四.文本填充
CSS3 提供了一个文本颜色填充功能:text-fill-color,感觉和 color
属性很像。其
实在配合其他属性才能达到不一样的效果。
//不配合背景样式时,和 color
属性没区别 p {
font-size: 150px; -webkit-text-fill-color: red;
}
//和 CSS3
背景的新特性搭配产生渐变文字 p {
font-size: 150px; font-family:
黑体; background:
-webkit-linear-gradient(top,#eee,#aaa 50%,#333 51%,#000); -webkit-background-clip:text;
-webkit-text-fill-color: transparent;
}
第 22 章
CSS3 渐变效果
学习要点:1.线性渐变2.径向渐变
本章主要探讨 HTML5 中
CSS3 背景渐变功能,主要有两种渐变方式:线性渐变和径向(放射性)渐变。
一.线性渐变
CSS3 提供了 linear-gradient
属性实现背景颜色的渐变功能。在以前,这种效果必须采用图片才能实现的。首先,我们先看一下它的样式表,如下:
//两个必须参数
background-image: linear-gradient(orange,green);
//增加一个方位
background-image: linear-gradient(to top,orange,green);
通过 top、left、right、bottom 这四组实现的渐变方向有时比较单一,我们可以使用以角度单位的数值来设置方位。比如
0 度(0deg)相当于
to top;角度会沿逆时针方向随着你的角度的增加而增加。
//通过角度设置方位,0 ~ 360
度之间,可以是负值 background-image: linear-gradient(45deg,orange,green);
//多色线性渐变
background-image: linear-gradient(-45deg,orange,green,blue,red);
//通过百分比设置多色线性位置
background-image: linear-gradient(-45deg, orange 0%, green 20%, blue 40%, red 100%);
默认情况下:起始颜色的百分比位置是 0%,末尾颜色的百分比位置是
100%,其他位置按照平均值分配。也可以使用
px 像素来设定,但计算麻烦点。
//结合背景,并使用透明渐变实现强大层次感 background-color: red;
background-image: linear-gradient(to top right, rgba(0,0,0,0.6), rgba(0,0,0,0));
//重复渐变属性值
background-image: repeating-linear-gradient(to top, orange 10px, green 30px);
目前最新的主流浏览器都支持 CSS3 的渐变属性,那么对于之前的浏览器支持度如何呢?可以参考如下的表:
这里提到了部分支持,说明当时可能渐变还尚未完善,但可以通过添加前缀来使用它了。具体哪些没完善,已经无法考证了,版本太过久远。那么支持带前缀和不支持带前缀的完整格式如下:
//加上兼容前缀
background-image: -webkit-linear-gradient(to top, orange, green); background-image: -moz-linear-gradient(to top, orange, green); background-image: -o-linear-gradient(to top, orange, green); background-image:
linear-gradient(to top, orange, green);
repeating-linear-gradient 属性值和 linear-gradient
基本相同,不在赘述。
二.径向渐变
CSS3 提供了径向渐变,也叫做放射性渐变:radial-gradient
属性值。它是从一个点向四周发散的方式扩展。属性值样式表如下:
radial-gradient(方位,
起始色,
末尾色)
可选参数,径向的方位。可以使用的值有:像素、百分
方位
比、固定值,或复合搭配使用
起始色必选参数,颜色值
末尾色必选参数,颜色值
//两个必选参数
background-image: radial-gradient(orange, green);
//如果想设置第一个可选参数,有一种做法是设置为:cirlce(圆形)或 ellipse(椭圆形)。默认是椭圆形。
background-image: radial-gradient(circle, orange, green);
circle圆形
ellipse椭圆形,默认值
//不单单可以设置形状,还可以设置形状的发散方向 background-image: radial-gradient(circle at top, orange, green);
//也可以复合方向,比如右下方
background-image: radial-gradient(circle at right bottom, orange,
green);
//可以设置发散的距离,即圆的半径长度
background-image: radial-gradient(circle closest-side, orange, green);
//关键字有点拗口,可以用像素表示半径,但不接受百分比 background-image: radial-gradient(circle 50px, orange, green);
//同样,也有重复背景方式
background-image: repeating-radial-gradient(circle 50px, orange, green);
//兼容模式
background-image: -webkit-radial-gradient(circle, orange, green); background-image: -moz-radial-gradient(circle, orange, green); background-image: -o-radial-gradient(circle, orange, green); background-image:
radial-gradient(circle, orange, green);
//两个重复背景只要加上前缀就是兼容模式了 background-image: -webkit-repeating-radial-gradient background-image: -moz-repeating-radial-gradient
background-image: -o-repeating-radial-gradient background-image: repeating-radial-gradient
第 23 章
CSS3 边框图片效果
学习要点:1.属性初探2.属性解释3.简写和版本
本章主要探讨 HTML5 中
CSS3 中边框图片背景的效果,通过这个新属性让边框更加的丰富多彩。
一.属性解释
CSS3 提供了一个新的属性集合,用这几个属性可以嵌入图片形式的边框。这样,边框就可以自定义了。
1.border-image-source 2.border-image-slice 3.border-image-width 4.border-image-repeat 5.border-image-outset 6.border-image
//引入背景图片地址//切割引入背景图片//边框图片的宽度//边框背景图片的排列方式//边框背景向外扩张//上面五个属性的简写方式
二.属性解释
要实现边框背景,我们对图片也有一定的要求,否则效果不能完全体现出来。图片可以通过九宫格的切分来了解它。我们使用
W3C 官网上教学的图片来讲解一下。
如上图所示,九宫格并不一定要求每一个格子大小都相同。当然,如果相同的话,制作边框背景就相对容易一点。比如如下这张图片:
首先,用 Photoshop 软件分析一下这个标准九宫格的总体大小和每个格子的大小。最终得出图片总大小为
81px 正方形,四个角的大小为
27px 的正方形,其余五个角也是
27px。
那么,第一步:先创建一个盒子区域,大小为 400x400 的矩形。然后设置引入边框图
像。
//引入边框图像
border-image-source: url(border.png);
单单只有这句话,webkit 引擎下的浏览器会在盒子区块的四个角看到一丁点图像的影子。而其他浏览器什么都看不到。这是由于没有设置边框背景图像的宽度导致的。
//设置边框图像宽度,上右下左,可以设置四个值
border-image-width: 81px;
这里设置的是边框图像的宽度,而不是边框宽度。当你设置边框宽度,你会发现,文本会偏移。而边框图像的宽度不会挤压文本。
//设置边框的宽度
border-width: 20px;
以上设置完毕后,支持边框背景图片的浏览器会在四个角落铺上这张图片的完整形式。这个时候需要通过引入切割属性来配置背景图片的显示方式。
//首先,边框图像宽度设置为 27px
和一个单格宽高一致 border-image-width: 27px;
//设置切割属性的大小 border-image-slice: 27;
这里的 27 不需要设置
px 像素,因为它默认就是像素。设置
27 之后,我们会发现边框的四个角正好是橘红色的四个角。那么你可以逐步放大或逐步放下这个值,来体验一下它的变化。
//从 27
逐步放大到 81,四个角都慢慢缩小,各自显示一个完整的图像
border-image-slice: 81;
//从 27
逐步缩小到 0,发现四个角都慢慢变大,配合 fill
整体显示一个完整图像
border-image-slice: 0 fill;
上面只是单独设置了一个像素表示四个边切割的大小,你也可以设置百分比、浮点值或者分别设置四个变的大小。
//33.5%差不多 27
border-image-slice: 33.5%;
//上下设置 27,左右设置 0
border-image-slice: 27 0;
如果想让边框背景向外扩张,那么可以进行扩张设置。//向外扩张 20px,也可以是浮点值,比如 2.2
border-image-outset: 20px;
四个角设定好之后,我们要设定四个变的显示排列方式。使用 border-image-repeat 属性,有四个值提供使用,分别如下表:
stretch指定用拉伸方式填充边框背景图。默认值。
指定用平铺方式来填充边框背景图。当图片碰到边界时,如果超
repeat
过则被截断。
指定用平铺方式来填充边框背景图。图片会根据边框的尺寸动态
round
调整图片的大小,直至正好可以铺满整个边框。
指定用平铺方式来填充边框背景图。图片会根据边框的尺寸动态
space
调整图片的之间的间距,直至正好可以铺满整个边框。
//拉伸方式填充,当然,通过上右下左设置四个边均可
border-image-repeat: stretch;
//平铺填充,超过则被截断
border-image-repeat: repeat;
//平铺填充,动态调整图片大小直至铺满
border-image-repeat: round;
//平铺填充,动态调整图片的间距直至铺满 border-image-repeat: space;
//另一个按钮的小例子 div {
width: 400px; height: 40px;
border-image-source: url(button.png); border-image-width: 10px; border-image-slice: 10 fill; border-image-repeat: stretch;
}
三.简写和版本
//border-image 简写格式很简单,具体如下:border-image:<' border-image-source '> || <' border-image-slice
'> [ /
<' border-image-width '> | / <' border-image-width '>? / <' border-image-outset '> ]? || <' border-image-repeat '>
//以上是手册上摘录的,转换成实际格式如下: border-image: url(border.png) 27/27px round;
对于支持的浏览器及版本如下表:
//兼容加上前缀
-webkit-border-image: url(border.png) 27/27px round; -moz-border-image: url(border.png) 27/27px round; -o-border-image: url(border.png) 27/27px round; border-image: url(border.png) 27/27px round;
第 24 章
CSS3 变形效果[上]
学习要点:
1.transform
2.transform-origin
3.浏览器版本
本章主要探讨 HTML5 中
CSS3 的变形效果,通过变形效果,可以平移、缩放和旋转元素的功能。
一.transform
CSS3 提供了元素变形效果,也叫做变换。它可以将元素实现旋转、缩放和平移的功能。属性有两个:transform 和
transform-origin。
transform指定应用的变换功能
transform-origin
指定变换的起点
对于 transform 的属性值,具体如下表:
//向水平和垂直各移动 200
像素,也可以使用百分比 transform: translate(200px,200px);
//向水平平移 200
像素,不加后面的 0
也可以
transform: translate(200px,0);
transform: translateX(200px);
//向垂直平移 200
像素
transform: translate(0,200px);
transform: translateY(200px);
//水平、垂直方向放大 1.5
倍
transform: scale(1.5);
transform: scale(1.5,1.5);
//水平、垂直方向缩小 0.8
倍
transform: scale(0.8,0.8);
//水平方向放大 1.5
倍
transform: scaleX(1.5);
//垂直方向放大 1.5
倍
transform: scaleY(1.5);
//旋转元素,0 ~ 360
度之间,负值均可
transform: rotate(-45deg);
//倾斜元素,0 ~ 360
度之间,负值均可
transform: skew(45deg, 20deg);
//水平倾斜元素,0 ~ 360
度之间,负值均可
transform: skewX(45deg);
//垂直倾斜元素,0 ~ 360
度之间,负值均可
transform: skewY(45deg);
//通过六个数值指定矩形,其内部公式计算较为复杂,请百度吧
transform: matrix(1,0,0,1,30,30);
//不同的值可以累计,通过空格分割
transform: rotate(-45deg) scale(1.5);
二.transform-origin
transform-origin 属性可以设置变换的起点。默认情况下,使用元素的中心作为起点。具体设置方案参考如下表:
这个属性是用来改变变形的基准点的,默认是在元素的中心位置,如果你改变了基准点。它就会按照这个基准点进行变形。
//默认值,以中心点变形 transform-origin: center center; transform-origin: 50% 50%;
//以左上角为基准点变形 transform-origin: left top; transform-origin: 0px 0px;
三.浏览器版本
CSS3 中的变形效果最低版本和需要前缀版本如下:
//兼容完整版
-webkit-transform: rotate(45deg); -moz-transform: rotate(45deg); -o-transform: rotate(45deg); -ms-transform: rotate(45deg); transform: rotate(45deg);
-webkit-transform-origin: left top; -moz-transform-origin: left top; -o-transform-origin: left top; -ms-transform-origin: left top; transform-origin: left top;
第 24 章
CSS3 变形效果[下]
学习要点:
1.3D 变形简介 2.transform-style
3.perspective 4.3D
变形属性
本章主要探讨 HTML5 中
CSS3 的变形效果,主要接着上节课的
2D 平面变形转换到
3D 立体变形。
一.3D 变形简介
之前我们学习了元素的平移、旋转、缩放和倾斜等功能。这些效果只是单纯在二维平面图上的,我们称之为
2D。那么其实
CSS3 也提供了三维立体的一些功能效果,并且目前较新的主流浏览器都比较支持,只不过比
2D 晚一些,对浏览器的版本要求也要高一些。
由于 3D 是立体三维,在
x、y 轴的基础上一般会多出一个
z 轴,深入跃出轴。以下是
3D 变形的属性值表,如下:
3D 变形比 2D
变形出来的要晚一些,所以如果需要兼容旧版本浏览器,可以对照这个表。具体如下:
//兼容版本完整形式
-webkit-transform: translateZ(200px); -moz-transform: translateZ(200px); -o-transform: translateZ(200px); -ms-transform: translateZ(200px); transform: translateZ(200px);
二.transform-style
transform-style 属性是指定嵌套元素如何在 3D
空间中呈现。
//一般设置到当前元素的父元素
transform-style: preserve-3d;
需要再配合后面的功能属性和变形配置,才能看到效果。同样,这个属性也需要加上各种厂商前缀。
三.perspective
perspective 是 3D
变形的重要属性,该属性会设置查看者的位置,并将可视内容映射到一个视锥上,继而投放到一个
2D 平面上。
none
默认值,表示无限的角度来看 3D 物体,但看上去是平的。
接受一个长度单位大于 0 的值,其单位不能为百分比。值长度值 越大,角度出现的越远,就好比你人离远一点看物体。值
越小,正相反。
//设置查看者的距离位置,一般设置在元素的父元素上
perspective: 1000px;
需要再配合后面的功能属性和变形配置,才能看到效果。同样,这个属性也需要加上各种厂商前缀。
四.3D 变形属性
我们运用前面 3D 功能属性
transform-style 和
perspective 来构建
3D 变形效果。
1.translate3d(x,y,z)
//需要 3D
位移的 HTML
结构,必须有父元素包含
<div id="a">
<img src="img.png" alt="" />
</div>
//CSS 部分,父元素设置 3D
呈现且设置透视距离
#a {
perspective: 1000px; transform-style: preserve-3d;
}
img { //z 轴可以是负值
transform: translate3d(300px,100px,240px);
}
2.translateZ(z)
//可以单独设置 z
轴,z
轴可以是负值
img {
transform: translateZ(240px);
}
3.scale3d(x,y,z)
//3D 缩放,单独设置无效,需要配合角度
img {
transform: scale3d(1,1,1.5) rotateX(45deg);
}
4.scaleZ(z)
//单独设置 z
轴,x
和 y 轴默认为 1
img {
transform: scaleZ(1.5) rotateX(45deg);
}
5.rotate3d(x,y,z,a)
//设置 3D
旋转,a
表示角度,xyz 是 0
或 1
之间的数值
transform: rotate3d(1,0,0,45deg);
6.rotateX(a)、rotateY(a)、rotateZ(a)
//单独设置 3D
旋转
transform: rotateX(45deg);
transform: rotateY(45deg);
transform: rotateZ(45deg);
transform: rotateX(45deg) rotateY(45deg) rotateZ(45deg);
最后一个 matrix3d 就不多说了,忽略。
CSS3 还提供了 perspective-origin
属性来设置 3D
变形中的源点角度。该属性默认值为 50% 50%也就是
center center。
//源点设置为右上方变形
perspective-origin: top right;
CSS3 还提供了一个在元素中设置透视的值 perspective(长度值),但它还是和在父元素设置有一定不同。因为父元素整个作为透视,而元素自己作为透视,导致不同。
//具体测试看透视的距离
img {
transform: perspective(1000px) rotateY(45deg);
}
CSS 其他样式
学习要点:1.颜色和透明度2.盒子阴影和轮廓3.光标样式
本章主要探讨 HTML5 中
CSS 其他剩下几个常用的样式,包括颜色、透明度、盒子的阴影轮廓以及光标的样式。
一.颜色和透明度
颜色我们之前其实已经用的很多了,比如字体颜色、背景颜色、边框颜色。但除了背景颜色和边框颜色讲解过,字体颜色却没有系统的讲解过。设置字体颜色其实也成为文本块的前景色。
属性 | 值 | 说明 | CSS 版本 |
color | 颜色值 | 设置文本前景色 | 1 |
color: red;
}
解释:设置文本颜色。
CSS3 提供了一个属性 opacity,可以设置元素的透明度。
属性 | 值 | 说明 | CSS 版本 |
opacity | 0 ~ 1 | 设置元素的透明度 | 3 |
color: red; opacity: 0.5;
}
解释:设置元素的透明度。
二.盒子阴影和轮廓
1.box-shadow
CSS3 提供了一个非常实用的效果样式,就是阴影效果。通过 box-shadow
属性来实现,样式表如下:
属性 | 值 | 说明 | CSS 版本 | |
阴影的水平偏移量,是一个长度 | ||||
hoffset | 值,正值表示阴影向右偏移,负值 | 3 | ||
表示阴影向左偏移。 | ||||
阴影的垂直偏移量,是一个长度 | ||||
voffset | 值,正值代表阴影位于元素盒子的 | 3 | ||
下方,负值代表阴影位于元素盒子 | ||||
上方。 | ||||
(可选)指定模糊值,是一个长度 | ||||
box-shadow | blur | 值,值越大盒子的边界越模糊。默 | 3 | |
认值为 0,边界清晰 | ||||
(可选)指定阴影延伸半径,是一 | ||||
spread | 个长度值,正值代表阴影向盒子各 | 3 | ||
个方向延伸扩大,负值代表阴影沿 | ||||
相反方向缩小 | ||||
color | (可选)设置阴影的颜色,如果省 | 3 | ||
略,浏览器会自行选择一个颜色 | ||||
inset | (可选)将外部阴影设置为内部阴 | 3 | ||
影。 | ||||
div { | ||||
width: 200px; | ||||
height: 200px; | ||||
border: 10px solid silver; | ||||
box-shadow: 5px 4px 10px 2px gray; | ||||
} |
box-shadow: 5px 4px 10px 2px gray inset;
解释:实现内部阴影。
2.outline
CSS3 还提供了轮廓样式,它和边框一样,只不过它可以在边框的外围再加一层。样式表如下:
属性 | 值 | 说明 | CSS 版本 |
outline-color | 颜色 | 外围轮廓的颜色 | 3 |
outline-offset | 长度 | 轮廓距离元素边框边缘的偏移量 | 3 |
outline-style | 样式 | 轮廓样式,和 border-style 一致 | 3 |
ontline-witdh | 长度 | 轮廓宽度 | 3 |
outline | 简写 | <颜色> <样式> <宽度> | 3 |
width: 200px;
height: 200px;
border: 10px solid silver;
outline: 10px double red;
}
解释:在边框的外围再增加一圈轮廓。
三.光标样式
我们不但可以指定页面上的元素样式,就连光标的样式也可以指定。样式表如下:
属性 | 值 | 说明 | CSS 版本 |
auto,default,none,context-men | |||
u,help,pointer,progress,wait, | |||
cell,crosshair,text,vertical- | |||
text,alias,copy,move,no-drop, | |||
cursor | 光标样式 | not-allowed,e-resize,n-resize | 1 |
,ne-resize,nw-resize,s-resize | |||
,se-resize,sw-resize,w-resize | |||
,ew-resize,ns-resize,nesw-res | |||
ize,nwse-resize,col-resize,ro | |||
w-resize,all-scroll | |||
cursor: move;
}
解释:设置当前元素的光标为移动光标。
第 20 章
CSS3 前缀和
rem
学习要点:
1.CSS3 前缀2.长度单位 rem
本章主要探讨 HTML5 中
CSS 在发展中实行标准化的一些问题,重点探讨
CSS3 中新属性前缀问题和新的单位
rem。
一.CSS3 前缀
在 CSS3 的很多新属性推出时,这些属性还处在不太稳定的阶段,随时可能被剔除。而此时的浏览器厂商为了实现这些属性,采用前缀方法。各大厂商前缀列表如下:
浏览器 | 厂商前缀 |
Chrome、Safari | -webkit- |
Opera | -o- |
Firefox | -moz- |
Internet Explorer | -ms- |
等。这几个属性我们在前面的使用中,并没有添加所谓的浏览器厂商前缀。那是因为,这些属性已经在主流浏览器或版本成为了标准。具体进化步骤如下:
1.属性尚未提出,这个属性所有浏览器不可用;
2.属性被提出,但未列入标准,浏览器厂商通过私有前缀来支持该属性;
3.属性被列入标准,可以使用前缀或不使用前缀来实现属性特性;
4.属性不需要再使用前缀,所有浏览器都稳定支持。
我们就拿 border-radius 举例,它是
CSS3 的标准属性。早期的时候处于实验阶段,尚未列入标准时,需要使用厂商前缀。具体浏览器支持度如下:
属性 | 浏览器 | 带前缀版本 | 不带前缀版本 | 标准/实验 |
IE | 不支持 | 9.0+ | ||
Firefox | 3.0 需带-moz- | 4.0+ | ||
border-radius | Safari | 3.1 需带-webkit- | 5.1+ | 标准 |
Chrome | 4.0 | 5.0+ | ||
Opera | 不支持 | 10.5+ | ||
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.Safari for
Windows 已被苹果公司在 2012
年放弃,遗留版本为 5.1.7。
最后说明:W3C 官方的立场表示实验阶段的属性仅为了测试,未来有可能修改或删除。而大量的开发者也认为在实际项目中不应该使用前缀,而使用一种优雅降级保证一定的用户
体验,而通过渐进增减的方式让新版高级浏览器保证最高的效果。
二.长度单位 rem
CSS3 引入了一些新的尺寸单位,这里重点推荐一个:rem
或者成为(根 em)。目前主流的现代浏览器都很稳定的支持。它和
em、百分比不同的是,它不是与父元素挂钩,而是相对于根元素<html>的文本大小来计算的,这样能更好的统一整体页面的风格。
//首先,来一段 HTML
<h1>标题<em>小标题</em></h1> <p>我是一个段落,我是一段<code>代码</code></p>
//其次来一段 CSS
html {
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;
}
浏览器 | rem 单位 |
Opera | 11.6+ |
Firefox | 3.6+ |
Safari | 5.0+ |
Chrome | 6.0+ |
IE | 9.0+ |
CSS3 文本效果
学习要点:1.文本阴影2.文本裁剪3.文本描边4.文本填充
本章主要探讨 HTML5 中
CSS3 中文本效果,其中也包含一些之前讲过的
CSS3 文本属
性。
一.文本阴影
CSS3 提供了 text-shadow
文本阴影效果,这个属性在之前讲过,只是没有涉及浏览器支持情况。
text-shadow | Opera | Firefox | Chrome | IE | Safari |
9.5+ | 3.5+ | 4+ | 10+ | 3.1+ | |
CSS2 的时候出现过,但各大浏览器碍于消耗大量的资源,迟迟未支持,然后在
CSS2.1 中剔除了。现在,CSS3 已经全面支持了;2.最低支持版本上,不同手册和教材上都不太同,但版本年代久远,无伤大雅。最准确的可以查询这个网站:http://caniuse.com。最需要注意的只有
IE10 才支持,IE9 不支持的;3.
目前的浏览器不需要给这个属性加上任何前缀,具体查询前缀版本可以访问刚才提供的地址。
//正值阴影
text-shadow: 1px 1px 1px red;
//负值阴影
text-shadow: -1px -1px 1px red;
//多重阴影叠加
text-shadow:0px 0px 0 rgb(188,178,188), 1px 0px 0 rgb(173,163,173), 2px 0px 0 rgb(157,147,157), 3px 0px 0 rgb(142,132,142), 4px 0px 0 rgb(126,116,126), 5px 0px 0 rgb(111,101,111), 6px 0px 0 rgb(95,85,95), 7px 0px 0 rgb(79,69,79),
8px 0px 7px rgba(0,0,0,0.35), 8px 0px 1px rgba(0,0,0,0.5), 0px 0px 7px rgba(0,0,0,0.2);
二.文本裁剪
CSS3 提供了 text-overflow
属性来控制文本的溢出部分,它的作用是对溢出的部分裁剪掉,然后判定是否添加省略号。首先我们先看下样式表的属性,如下:
属性值 | 说明 |
clip | 默认值,裁剪文本时不添加“...”省略号 |
ellipsis | 裁剪文本时添加“...”省略号 |
控制溢出
p {
width: 160px; white-space: nowrap; background: silver; /*text-overflow: clip;*/ text-overflow: ellipsis; overflow: hidden;
}
对于 text-overflow 的支持度,是根据它的属性值来判定的,不同的属性值浏览器支持度不同。
属性值 | Opera | Firefox | Chrome | IE | Safari | |
clip | 9.63+ | 2.0+ | 1.0+ | 6.0+ | 3.1+ | |
ellipsis | 10.5+ | 6.0+ | 1.0+ | 6.0+ | 3.1+ | |
//在 Opera 早期版本 10.0 | ~ 10.1 中,需要使用带前缀的-o-。 | |||||
p { |
}
而在 Opera 主流版本中,引擎已经靠拢
webkit,则不需要-o-了。目前来说,也不需要兼容-o-了。
三.文本描边
CSS3 提供了描边属性,即 text-stroke、text-stroke-width、text-stroke-color。
目前只有 webkit 引擎的浏览器支持,并且必须加上-webkit-前缀才能有效。
属性 | Opera | Firefox | Chrome | IE | Safari |
text-stroke 系列 | 15.0+ | 不支持 | 4.0+ | 不支持 | 3.1+ |
font-size: 50px; -webkit-text-stroke:1px red;
}
//修改描边的颜色和厚度 p {
font-size: 50px; -webkit-text-stroke:1px red; -webkit-text-stroke-color: orange; -webkit-text-stroke-width: 2px;
}
四.文本填充
CSS3 提供了一个文本颜色填充功能:text-fill-color,感觉和 color
属性很像。其
实在配合其他属性才能达到不一样的效果。
属性 | Opera | Firefox | Chrome | IE | Safari |
text-fill-color | 15.0+ | 不支持 | 4.0+ | 不支持 | 3.1+ |
属性没区别 p {
font-size: 150px; -webkit-text-fill-color: red;
}
//和 CSS3
背景的新特性搭配产生渐变文字 p {
font-size: 150px; font-family:
黑体; background:
-webkit-linear-gradient(top,#eee,#aaa 50%,#333 51%,#000); -webkit-background-clip:text;
-webkit-text-fill-color: transparent;
}
第 22 章
CSS3 渐变效果
学习要点:1.线性渐变2.径向渐变
本章主要探讨 HTML5 中
CSS3 背景渐变功能,主要有两种渐变方式:线性渐变和径向(放射性)渐变。
一.线性渐变
CSS3 提供了 linear-gradient
属性实现背景颜色的渐变功能。在以前,这种效果必须采用图片才能实现的。首先,我们先看一下它的样式表,如下:
linear-gradient(方位, 起始色, 末尾色) | ||
可选参数,渐变的方位。可以使用的值有:to top、to top | ||
方位 | right、to right、to bottom、to bottom left、to | |
left、to top left。 | ||
起始色 | 必选参数,颜色值 | |
末尾色 | 必选参数,颜色值 | |
background-image: linear-gradient(orange,green);
//增加一个方位
background-image: linear-gradient(to top,orange,green);
通过 top、left、right、bottom 这四组实现的渐变方向有时比较单一,我们可以使用以角度单位的数值来设置方位。比如
0 度(0deg)相当于
to top;角度会沿逆时针方向随着你的角度的增加而增加。
//通过角度设置方位,0 ~ 360
度之间,可以是负值 background-image: linear-gradient(45deg,orange,green);
//多色线性渐变
background-image: linear-gradient(-45deg,orange,green,blue,red);
//通过百分比设置多色线性位置
background-image: linear-gradient(-45deg, orange 0%, green 20%, blue 40%, red 100%);
默认情况下:起始颜色的百分比位置是 0%,末尾颜色的百分比位置是
100%,其他位置按照平均值分配。也可以使用
px 像素来设定,但计算麻烦点。
//结合背景,并使用透明渐变实现强大层次感 background-color: red;
background-image: linear-gradient(to top right, rgba(0,0,0,0.6), rgba(0,0,0,0));
//重复渐变属性值
background-image: repeating-linear-gradient(to top, orange 10px, green 30px);
目前最新的主流浏览器都支持 CSS3 的渐变属性,那么对于之前的浏览器支持度如何呢?可以参考如下的表:
Opera | Firefox | Chrome | Safari | IE | ||
部分支持需带前缀 | 11.5 | 无 | 4 | ~ 9 | 4 ~ 5 | 无 |
支持需带前缀 | 无 | 3.6 ~ 15 | 10 | ~ 25 | 5.1 ~ 6 | 无 |
支持不带前缀 | 12.1+ | 16+ | 26+ | 6.1+ | 10.0+ | |
//加上兼容前缀
background-image: -webkit-linear-gradient(to top, orange, green); background-image: -moz-linear-gradient(to top, orange, green); background-image: -o-linear-gradient(to top, orange, green); background-image:
linear-gradient(to top, orange, green);
repeating-linear-gradient 属性值和 linear-gradient
基本相同,不在赘述。
二.径向渐变
CSS3 提供了径向渐变,也叫做放射性渐变:radial-gradient
属性值。它是从一个点向四周发散的方式扩展。属性值样式表如下:
radial-gradient(方位,
起始色,
末尾色)
可选参数,径向的方位。可以使用的值有:像素、百分
方位
比、固定值,或复合搭配使用
起始色必选参数,颜色值
末尾色必选参数,颜色值
//两个必选参数
background-image: radial-gradient(orange, green);
//如果想设置第一个可选参数,有一种做法是设置为:cirlce(圆形)或 ellipse(椭圆形)。默认是椭圆形。
background-image: radial-gradient(circle, orange, green);
形状 | 说明 |
ellipse椭圆形,默认值
//不单单可以设置形状,还可以设置形状的发散方向 background-image: radial-gradient(circle at top, orange, green);
方向 | 说明 |
top | 从顶部发散 |
left | 从左侧发散 |
right | 从右侧发散 |
bottom | 从底部发散 |
center | 从中间发散 |
background-image: radial-gradient(circle at right bottom, orange,
green);
//可以设置发散的距离,即圆的半径长度
background-image: radial-gradient(circle closest-side, orange, green);
半径关键字 | 说明 |
closest-side | 指定径向渐变的半径长度为从圆心到离圆心最近的边 |
closest-corner | 指定径向渐变的半径长度为从圆心到离圆心最近的角 |
farthest-side | 指定径向渐变的半径长度为从圆心到离圆心最远的边 |
farthest-corner | 指定径向渐变的半径长度为从圆心到离圆心最远的角 |
//同样,也有重复背景方式
background-image: repeating-radial-gradient(circle 50px, orange, green);
//兼容模式
background-image: -webkit-radial-gradient(circle, orange, green); background-image: -moz-radial-gradient(circle, orange, green); background-image: -o-radial-gradient(circle, orange, green); background-image:
radial-gradient(circle, orange, green);
//两个重复背景只要加上前缀就是兼容模式了 background-image: -webkit-repeating-radial-gradient background-image: -moz-repeating-radial-gradient
background-image: -o-repeating-radial-gradient background-image: repeating-radial-gradient
第 23 章
CSS3 边框图片效果
学习要点:1.属性初探2.属性解释3.简写和版本
本章主要探讨 HTML5 中
CSS3 中边框图片背景的效果,通过这个新属性让边框更加的丰富多彩。
一.属性解释
CSS3 提供了一个新的属性集合,用这几个属性可以嵌入图片形式的边框。这样,边框就可以自定义了。
1.border-image-source 2.border-image-slice 3.border-image-width 4.border-image-repeat 5.border-image-outset 6.border-image
//引入背景图片地址//切割引入背景图片//边框图片的宽度//边框背景图片的排列方式//边框背景向外扩张//上面五个属性的简写方式
二.属性解释
要实现边框背景,我们对图片也有一定的要求,否则效果不能完全体现出来。图片可以通过九宫格的切分来了解它。我们使用
W3C 官网上教学的图片来讲解一下。
如上图所示,九宫格并不一定要求每一个格子大小都相同。当然,如果相同的话,制作边框背景就相对容易一点。比如如下这张图片:
首先,用 Photoshop 软件分析一下这个标准九宫格的总体大小和每个格子的大小。最终得出图片总大小为
81px 正方形,四个角的大小为
27px 的正方形,其余五个角也是
27px。
那么,第一步:先创建一个盒子区域,大小为 400x400 的矩形。然后设置引入边框图
像。
//引入边框图像
border-image-source: url(border.png);
单单只有这句话,webkit 引擎下的浏览器会在盒子区块的四个角看到一丁点图像的影子。而其他浏览器什么都看不到。这是由于没有设置边框背景图像的宽度导致的。
//设置边框图像宽度,上右下左,可以设置四个值
border-image-width: 81px;
这里设置的是边框图像的宽度,而不是边框宽度。当你设置边框宽度,你会发现,文本会偏移。而边框图像的宽度不会挤压文本。
//设置边框的宽度
border-width: 20px;
以上设置完毕后,支持边框背景图片的浏览器会在四个角落铺上这张图片的完整形式。这个时候需要通过引入切割属性来配置背景图片的显示方式。
//首先,边框图像宽度设置为 27px
和一个单格宽高一致 border-image-width: 27px;
//设置切割属性的大小 border-image-slice: 27;
这里的 27 不需要设置
px 像素,因为它默认就是像素。设置
27 之后,我们会发现边框的四个角正好是橘红色的四个角。那么你可以逐步放大或逐步放下这个值,来体验一下它的变化。
//从 27
逐步放大到 81,四个角都慢慢缩小,各自显示一个完整的图像
border-image-slice: 81;
//从 27
逐步缩小到 0,发现四个角都慢慢变大,配合 fill
整体显示一个完整图像
border-image-slice: 0 fill;
上面只是单独设置了一个像素表示四个边切割的大小,你也可以设置百分比、浮点值或者分别设置四个变的大小。
//33.5%差不多 27
border-image-slice: 33.5%;
//上下设置 27,左右设置 0
border-image-slice: 27 0;
如果想让边框背景向外扩张,那么可以进行扩张设置。//向外扩张 20px,也可以是浮点值,比如 2.2
border-image-outset: 20px;
四个角设定好之后,我们要设定四个变的显示排列方式。使用 border-image-repeat 属性,有四个值提供使用,分别如下表:
属性 | 说明 |
指定用平铺方式来填充边框背景图。当图片碰到边界时,如果超
repeat
过则被截断。
指定用平铺方式来填充边框背景图。图片会根据边框的尺寸动态
round
调整图片的大小,直至正好可以铺满整个边框。
指定用平铺方式来填充边框背景图。图片会根据边框的尺寸动态
space
调整图片的之间的间距,直至正好可以铺满整个边框。
//拉伸方式填充,当然,通过上右下左设置四个边均可
border-image-repeat: stretch;
//平铺填充,超过则被截断
border-image-repeat: repeat;
//平铺填充,动态调整图片大小直至铺满
border-image-repeat: round;
//平铺填充,动态调整图片的间距直至铺满 border-image-repeat: space;
//另一个按钮的小例子 div {
width: 400px; height: 40px;
border-image-source: url(button.png); border-image-width: 10px; border-image-slice: 10 fill; border-image-repeat: stretch;
}
三.简写和版本
//border-image 简写格式很简单,具体如下:border-image:<' border-image-source '> || <' border-image-slice
'> [ /
<' border-image-width '> | / <' border-image-width '>? / <' border-image-outset '> ]? || <' border-image-repeat '>
//以上是手册上摘录的,转换成实际格式如下: border-image: url(border.png) 27/27px round;
对于支持的浏览器及版本如下表:
Opera | Firefox | Chrome | Safari | IE | |
部分支持需带前缀 | 11.5~12.1 | 3.5 ~ 14 | 4 ~ 14 | 3.1 ~ 5.1 | 无 |
支持需带前缀 | 无 | 无 | 无 | 无 | 无 |
支持不带前缀 | 15+ | 15+ | 15+ | 6+ | 11.0+ |
-webkit-border-image: url(border.png) 27/27px round; -moz-border-image: url(border.png) 27/27px round; -o-border-image: url(border.png) 27/27px round; border-image: url(border.png) 27/27px round;
第 24 章
CSS3 变形效果[上]
学习要点:
1.transform
2.transform-origin
3.浏览器版本
本章主要探讨 HTML5 中
CSS3 的变形效果,通过变形效果,可以平移、缩放和旋转元素的功能。
一.transform
CSS3 提供了元素变形效果,也叫做变换。它可以将元素实现旋转、缩放和平移的功能。属性有两个:transform 和
transform-origin。
属性 | 说明 |
transform-origin
指定变换的起点
对于 transform 的属性值,具体如下表:
属性值 | 说明 |
none | 无变换 |
translate(长度值或百分数值) | 在水平方向、垂直方向或两个方向上平移 |
translateX(长度值或百分数值) | 元素。 |
translatY(长度值或百分数值) | |
scale(数值) | 在水平方向、垂直方向或两个方向上缩放 |
scaleX(数值) | |
元素 | |
scaleY(数值) | |
rotate(角度) | 旋转元素 |
skew(角度) | 在水平方向、垂直方向或两个方向上使元 |
skewX(角度) | |
素倾斜一定的角度 | |
skewY(角度) | |
matrix(4~6 数值,逗号隔开) | 指定自定义变换。 |
像素,也可以使用百分比 transform: translate(200px,200px);
//向水平平移 200
像素,不加后面的 0
也可以
transform: translate(200px,0);
transform: translateX(200px);
//向垂直平移 200
像素
transform: translate(0,200px);
transform: translateY(200px);
//水平、垂直方向放大 1.5
倍
transform: scale(1.5);
transform: scale(1.5,1.5);
//水平、垂直方向缩小 0.8
倍
transform: scale(0.8,0.8);
//水平方向放大 1.5
倍
transform: scaleX(1.5);
//垂直方向放大 1.5
倍
transform: scaleY(1.5);
//旋转元素,0 ~ 360
度之间,负值均可
transform: rotate(-45deg);
//倾斜元素,0 ~ 360
度之间,负值均可
transform: skew(45deg, 20deg);
//水平倾斜元素,0 ~ 360
度之间,负值均可
transform: skewX(45deg);
//垂直倾斜元素,0 ~ 360
度之间,负值均可
transform: skewY(45deg);
//通过六个数值指定矩形,其内部公式计算较为复杂,请百度吧
transform: matrix(1,0,0,1,30,30);
//不同的值可以累计,通过空格分割
transform: rotate(-45deg) scale(1.5);
二.transform-origin
transform-origin 属性可以设置变换的起点。默认情况下,使用元素的中心作为起点。具体设置方案参考如下表:
属性值 | 说明 |
百分数值 | 指定元素 x 轴或 y 轴的起点 |
长度值 | 指定距离 |
left | |
center | 指定 x 轴的位置 |
right | |
top | |
center | 指定 y 轴的位置 |
bottom | |
//默认值,以中心点变形 transform-origin: center center; transform-origin: 50% 50%;
//以左上角为基准点变形 transform-origin: left top; transform-origin: 0px 0px;
三.浏览器版本
CSS3 中的变形效果最低版本和需要前缀版本如下:
Opera | Firefox | Chrome | Safari | IE | |
支持需带前缀 | 11.5 ~ 22 | 3.5 ~ 15 | 4 ~ 35 | 3.1 ~ 8 | 9.0+ |
支持不带前缀 | 23+ | 16+ | 26+ | 无 | 10.0+ |
-webkit-transform: rotate(45deg); -moz-transform: rotate(45deg); -o-transform: rotate(45deg); -ms-transform: rotate(45deg); transform: rotate(45deg);
-webkit-transform-origin: left top; -moz-transform-origin: left top; -o-transform-origin: left top; -ms-transform-origin: left top; transform-origin: left top;
第 24 章
CSS3 变形效果[下]
学习要点:
1.3D 变形简介 2.transform-style
3.perspective 4.3D
变形属性
本章主要探讨 HTML5 中
CSS3 的变形效果,主要接着上节课的
2D 平面变形转换到
3D 立体变形。
一.3D 变形简介
之前我们学习了元素的平移、旋转、缩放和倾斜等功能。这些效果只是单纯在二维平面图上的,我们称之为
2D。那么其实
CSS3 也提供了三维立体的一些功能效果,并且目前较新的主流浏览器都比较支持,只不过比
2D 晚一些,对浏览器的版本要求也要高一些。
由于 3D 是立体三维,在
x、y 轴的基础上一般会多出一个
z 轴,深入跃出轴。以下是
3D 变形的属性值表,如下:
属性值 | 说明 |
translate3d(x,y,z) | 3D 方式平移元素,设置 x、y 和 z 轴 |
translateZ(z) | 设置 3D 方式平移元素的 z 轴 |
scale3d(x,y,z) | 3D 方式缩放一个元素 |
scaleZ(z) | 设置 3D 方式缩放元素的 z 轴 |
rotate3d(x,y,z,a) | 3d 方式旋转元素 |
rotateX(a) | |
rotateY(a) | 分别设置 3D 方式的旋转元素的 x、y 和 z 轴 |
rotateZ(a) | |
perspective(长度值) | 设置一个透视投影矩阵 |
matrix3d(多个值) | 定义一个矩阵 |
变形出来的要晚一些,所以如果需要兼容旧版本浏览器,可以对照这个表。具体如下:
Opera | Firefox | Chrome | Safari | IE | |
支持需带前缀 | 15 ~ 22 | 10 ~ 15 | 12 ~ 35 | 4 ~ 8 | 无 |
支持不带前缀 | 23+ | 16+ | 26+ | 无 | 10.0+ |
-webkit-transform: translateZ(200px); -moz-transform: translateZ(200px); -o-transform: translateZ(200px); -ms-transform: translateZ(200px); transform: translateZ(200px);
二.transform-style
transform-style 属性是指定嵌套元素如何在 3D
空间中呈现。
属性值 | 说明 |
flat | 默认值,表示所有子元素在 2D 平面呈现。 |
preserve-3d | 表示子元素在 3D 空间中呈现。 |
transform-style: preserve-3d;
需要再配合后面的功能属性和变形配置,才能看到效果。同样,这个属性也需要加上各种厂商前缀。
三.perspective
perspective 是 3D
变形的重要属性,该属性会设置查看者的位置,并将可视内容映射到一个视锥上,继而投放到一个
2D 平面上。
属性值 | 说明 |
默认值,表示无限的角度来看 3D 物体,但看上去是平的。
接受一个长度单位大于 0 的值,其单位不能为百分比。值长度值 越大,角度出现的越远,就好比你人离远一点看物体。值
越小,正相反。
//设置查看者的距离位置,一般设置在元素的父元素上
perspective: 1000px;
需要再配合后面的功能属性和变形配置,才能看到效果。同样,这个属性也需要加上各种厂商前缀。
四.3D 变形属性
我们运用前面 3D 功能属性
transform-style 和
perspective 来构建
3D 变形效果。
1.translate3d(x,y,z)
//需要 3D
位移的 HTML
结构,必须有父元素包含
<div id="a">
<img src="img.png" alt="" />
</div>
//CSS 部分,父元素设置 3D
呈现且设置透视距离
#a {
perspective: 1000px; transform-style: preserve-3d;
}
img { //z 轴可以是负值
transform: translate3d(300px,100px,240px);
}
2.translateZ(z)
//可以单独设置 z
轴,z
轴可以是负值
img {
transform: translateZ(240px);
}
3.scale3d(x,y,z)
//3D 缩放,单独设置无效,需要配合角度
img {
transform: scale3d(1,1,1.5) rotateX(45deg);
}
4.scaleZ(z)
//单独设置 z
轴,x
和 y 轴默认为 1
img {
transform: scaleZ(1.5) rotateX(45deg);
}
5.rotate3d(x,y,z,a)
//设置 3D
旋转,a
表示角度,xyz 是 0
或 1
之间的数值
transform: rotate3d(1,0,0,45deg);
6.rotateX(a)、rotateY(a)、rotateZ(a)
//单独设置 3D
旋转
transform: rotateX(45deg);
transform: rotateY(45deg);
transform: rotateZ(45deg);
transform: rotateX(45deg) rotateY(45deg) rotateZ(45deg);
最后一个 matrix3d 就不多说了,忽略。
CSS3 还提供了 perspective-origin
属性来设置 3D
变形中的源点角度。该属性默认值为 50% 50%也就是
center center。
属性值 | 说明 |
百分数值 | 指定元素 x 轴或 y 轴的起点 |
长度值 | 指定距离 |
left | |
center | 指定 x 轴的位置 |
right | |
top | |
center | 指定 y 轴的位置 |
bottom | |
perspective-origin: top right;
CSS3 还提供了一个在元素中设置透视的值 perspective(长度值),但它还是和在父元素设置有一定不同。因为父元素整个作为透视,而元素自己作为透视,导致不同。
//具体测试看透视的距离
img {
transform: perspective(1000px) rotateY(45deg);
}
相关文章推荐
- H5知识点大总结勾起你的欲望
- H5知识点大总结勾起你的欲望
- H5知识点大总结勾起你的欲望
- H5知识点大总结勾起你的欲望
- html5 canvas 实现简单的画图
- html5为什么能替代Flash?搞不懂
- Atitit .h5文件上传 v3
- Atitit .h5文件上传 v3
- Atitit .h5文件上传 v3
- h5学习笔记:ul 边框引起导航偏移
- html5标签说明
- HTML5 data-* 自定义属性
- HTML5属性data-*的操作
- HTML5属性data-*的操作
- HTML5 LocalStorage 本地存储
- h5第一章第四节
- h5第三章
- required - HTML5里的input标签的required属性提示文字修改
- Html5
- iis配置站点,页面中的video 视频标签加载的视频无法播放或者无法加载的解决方法