CSS系列篇:CSS3的常见属性

html-css020

CSS系列篇:CSS3的常见属性,第1张

过渡使用 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除了比较美观的效果外,还有更多的优点,毕竟它是网络技术发展中的产物,必然会向更加简单实用美观的方向发展。