CSS知识总结(九)
CSS常用样式
10.自定义动画
1)关键帧(keyframes)
被称为关键帧,其类似于Flash中的关键帧。
在CSS3中其主要以“@keyframes”开头,后面紧跟着是动画名称加上一对花括号“{…}”,括号中就是一些不同时间段样式规则。
语法:@keyframes animationname {keyframes-selector {css-styles;}}
animationname:定义动画的名称。
keyframes-selector:以百分比来规定改变发生的时间,或者通过关键词 "from" 和 "to",等价于 0% 和 100%。建议定义百分比选择器。
css-styles:通过 @keyframes 规则,您能够创建动画,就是将一套 CSS 样式逐渐变化为另一套样式,并且能够多次改变这套 CSS 样式。
兼容性:目前浏览器都不支持@keyframes规则,需要加上前缀"-moz-","-o-","-webkit-"。
例子:
@-webkit-keyframes FromLeftToRight{ /* Safari 和 Chrome */
0% {left:;}
100% {left:800px;}
}
@-moz-keyframes FromLeftToRight{ /* Firefox */
0% {left:;}
100% {left:800px;}
}
@-o-keyframes FromLeftToRight{ /* Opera */
0% {left:;}
100% {left:800px;}
}
@keyframes FromLeftToRight{
0% {left:;}
100% {left:800px;}
}
2)动画名称(animation-name)
元素所应用的动画名称,必须与规则@keyframes配合使用,因为动画名称由@keyframes定义。
animation-name :none | <identifier>
<identifier>:定义一个或多个动画名称,如果是多个,用逗号分隔。
例子:
div{
-webkit-animation-name:FromLeftToRight;
-moz-animation-name:FromLeftToRight;
-o-animation-name:FromLeftToRight;
animation-name:FromLeftToRight;
}
@-webkit-keyframes FromLeftToRight{
0% {left:;}
100% {left:800px;}
}
@-moz-keyframes FromLeftToRight{
0% {left:;}
100% {left:800px;}
}
@-o-keyframes FromLeftToRight{
0% {left:;}
100% {left:800px;}
}
@keyframes FromLeftToRight{
0% {left:;}
100% {left:800px;}
}
3)动画时间(animation-duration)
指定对象动画的持续时间
animation-duration:<time>
例子 源代码:
/* CSS代码 */
.duration{
width:100px;
height:100px;
background:#000;
position:relative;
-webkit-animation-name:FromLeftToRight;
-webkit-animation-duration:3s;
-moz-animation-name:FromLeftToRight;
-moz-animation-duration:3s;
animation-name:FromLeftToRight;
animation-duration:3s;
}
@-webkit-keyframes FromLeftToRight{
0% {left:;}
100% {left:500px;}
}
@-moz-keyframes FromLeftToRight{
0% {left:;}
100% {left:500px;}
}
@keyframes FromLeftToRight{
0% {left:;}
100% {left:500px;}
}
<!-- HTML代码 -->
<body>
<p>请按F5刷新动画(矩形用3秒向右移动500px)</p>
<div class="duration"></div>
</body>
效果:
请按F5刷新动画(矩形用3秒向右移动500px)
4)动画的过渡速度(animation-timing-function)
animation-timing-function : ease | linear | ease-in | ease-out | ease-in-out | cubic-bezier(n,n,n,n)
①ease : 默认值,逐渐变慢(等于 cubic-bezier(0.25,0.1,0.25,1))
②linear : 匀速过渡效果(等于 cubic-bezier(0,0,1,1))
③ease-in : 加速的过渡效果(等于 cubic-bezier(0.42,0,1,1))
④ease-out : 减速的过渡效果(等于 cubic-bezier(0,0,0.58,1))
⑤ease-in-out : 加速然后减速(等于cubic-bezier (0.42, 0, 0.58, 1))
⑥cubic-bezier(n,n,n,n):在 cubic-bezier 函数中定义自己的值,可能的值是 0 至 1 之间的数值。
例子 源代码:
/* CSS代码 */
.function{
width:100px;
height:100px;
background:#ccc;
position:relative;
margin:5px;
-webkit-animation-name:FromLeftToRight;
-webkit-animation-duration:3s;
-moz-animation-name:FromLeftToRight;
-moz-animation-duration:3s;
animation-name:FromLeftToRight;
animation-duration:3s;
}
.ease-in{
-webkit-animation-timing-function:ease-in;
-moz-animation-timing-function:ease-in;
animation-timing-function:ease-in;
}
.ease-out{
-webkit-animation-timing-function:ease-out;
-moz-animation-timing-function:ease-out;
animation-timing-function:ease-out;
}
@-webkit-keyframes FromLeftToRight{
0% {left:;}
100% {left:500px;}
}
@-moz-keyframes FromLeftToRight{
0% {left:;}
100% {left:500px;}
}
@keyframes FromLeftToRight{
0% {left:;}
100% {left:500px;}
}
<!-- HTML代码 -->
<body>
<p>请按F5刷新动画(两个矩形同样在3秒用不同的速率向右移动500px)</p>
<div class="function ease-in">ease-in</div>
<div class="function ease-out">ease-out</div>
</body>
效果:
请按F5刷新动画(两个矩形同样在3秒用不同的速率向右移动500px)
5)动画延迟时间(animation-delay)
指定对象动画延迟的时间
animation-delay:<time>
例子 源代码:
/* CSS代码 */
.delay{
width:100px;
height:100px;
background:#000;
position:relative;
-webkit-animation-name:FromLeftToRight;
-webkit-animation-duration:3s;
-webkit-animation-delay:2s;
-moz-animation-name:FromLeftToRight;
-moz-animation-duration:3s;
-moz-animation-delay:2s;
animation-name:FromLeftToRight;
animation-duration:3s;
animation-delay:2s;
}
@-webkit-keyframes FromLeftToRight{
0% {left:;}
100% {left:500px;}
}
@-moz-keyframes FromLeftToRight{
0% {left:;}
100% {left:500px;}
}
@keyframes FromLeftToRight{
0% {left:;}
100% {left:500px;}
}
<!-- HTML代码 -->
<body>
<p>请按F5刷新动画(刷新后请等待2秒启动动画)</p>
<div class="delay"></div>
</body>
效果:
请按F5刷新动画(刷新后请等待2秒启动动画)
6)动画执行次数(animation-iteration-count)
animation-iteration-count:infinite | <number>
infinite表示无限次数,number指定循环次数。
例子 源代码:
/* CSS代码 */
.infinite{
width:100px;
height:100px;
background:#000;
position:relative;
-webkit-animation-name:FromLeftToRight;
-webkit-animation-duration:3s;
-webkit-animation-iteration-count:infinite;
-moz-animation-name:FromLeftToRight;
-moz-animation-duration:3s;
-moz-animation-iteration-count:infinite;
animation-name:FromLeftToRight;
animation-duration:3s;
animation-iteration-count:infinite;
}
@-webkit-keyframes FromLeftToRight{
0% {left:;}
100% {left:500px;}
}
@-moz-keyframes FromLeftToRight{
0% {left:;}
100% {left:500px;}
}
@keyframes FromLeftToRight{
0% {left:;}
100% {left:500px;}
}
<!-- HTML代码 -->
<body>
<p>动画全自动无限循环播放</p>
<div class="infinite"></div>
</body>
效果:
动画全自动无限循环播放
7)动画的顺序(animation-direction)
设置对象动画在循环中是否反向运动
animation-direction : normal | reverse | alternate | alternate-reverse
normal:正常方向
reverse:反方向运行
alternate:动画先正常运行再反方向运行,并持续交替运行
alternate-reverse:动画先反运行再正方向运行,并持续交替运行
例子 源代码:
/* CSS代码 */
.box{
width:100px;
height:50px;
background:#ccc;
margin:5px;
position:relative;
-webkit-animation-name:FormLeftToRight;
-moz-animation-name:FormLeftToRight;
animation-name:FormLeftToRight;
-webkit-animation-duration:5s;
-moz-animation-duration:5s;
animation-duration:5s;
-webkit-animation-iteration-count:infinite;
-moz-animation-iteration-count:infinite;
animation-iteration-count:infinite;
}
.reverse{
-webkit-animation-direction:reverse;
-moz-animation-direction:reverse;
animation-direction:reverse;
}
.alternate{
-webkit-animation-direction:alternate;
-moz-animation-direction:alternate;
animation-direction:alternate;
}
.alternate-reverse{
-webkit-animation-direction:alternate-reverse;
-moz-animation-direction:alternate-reverse;
animation-direction:alternate-reverse;
}
@-webkit-keyframes FormLeftToRight{
0%{left:;}
100%{left:500px;}
}
@-moz-keyframes FormLeftToRight{
0%{left:;}
100%{left:500px;}
}
@keyframes FormLeftToRight{
0%{left:;}
100%{left:500px;}
}
<!-- HTML代码 -->
<body>
<p>四种不同的顺序</p>
<div class="box">normal</div>
<div class="box reverse">reverse</div>
<div class="box alternate">alternate</div>
<div class="box alternate-reverse">alternate-reverse</div>
</body>
效果:
四种不同的顺序
8)动画的状态(animation-play-state)
设置对象动画的状态
animation-play-state:running | paused
running:运动
paused:暂停
例子 源代码:
/* CSS代码 */
.state{
width:100px;
height:100px;
background:#000;
position:relative;
-webkit-animation-name:FromLeftToRight;
-webkit-animation-duration:3s;
-webkit-animation-iteration-count:infinite;
-moz-animation-name:FromLeftToRight;
-moz-animation-duration:3s;
-moz-animation-iteration-count:infinite;
animation-name:FromLeftToRight;
animation-duration:3s;
animation-iteration-count:infinite;
}
.state:hover{
-webkit-animation-play-state:paused;
-moz-animation-play-state:paused;
animation-play-state:paused;
}
@-webkit-keyframes FromLeftToRight{
0% {left:;}
100% {left:500px;}
}
@-moz-keyframes FromLeftToRight{
0% {left:;}
100% {left:500px;}
}
@keyframes FromLeftToRight{
0% {left:;}
100% {left:500px;}
}
<!-- HTML代码 -->
<body>
<p>鼠标移动到矩形上可以暂停动画</p>
<div class="state"></div>
</body>
效果:
鼠标移动到矩形上可以暂停动画
9)动画时间之外的状态(animation-fill-mode)
设置对象动画时间之外的状态
animation-fill-mode : none | forwards | backwards | both
none:默认值。不设置对象动画之外的状态
forwards:设置对象状态为动画结束时的状态
backwards:设置对象状态为动画开始时的状态
both:设置对象状态为动画结束或开始的状态
例子 源代码:
/* CSS代码 */
.mode{
width:100px;
height:100px;
background:#000;
position:relative;
-webkit-animation-name:FromLeftToRight;
-webkit-animation-duration:3s;
-webkit-animation-fill-mode:forwards;
-moz-animation-name:FromLeftToRight;
-moz-animation-duration:3s;
-moz-animation-fill-mode:forwards;
animation-name:FromLeftToRight;
animation-duration:3s;
animation-fill-mode:forwards;
}
@-webkit-keyframes FromLeftToRight{
0% {left:;}
100% {left:500px;}
}
@-moz-keyframes FromLeftToRight{
0% {left:;}
100% {left:500px;}
}
@keyframes FromLeftToRight{
0% {left:;}
100% {left:500px;}
}
<!-- HTML代码 -->
<body>
<p>请按F5刷新动画(动画结束后停在结束位置)</p>
<div class="mode"></div>
</body>
效果:
请按F5刷新动画(动画结束后停在结束位置)
10)动画复合属性(animation)
通过 animation ,我们能够创建自定义动画,这可以在许多网页中取代动画图片gif、Flash 动画以及 JavaScript。
animation:<animation-name> || <animation-duration> || <animation-timing-function> || <animation-delay> || <animation-iteration-count> || <animation-direction> || <animation-fill-mode> || <animation-play-state> [ ,*]
利用学过的动画样式,制作一个下滑菜单栏
源代码:
/* CSS代码 */
.dropmenu{
width:100px;
height:30px;
line-height:30px;
text-align:center;
background:green;
border-radius:10px;
overflow:hidden;
}
.dropmenu a{
font-family:"微软雅黑";
font-size:18px;
color:#fff;
text-decoration:none;
}
.dropmenu ul{
list-style-type:none;
padding:;
margin:;
}
.dropmenu ul li{
background:#808080;
}
.dropmenu:hover{
-webkit-animation-name:SlideDown;
-moz-animation-name:SlideDown;
animation-name:SlideDown;
-webkit-animation-duration:1s;
-moz-animation-duration:1s;
animation-duration:1s;
-webkit-animation-fill-mode:forwards;
-moz-animation-fill-mode:forwards;
animation-fill-mode:forwards;
}
@-webkit-keyframes SlideDown{
0% {height:30px;}
100% {height:155px;}
}
@-moz-keyframes SlideDown{
0% {height:30px;}
100% {height:155px;}
}
@keyframes SlideDown{
0% {height:30px;}
100% {height:155px;}
}
<!-- HTML代码 -->
<body>
<div class="dropmenu">
<a href="###">菜单栏</a>
<ul>
<li><a href="###">AAA</a></li>
<li><a href="###">AAA</a></li>
<li><a href="###">AAA</a></li>
<li><a href="###">AAA</a></li>
</ul>
</div>
</body>
效果:
CSS知识总结(九)的更多相关文章
- [css]我要用css画幅画(九) - Apple Logo
接着之前的[css]我要用css画幅画(八) - Hello Kitty,这次画的是苹果公司的logo 这次打算将分析和实现步骤尽量详细的说一说. 其实之前的也打算详细讲分析和设计过程,不过之前的图比 ...
- CSS知识回顾--读《CSS 那些事儿》笔记
由于之前有了解过CSS的相关知识,有了一定的基础,所以读起<CSS 那些事儿>不是很有难度,况且我现在读起来时,CSS3和HTML5比较流行,这里只是记录一些CSS知识记录,不做详细铺开, ...
- 你该学点HTML/CSS知识的9大理由
每个人都应该学写代码——这一观点简直就是铺天盖地地映入我们眼帘.或许你会莫名其妙,程序员学代码那是理所应当,但是作为一个作家.营销人员.财务工作者甚至是工人,为什么也需要学习代码呢? 好吧,下面我会告 ...
- WEBBASE篇: 第五篇, CSS知识3
CSS知识3 框模型: 一,外边距(上文) 二, 内边距 1,什么是内边距? 内边距就是内容与元素边缘之间的距离: 注: 内边距会扩大元素边框内所占的区域的 语法: padding: 四个方向的 ...
- WEBBASE篇: 第四篇, CSS知识2
CSS知识2 一, 尺寸 与 边框 CSS单位 1,尺寸单位:(1)px 像素 (2)% (3) in 英寸 lin = 2.54cm (4)pt 磅 1pt = 1/72in ppi ...
- WEBBASE篇: 第三篇, CSS知识1
第三篇, CSS知识1 一,CSS 介绍 CSS: Cascading Style Sheets ---样式表 HTML: 搭建网页结构: CSS: 在网页结构基础上进行网页的美化: 二,CSS的使用 ...
- 《HTML与CSS知识》系列分享专栏
收藏HTML和CSS方面的技术文章,作为一个WEB开发者,必须要知道HTML和CSS方面的知识,即使作为后台开发者也应该知道一些常用的HTML和CSS知识,甚至架构师也要了解,这样才会开发出实用的网站 ...
- Web前端基础怎么学? JavaScript、html、css知识架构图
以前开发者只要掌握 HTML.CSS.JavaScript 三驾马车就能胜任一份前端的工作了.而现在除了普通的编码以外,还要考虑如何性能优化,如何跨端.跨平台实现功能,尤其是 AI.5G 技术的来临, ...
- 谈谈一些有趣的CSS题目(九)-- 巧妙的实现 CSS 斜线
开本系列,谈谈一些有趣的 CSS 题目,题目类型天马行空,想到什么说什么,不仅为了拓宽一下解决问题的思路,更涉及一些容易忽视的 CSS 细节. 解题不考虑兼容性,题目天马行空,想到什么说什么,如果解题 ...
随机推荐
- [Spring]IoC容器之进击的注解
先啰嗦两句: 第一次在博客园使用markdown编辑,感觉渲染样式差强人意,还是github的样式比较顺眼. 概述 Spring2.5 引入了注解. 于是,一个问题产生了:使用注解方式注入 JavaB ...
- 0-1背包问题蛮力法求解(java版本)
sloves: package BackPack; public class Solves { public int[] DecimaltoBinary(int n,int m) { int ...
- ExtJS 4.2 业务开发(一)主页搭建
本篇开始搭建一个ExtJS 4.2单页面应用, 这里先介绍主页的搭建,内容包括:主页结构说明.扩展功能等方面. 目录 1. 主页结构说明 2. 扩展功能 3. 在线演示 1. 主页结构说明 1.1 主 ...
- ASP.NET Core应用针对静态文件请求的处理[3]: StaticFileMiddleware中间件如何处理针对文件请求
我们通过<以Web的形式发布静态文件>和<条件请求与区间请求>中的实例演示,以及上面针对条件请求和区间请求的介绍,从提供的功能和特性的角度对这个名为StaticFileMidd ...
- ZKWeb网页框架1.4正式发布
本次更新的内容有 添加更快的批量操作函数 添加IDatabaseContext.FastBatchSave 添加IDatabaseContext.FastBatchDelete 注意这些函数不会触发注 ...
- 微信小程序开发日记——高仿知乎日报(中)
本人对知乎日报是情有独钟,看我的博客和github就知道了,写了几个不同技术类型的知乎日报APP要做微信小程序首先要对html,css,js有一定的基础,还有对微信小程序的API也要非常熟悉 我将该教 ...
- javaScript中的小细节-script标签中的预解析
首先介绍预解析,虽然预解析字面意思很好理解,但是却是出坑出的最多的地方,也是bug经常会有的地方,利用好预解析的特性可以解决很多问题,并且提高代码的质量及数量,浏览器在解析代码前会把变量的声明和函数( ...
- H3 BPM社区:流程开发者的学习交流平台
企业上市有上市流程,融资扩充有融资流程,项目招投标有招投标流程,部门领导选拔有晋升流程,员工请假休假有请假流程,早起上班梳洗有符合自己习惯的流程--生活处处是流程,流程无处不在.但从信息化建设来说,企 ...
- Android快乐贪吃蛇游戏实战项目开发教程-01项目概述与目录
一.项目简介 贪吃蛇是一个很经典的游戏,也很适合用来学习.本教程将和大家一起做一个Android版的贪吃蛇游戏. 我已经将做好的案例上传到了应用宝,无病毒.无广告,大家可以放心下载下来把玩一下.应用宝 ...
- BZOJ 3894: 文理分科 [最小割]
3894: 文理分科 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 674 Solved: 392[Submit][Status][Discuss] ...