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. appium元素集合定位

    概念:某一类型元素的集合 list对象 来源:-控件复用 -相同的控件类型 -取名重复 语法:driver.findElements(By.id("text1")).get(0) ...

  2. python Redis

    Redis非关系型数据库,可以做消息队列功能,可以实现订阅功能,类似于广播,只要订阅道这个频道,发消息的时候,别人可以收到消息,做监控的时候,所有的客户端往一个频道上发消息,server端只有一个监听 ...

  3. linux 安装Gauss09 GaussView

  4. Linux的cron和crontab

    一 cron crond位于/etc/rc.d/init.d/crond 或 /etc/init.d 或 /etc/rc.d /rc5.d/S90crond,最总引用/var/lock/subsys/ ...

  5. 第九十三节,html5+css3移动手机端流体布局,基础CSS,头部设计,轮播设计,底部设计

    html5+css3移动手机端流体布局,基础CSS,头部设计,轮播设计,底部设计 基础CSS 首先将通用css属性写好 @charset "utf-8"; /*通用样式*/ /*去 ...

  6. Linux启动新进程的几种方法及比较[转]

    有时候,我们需要在自己的程序(进程)中启动另一个程序(进程)来帮助我们完成一些工作,那么我们需要怎么才能在自己的进程中启动其他的进程呢?在Linux中提供了不少的方法来实现这一点,下面就来介绍一个这些 ...

  7. CentOS安装Ruby组件

    ruby安装#安装ruby组件yum install ruby ruby-irb ruby-devel rubygems rpm-build -y#安装Apache服务器yum install htt ...

  8. MongoDB数据模型(三)

    六.数据模型引用 文档 我们已经知道MongoDB以文档的形式存储数据,而文档是JSON风格的数据结构,由一系列的“字段名-值”对组成,如下所示 { "item": "p ...

  9. 浙大pat 1029题解

    1029. Median (25) 时间限制 400 ms 内存限制 32000 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue Given an incre ...

  10. 解决MySQL 在 Java 检索遇到timestamp空值时报异常的问题

    使用JDBC检索MySQL数据库,如果遇到timestamp字段的值为空,那么会立即报出异常: ### Error querying database.  Cause: java.sql.SQLExc ...