CSS的transform、transition和animation属性

1.transform(倾斜):利用transform属性可以使导航栏稍微倾斜,或者使图片在访问者的鼠标经过它时放大两倍,甚至可以结合更多transform属性设计出其他效果。

例如,要旋转一个元素,要先提供关键字rotate,后面是要旋转的度数:

transform:rotate(10deg);   这条声明是将元素沿顺时针方向旋转10°。

解决兼容问题必须这样改写代码:

-webkit-transform:rotate(10deg);

-moz-transform:rotate(10deg);

-o-transform:rotate(10deg);

-ms-transform:rotate(10deg);

transform:rotate(10deg);

其中-ms-prefix是微软公司的供应商前缀。

CSS的transform属性有一项奇怪的特性,就是它们对于周围的元素不会产生影响。换句话说,如果将一个元素旋转成45°角,它实际上是重叠在元素的上方、下方或者旁边。例如,当你使用transform的scale功能放大某个元素时,浏览器会放大该元素但是不会移动周围的内容,会导致网页有些部位发生重叠。以下是transform属性的几种功能:

(1)rotate(旋转)功能:transform属性的rotate功能很容易理解:给它提供一个0~360之间的度数值,数字后面要带deg。正值代表顺时针旋转,负值代表逆时针旋转。

(2)scale(缩放)功能:调整元素的尺寸,让它变得更大或更小。

例如,为了使一个元素放大两倍,可以添加以下声明:

transform:scale(2);括号中提供的数字就是缩放的倍率。它要乘以元素的当前尺寸。scale最常见的用法就是让网页上的一个元素动态地发生视觉上的变化。例如,当鼠标移过一个按钮时,使该按钮突然变大。这种效果利用:hover状态可以实现。例如,假设网页上有一个链接应用了 .button类,可以创建一个简单的样式对按钮格式化“

. button {

font:9em Arial , Helvetica , sans-serif;

border-radius:.5em;

background-color:rgb(34,255,23);

border:1px  solid  rgba(0,0,0, .5);

padding:.5em;

}

为了着重强调这个按钮,可以使它在访问者的鼠标经过时稍微变大,像这样:

. button:hover {

-webkit-transform:scale(1.2);

-moz-transform:scale(1.2);

-o-transform:scale(1.2);

-ms-transform:scale(1.2);

transform:scale(1.2);

}

使用水平和垂直缩放,括号中要提供两个值,用逗号隔开。

CSS3还为水平缩放和垂直缩放提供了功能:scaleX沿着X轴缩放,scaleY沿着Y轴缩放。

(3)translate属性:

translate函数只是将一个元素从它现有的位置向左或向右以及向上或下移动一定的距离。translate函数有两个值:一个指定水平距离,负值向左,正值向右。另一个指定垂直距离,负值向上,正值向下。

(4)skew(倾斜);将元素倾斜时将它沿着X轴或Y轴倾斜:这样可以让元素产生一种三维效果。

多个transform函数共用:transform函数功能可以一起使用,在每个功能之间添加空格就好。例如,要将一个元素旋转45°并放大正常尺寸的两倍。可以这样编写代码:

transform:rotate(45deg) scale(2);

(5)origin:transform-origin属性可以改变元素的变换点。

2.transition是指在一定的时间之内,一组CSS属性变换到另一组属性的动画展示过程。为了使

(1)两个样式:一个样式代表该元素最初的样子,另一个样式代表最终的样子。Web浏览器将负责以动画形式展示这两个样式之间的变化过程。

(2)transition属性:CSS3增加了transition属性,这正是使动画成为可能的秘诀的所在。一般来说,是将transition属性应用到最初的样式中,定义动画开始之前的元素的外观样式。

(3)触发器:是指促使这两个样式发生变化的执行动作。可以用几个伪类来触发动画。其中最常用的是伪类:hover。

如何添加transition?

假设在链接中应用一个类.navButton,然后创建两个样式,像下面这样:

.navButton {

background-color:orange;

}

.navButton:hover{

background-color:blue;

}

这些样式在任何浏览器中都有效,当鼠标悬停在导航按钮上时,将会使它的背景色由橙色变成蓝色。但是,这种变化是瞬间的,为了使下面这个变化能持续1秒,必须在.navButton中添加两个新的属性,像下面这样:

.navButton {

background-color:orange;

transition-property:background-color;

transition-duration:1s;

}

.navButton {

background-color:blue;

}

第一个属性是transition-property,它定义了要以动画的形式展示哪些属性。或者用关键字all或者利用一个以逗号隔开的属性清单来指定多个属性。例如:假设创建一个:hover样式,文本颜色、背景色以及边框的颜色都会发生变化。你可以全部列出这3种属性,像这样:transition-property:color,background-color,border-color;或者为了简单起见,可以使用关键字all,像这样:transition-property:all。甚至可以针对每一个要以动画形式展示的属性分别定义时限。例如,当访问者的鼠标经过一个按钮时,想让文本颜色迅速发生变化,背景色则变化的稍微缓慢一些,边框色则变化的更缓慢一些。为了实现这些效果,需要利用transition-property列出要以动画形式展示的属性,然后利用transition-duration列出各个属性需要的时间,代码如下:

transition-property:color,background-color,border-color;

transition-duration:.25s,.75s,.2s;

这里的时间排列顺序必须与对应属性顺序一致。

可以使用transition-timing-function属性控制动画的速度。属性值可以为以下关键字之一:ease、ease-in、ease-out、ease-in-out和linear。ease会使动画一开始很慢中间逐渐加快,最后又逐渐减速。linear则是使整个动画过程平稳地发生变化。

transition-delay属性阻止transition立即开始展示动画。例如,如果想让动画延迟半秒钟才开始,可以添加以下代码:transition-delay:.5s。

3.animation:使用transition时,只能从一组属性变化到另一组属性,而使用animation则可以让一组属性转变到另一组属性,再转变到另一组属性。也可以让某一个动画重复,或者在有访问者的鼠标经过它时暂停,甚至让动画结束后立即自动返回。animation比transition更复杂一些,但是它不需要触发。

创建动画有两个步骤:

(1)定义动画:创建关键帧。

(2)将动画应用到元素上。

第一步:定义关键帧。其语法可能看起来显得有些怪异,以下是它的基本结构:

@keyframes  animationName  {

from  {

/* list  CSS  properties  here */

}

to  {

/* list  CSS  properties  here */

}

}

它以@keyframes开头,紧接着是动画的名称。然后添加至少两个关键帧。在本例中,关键字from和to用来创建起始关键帧和结束关键帧。每个关键帧中可以添加一个或者多个CSS属性。例如,想要创建一个动画,让一个元素淡入视图,就可以让opacity值先为0,再以1结束:

@keyframes  fadeIn{

from{

opacity:0;

}

to  {

opacity:1;

}

}

animation的一大缺点就是需要特定的供应商前缀。

4.假设想让一个带有重要通告的div在载入网页中淡入视图。这个div有一个类命名为announcement:<div  class=“announcement”>。

首先,用@keyframes规则创建淡入动画:

@keyframes  fadeIn {

from  {  opacity:0;}

to  {  opacity:1;}

}

然后将动画应用给<div>标签的样式:

. announcement  {

animation-name:fadeIn;

animation-duration:1s;

}

animation-那么属性告诉浏览器要使用哪一个动画。这个名字就是第一步创建的名字。

如何给animation定时?使用animation-duration属性可以控制动画的时长。

animation-iteration-count属性可以让动画运行一次、两次、甚至无限制。值可以是准确值(数字代表次数),也可以是关键字infinite(代表无限制)。

animation-direction:alternate可以让动画奇数次超前运行,偶数次后退运行。

animation-fill-mode:forwards告诉浏览器将动画保持为结束时的样子。

animation-play-state属性可以控制动画的播放。它只接受两个关键字:running和paused想要暂停某一个动画只要在样式中添加以下声明即可:animation-play-state:paused。

CSS3秘笈:第十章的更多相关文章

  1. CSS3秘笈复习:第九章&第十章

    第九章 1.和链接有关的伪类: (1):link,未访问过的链接 (2):visited,已访问过的链接 (3):hover,鼠标悬停链接 (4):active,单击链接时 这四种方式一定要严格按上面 ...

  2. CSS3秘笈第三版涵盖HTML5学习笔记13~17章

    第13章,构建基于浮动的布局 使用的是float(浮动)属性 注:float:none值将取消所有浮动,通常只用来取消元素中已经应用的浮动. 切记:不需要给正文的div设计宽度,即使设计成固定宽度也不 ...

  3. CSS3秘笈第三版涵盖HTML5学习笔记9~12章

    第9章,装饰网站导航 限制访问,处于隐私方面考虑,浏览器已经开始限制可以对伪类:visited应用哪些CSS属性了.其中包括对已访问过的链接定义color.background-color.borde ...

  4. CSS3秘笈第三版涵盖HTML5学习笔记6~8章

    第二部分----CSS实用技术 第6章,文本格式化 指定备用字体: font-family:Arial,Helvetica,sans-serif; 当访问者没有安装第一种字体时,浏览器会在列表中继续往 ...

  5. CSS3秘笈第三版涵盖HTML5学习笔记1~5章

    第一部分----CSS基础知识 第1章,CSS需要的HTML HTML越简单,对搜索引擎越友好 div是块级元素,span是行内元素 <section>标签包含一组相关的内容,就像一本书中 ...

  6. CSS3秘笈:第八章

    给网页添加图片 1. 常用来处理图片的CSS属性: (1)     border(边框):给图片添加边框. (2)     padding(填充):边框和图片之间填充空间. (3)     float ...

  7. 《CSS3秘笈》备忘录

    第一部分 1.  类名称区分大小写:.special和.SPECIAL不一样 2.  :focus 是通过单击或跳格集中在某个地方 3.  ::selection 没有单冒号,被选中的文本[ 但是在I ...

  8. CSS3秘笈复习:十三章&十四章&十五章&十六章&十七章

    第十三章 1.在使用浮动时,源代码的顺序非常重要.浮动元素的HTML必须处在要包围它的元素的HTML之前. 2.清楚浮动: (1).在外围div的底部添加一个清除元素:clear属性可以防止元素包围浮 ...

  9. CSS3秘笈复习:第十一章

    1.text-align与vertical-align: text-align控制水平方向的定位,关键字是left.right.center和justify. vertical-align控制垂直方向 ...

随机推荐

  1. js检测文章敏感词

    在一些博客或者论坛中,文章中的敏感词需要显示出来和高亮显示起到提示用户的作用.这个功能实现的方法有很多,下面是js的实现方式. //将文章中匹配到的敏感词罗列出来 <span style=&qu ...

  2. zTree 勾选checkbox

    zTree 勾选checkbox var setting = {    check: {        enable: true//        chkboxType : { "Y&quo ...

  3. C#常见数据格式导出

    首先定义一个实体类 /// <summary> /// 用户实体类 /// </summary> public class User { /// <summary> ...

  4. Android中帧动画的创建

    帧动画,实质上就是快速播放多张连接效果的图片,现在一般可用于下拉刷新时候的headView 实现步骤: 1.首先应该准备一组连接效果的图片 2.在res>drawable目录下创建xml文件,将 ...

  5. HDU - 3068 最长回文(manacher)

    HDU - 3068 最长回文 Time Limit: 2000MS   Memory Limit: 32768KB   64bit IO Format: %I64d & %I64u Subm ...

  6. 通用mapper的使用

    通用mapper的使用 导入依赖 <dependency> <groupId>com.github.abel533</groupId> <artifactId ...

  7. zoj 1718 poj 2031 Building a Space Station

    最小生成树,用了Kruskal算法.POJ上C++能过,G++不能过... 算出每两个圆心之间的距离,如果距离小于两半径之和,那么这两个圆心之间的距离直接等于0,否则等于距离-R[i]-R[j]. # ...

  8. linux下文件搜索

    常用: grep -nr "关键字" 搜索当前目录下所有匹配关键字的文件 grep -nr "关键字" *php  搜索当前目录下所有匹配关键字的php文件 f ...

  9. javascript中的事件处理

    事件处理:http://www.cnblogs.com/polk6/archive/2016/02/19/5154470.html#Menu2-DOMEventSpecification addEve ...

  10. Java 工具 JUnit单元测试

    Java 工具 JUnit单元测试 @author ixenos 1.1.   JUnit单元测试框架的基本使用 一.搭建环境: 导入junit.jar包(junit4) 二.写测试类: 0,一般一个 ...