过渡使用 trainsition 属性,让元素的样式变化,不再瞬间完成,而是可以设定时间,在时间段内逐渐完成。
对单独的div元素做分别做设置进行属性说明:
1、设置在3秒内完成颜色的变化
2、可以分别对不同的属性分开做时间长度的设定,记得用逗号隔开
3、延迟delay:想在某个属性开始执行样式变化后的多少秒,才让另一个属性开始进行样式的动态变化,就可以使用延迟。用法就是:
2s 1s width ,意思就是在高度开始发生变化后的1s后,width的宽度才开始展现变化,然后在2s内完成宽度从30px到60px的变化。
delay的真正意义在于,它指定了动画发生的顺序,使得多个不同的transition可以连在一起,形成复杂效果
3、变化的速度:默认不设定,就是逐渐放慢的,默认值是ease
还可以额外指定设置:
linear:匀速
ease-in:加速
ease-out:减速
上述的三个情况,可以综合写为:
对应的变化就是,div的宽度瞬间变化为60px,然后高度在宽度变化后的1s之后才开始发生变化,在3秒内逐渐加速完成。
重点:
兼容性:各大浏览器基本已经支持无前缀的transition,所以可以直接使用不加前缀;
transition的变化设置,是只对有明确数值设置变化的,对于none,block这类的文字描述无效;
有效性:transition是一次性的,无法重复,除非反复触发。
1、相比于过渡属性transition的设置,动画animation的实现支持更为复杂的动态样式效果。
对单独的div元素做分别做设置进行属性说明:
1、使用animation动画属性,最重要的就是配合有“关键帧”——@keyframes
样式设置如下:
这样的设置,就是将1s分为3帧,每帧显示不同的背景颜色,然后动画效果只显示1次。
注意动画执行完成之后,就恢复元素原来定义的样式设置,如果原来没有这个样式的定义,那也是动画执行完成后恢复没有的状态。
@keyframes的写法比较松泛:
0%等同于from,100%等同于to:
如上面的写法就等同于:
下面的关键帧的写法也是有效的:
当然,(1)也是有延迟效果的设置:设置延迟多少秒后执行动画
(2)每帧之间是平滑过渡的,当然也可以设置为分步过渡,这样就有卡顿的效果:
解释:该动画,在停留1秒后开始执行,执行3次,每次执行时间为2秒,在2秒时间执行完成rainbow定义的关键帧样式,然后分步执行,有卡顿效果。
2、动画持续:动画效果默认只播放一次,加入infinite关键字,可以让动画无限次播放
3、指定动画播放的次数,直接写数值:
4、如果想要让动画结束后,停留在结束状态的样式,而不是默认变为起始状态,就可以添加关键字:
animation-fill-mode属性:
none:默认值,回到动画没开始时的状态
forwards:让动画停留在结束状态
backwards:让动画回到第一帧的状态
4、如果想要将帧数的设置,反向执行,就可以使用animation-direction属性:
normal:动画循环播放时,每次都是从结束状态跳回到起始状态,再开始播放
reverse:动画执行,先从结束帧的样式执行跳回到起始帧的样式。例如:
所有的transform属性设置,都不会改变元素占据的位置,还是保留的
1、旋转rotate
通过rotate设置旋转角度,来旋转元素
以div元素为例:
···
<body>
<div class="transform"></div>
</body>
···
2、位移translate
设置X轴、Y轴方向的位移值
设置X轴方向的位移值
设置Y轴方向的位移值
3、缩放scale
设置元素水平方向和垂直方向同时缩放
设置元素水平方向缩放
设置元素垂直方向缩放
只设置一个参数,设置元素水平方向和垂直方向,同一比例同时缩放
4、扭曲:skew,设置元素的平面XY轴的扭曲角度
设置元素X轴,Y轴的扭转角度
只设置一个参数,元素X轴,Y轴的扭转角度相同
设置元素X轴的扭转角度
设置元素Y轴的扭转角度
1、绝对定位在绝大过程中,想确定一个元素在网站当中的固定位置,绝对定位是实现这个方式的解决办法。在网页当中,绝对定位可精确的控制元素在网页当中的位置,我们可使用顶部、底部、左侧和右侧,附上一个像素值来控制元素所在的位置。
position:absolutetop:50pxright:50px
上面的CSS设置一个元素的位置从浏览器的顶部和右边保持50px。你也可以在div内使用绝对定位。
2、覆盖所有样式
写CSS的时候都应该知道,当你想给一个元素添加一个新的CSS样式,但这个样式之前已经被定义过了。此时我们可以采用!important来定义。
例如,如果我想在我的网站的特定部分的H3标题是红色而不是黄色,可以使用下面的CSS:
.section h3 {color:red !important}
3、居中
居中分很多情况,一般会分成文本居中和DIV的内容居中。
文本居中
文本居中使用text-align:center。如果想让文本在左右两侧,可以使用左侧或右侧。
DIV内容
DIV内容居中跟文本居中不一样。CSS可以这样定义:
#div1 { display: blockmargin: autowidth: anything under 100% }
把宽度设置为“100%以下”的原因是因为如果它是100%宽度,那么如果是全宽度,并且不需要居中。最好有一个固定的宽度,如60%或550像素等。
4、垂直对齐(对于一行文本)
要使菜单的高度和文本的行高一致,可以这么设置:
.nav li{line-height:50pxheight:50px}
5、悬停效果
这适用于按钮,文本链接,网站的部分,图标等等。如果你想做一个悬停效果,可以试试:
.entry h2{font-size:36pxcolor:#000font-weight:800} .entry h2:hover{color:#ffeb3b}
这个功能可以让你的h2标签的颜色从黑色变成黄色。
6、悬停效果过渡
对于悬停效果,如使用菜单或网站上的图像,我们肯定不希望颜色快速贴近结果,所以我们可以通过使用时间变化来达到过渡的效果。
.entry h2:hover{color:#ffeb3btransition: all 0.5s ease}
这就使得样式上的改变,可以是从黑色变黄色的过渡时间是0.5秒,而不是立即变成黄色。这使得悬停效果更加和谐而不会显得太突兀。
7、a标签的状态
我们在遇到a标签的时候,一定要给a标签做样式定义,否则特别容易造成用户在使用上的困惑。通过样式可以让用户知道这个链接是否被点击过,更利于用户体验。
a:link {color: blue} a:visited {color: red}
8、轻松调整图像大小以适应
说到这个样式,我之前不知道可以通过以下方式达到图片的自适应效果。作为一个新手,我相信这个效果肯定有很多人都想做,当然,我提供的方法也只是其中的一种:
img {max-width:100%height:auto}
这个样式意味着最大的图像可能是100%,并根据图像宽度自动计算高度。在某些情况下,您可能还必须指定宽度为100%。
9、父级元素和子元素
如果ni不希望选择任意的后代元素,而是希望缩小范围,只选择某个元素的子元素,请使用子元素选择器:
h1 >strong {color:red}
特殊情况下你可能会想定义第N个子元素的样式,这样就可以用到下面这个样式:li:nth-child(n)
具体的使用方法可以去w3school上看。
10、将CSS应用于多个类或选择器
如果你想要在所有图片,博客部分和侧边栏上添加相同的边框。你不必写出相同的CSS样式重复3次。只需列出这些项目,用逗号分隔:
.blog,img,.sidebar {border: 1px solid #000}
制作时间首先,笔者在制作时间上进行对比,利用CSS3制作页面远比使用CSS节省时间。因为CSS3可以直接制作很多效果用来替换图片,而使用旧CSS版本制作的页面需要制作一些图片来体现效果,所以在制作图片上也要花费很多时间。
文件数量、容量及加载时间
CSS3版本的CSS文件大小为5.2K,网页文件总数为12,总容量为767.9K;CSS版本的CSS文件为4.5K,但网页文件总数为22,网页容量为849.2K。加载时间分别是3.3秒和4.7秒。
从以上数据可见,CSS3比CSS精简很多,速度也更快。
服务器请求次数
另外一个衡量指标是服务器请求次数,一般网页中有多少文件,就会对服务器有多少次请求数。不要小看这个指标,很多网页制作高手为了减少对服务器的请求负载,才探索出CSS Sprite技术。
CSS3中一共有12个文件,CSS版本中有22个文件,所以它们对服务器的请求数分别为12和22。又是CSS3胜出。
最后,综合以上的数据,在图三中已经列出CSS3和CSS的相关数据,CSS3完胜。
这下我们可以看到CSS3除了比较美观的效果外,还有更多的优点,毕竟它是网络技术发展中的产物,必然会向更加简单实用美观的方向发展。