30分钟玩转css3动画, transition,animation
其实css3动画是就是2种实现,一种是transition,另一种就是animation。transition实现的话就是只能定制开始帧,和结束2帧;而animation实现的话可以写很多关键帧。
没有前戏,直进主题。
transition
包含4个值,例如:-webkit-transition:all .5s ease 1s;
分别顺序是(m代表必须): 变换的属性(m)、变换过渡的时间(m)、变换的速率、变换延时执行的时间。
来个小demo:
- <!DOCTYPE html>
- <html>
- <head>
- <title></title>
- <meta charset="utf-8">
- <style>
- .transition {
- width:30px;
- height: 30px;
- line-height: 30px;
- border-radius: 50%;
- text-align: center;
- display: inline-block;
- background:lightblue;
- -webkit-transition:all .5s ease;
- transition:all .5s ease;
- color:#fff;
- }
- .transition:hover {
- -webkit-transform:rotate(360deg);
- transform:rotate(360deg);
- }
- </style>
- </head>
- <body>
- <div class="transition">×</div>
- </body>
- </html>
应用例子:
http://skyweaver213.github.io/slide/widget/slide2/slide.html
http://skyweaver213.github.io/slide/widget/slide3/slide.html
animation:
就是一个动画对应一个keyframes,然后一个keyframes 里可以有N多个关键帧。
例如一个keyframes里我们可以这样写:
- @-webkit-keyframes go {
- 0%, 100% {
- -webkit-transform: translateX(0);
- }
- 50% {
- -webkit-transform: translateX(500px);
- }
- }
然后我们需要在应用这个keyframes的元素上写一个animation,
例如:-webkit-animation:go 2.5s ease infinite 0;
参数顺序分别是(m代表必须):动画名字(m)、执行的时间(m)、过渡的速率、执行多小次、延迟执行的时间
小demo:
- <!DOCTYPE html>
- <html>
- <head>
- <title></title>
- <style>
- .animation {
- width: 100px;
- height: 100px;
- display: block;
- background: pink;
- -webkit-animation: go 2.5s infinite;
- /*-webkit-animation: go 2.5s cubic-bezier(.25, -0.25, .75, 1.25) infinite;*/
- }
- @-webkit-keyframes go {
- 0%, 100% {
- -webkit-transform: translateX(0);
- }
- 50% {
- -webkit-transform: translateX(500px);
- }
- }
- </style>
- </head>
- <body>
- <div class="animation"></div>
- </body>
- </html>
应用deom:loading状态、三条线变箭头。
http://skyweaver213.github.io/slide/widget/slide1/slide.html
- <!DOCTYPE html>
- <html>
- <head>
- <title></title>
- <style>
- .loading {
- position: relative;
- width: 40px;
- height: 40px;
- margin: 40px auto;
- -webkit-transform:rotate(165deg);
- }
- .loading:before, .loading:after {
- content: '';
- position: absolute;
- width: 8px;
- height: 8px;
- top: 50%;
- left: 50%;
- display: inline-block;
- border-radius: 4px;
- -webkit-transform: translate(-50%, -50%);
- }
- .loading:before {
- -webkit-animation:before 2s infinite;
- }
- .loading:after {
- -webkit-animation:after 2s infinite;
- }
- @-webkit-keyframes before {
- 0% {
- width: 8px;
- box-shadow: 16px -8px rgba(225, 20, 98, 0.75), -16px 8px rgba(111, 202, 220, 0.75);
- }
- 35% {
- width: 40px;
- box-shadow: 0 -8px rgba(225, 20, 98, 0.75), 0 8px rgba(111, 202, 220, 0.75);
- }
- 70% {
- width: 8px;
- box-shadow: -16px -8px rgba(225, 20, 98, 0.75), 16px 8px rgba(111, 202, 220, 0.75);
- }
- 100% {
- box-shadow: 16px -8px rgba(225, 20, 98, 0.75), -16px 8px rgba(111, 202, 220, 0.75);
- }
- }
- @-webkit-keyframes after {
- 0% {
- height: 8px;
- box-shadow: 8px 16px rgba(61, 184, 143, 0.75), -8px -16px rgba(233, 169, 32, 0.75);
- }
- 35% {
- height: 40px;
- box-shadow:8px 0 rgba(61, 184, 143, 0.75),-8px 0 rgba(233, 169, 32, 0.75);
- }
- 70% {
- height: 8px;
- box-shadow: 8px -16px rgba(61, 184, 143, 0.75), -8px 16px rgba(233, 169, 32, 0.75);
- }
- 100% {
- box-shadow: 8px 16px rgba(61, 184, 143, 0.75), -8px -16px rgba(233, 169, 32, 0.75);
- }
- }
- </style>
- </head>
- <body>
- <div class="loading"></div>
- </body>
- </html>
变换成箭头:
- <!DOCTYPE html>
- <html>
- <head>
- <title></title>
- <style>
- * {
- margin:0;
- padding:0;
- }
- .arrow_div {
- width: 100px;
- height: 100px;
- background: #000;
- position: relative;
- }
- .arrow {
- width: 33px;
- height: 4px;
- display: inline-block;
- background: #fff;
- position: absolute;
- left:0;
- right:0;
- }
- .arrow_body {
- margin: auto;
- top:40px;
- -webkit-animation: 2s linear body_kf infinite;
- }
- @-webkit-keyframes body_kf {
- 0% {
- }
- 30%, 50% {
- -webkit-transform: rotate(180deg);
- }
- 80%, 100% {
- -webkit-transform: rotate(360deg);
- }
- }
- .sleft {
- width: 33px;
- height: 33px;
- border: transparent;
- position: absolute;
- top: 25px;
- margin: 0 auto;
- left: 0;
- right: 0;
- -webkit-animation: 2s linear sleft_kf infinite;
- }
- .sleft:before {
- content: '';
- width: 33px;
- height: 4px;
- display: inline-block;
- background: #fff;
- top: 0;
- position: absolute;
- -webkit-animation: 2s linear sleft_before_kf infinite;
- }
- @-webkit-keyframes sleft_kf {
- 0% {}
- 30%, 50% {
- -webkit-transform: rotate(222deg);
- }
- 80%,100% {
- -webkit-transform: rotate(360deg);
- }
- }
- @-webkit-keyframes sleft_before_kf {
- 0%, 100%{}
- 20% {
- width: 28px;
- top: 1px;
- left: 3px;
- }
- 25% {
- width: 26px;
- top: 2px;
- left: 6px;
- }
- 30%, 40%, 50% {
- width: 22px;
- top: 3px;
- left: 8px;
- }
- 80% {
- width: 33px;
- top:0;
- left:0;
- }
- }
- .sright {
- width: 33px;
- height: 33px;
- border: transparent;
- position: absolute;
- margin: 0 auto;
- left: 0;
- right: 0;
- top: 25px;
- position: absolute;
- -webkit-animation: 2s linear sright_kf infinite;
- }
- .sright:before {
- content: '';
- width: 33px;
- height: 4px;
- display: inline-block;
- background: #fff;
- bottom: 0;
- position: absolute;
- -webkit-animation: 2s linear sright_before_kf infinite;
- }
- @-webkit-keyframes sright_kf {
- 0% {}
- 30%, 50% {
- -webkit-transform: rotate(135deg);
- }
- 80%,100% {
- -webkit-transform: rotate(360deg);
- }
- }
- @-webkit-keyframes sright_before_kf {
- 0%,100% {}
- 20% {
- width: 28px;
- bottom: 1px;
- right: 1px;
- }
- 25% {
- width: 25px;
- bottom: 2px;
- right: 2px;
- }
- 30%, 40%, 50% {
- width: 22px;
- bottom: 3px;
- right: 3px;
- }
- 80% {
- width: 33px;
- bottom: 0;
- right:0;
- }
- }
- </style>
- </head>
- <body>
- <div class="arrow_div">
- <div class="sleft"></div>
- <i class="arrow arrow_body"></i>
- <div class="sright"></div>
- </div>
- </body>
- </html>
30分钟玩转css3动画, transition,animation的更多相关文章
- css3动画transition animation
CSS动画简介 transition animation transition过渡:css3通过transitions属性引入时间概念,通过开始.结束状态自动计算中间状态,实现状态改变的过渡效果 ...
- CSS动画-transition/animation
HTML系列: 人人都懂的HTML基础知识-HTML教程(1) HTML元素大全(1) HTML元素大全(2)-表单 CSS系列: CSS基础知识筑基 常用CSS样式属性 CSS选择器大全48式 CS ...
- CSS3动画属性animation的用法
转载: 赞生博客 高端订制web开发工作组 » CSS3动画属性animation的用法 CSS3提供了一个令人心动的动画属性:animation,尽管利用animation做出来的动画没有flash ...
- 学习笔记之Linux Shell脚本教程:30分钟玩转Shell脚本编程
Linux Shell脚本教程:30分钟玩转Shell脚本编程 http://c.biancheng.net/cpp/shell/
- CSS3动画以及animation事件
1.CSS3动画以及animation事件的定义 animation :name duration timing-function delay iteration-count direction an ...
- CSS3(transform/transition/animation) 基础 总结
1.CSS3新增的样式(常用) //颜色透明表示rgba(0,0,0,.5) //圆角(定义角半径)border-radius: 5px 10px 15px 20px; //文字/盒子阴影text-s ...
- 学习CSS3动画(animation)
CSS3就是出了不少高大上的功能,3D效果.动画.多列等等.今天写篇文章记录怎么一下怎么用CSS3写一个动画. 丑话还得说前头,IE9以及以下版本不支持CSS3动画(如真要实现可以考虑用js,不过估计 ...
- css3 tranform transition animation
tranform:对象图形变形 tranform的属性包括: 1.none 表示不进行变换: 2.rotate 旋转 transform:rotate(20deg) 旋转 ...
- CSS3 动画实现 animation 和 transition 比较
在 CSS3 中有两种方式实现动画, 分别是 animation 和 transition, 他们都有以下功能 根据特定 CSS 属性进行动画 设定属性变化的 timing function 设定动画 ...
随机推荐
- 【洛谷5309】[Ynoi2012] D1T1(分块)
点此看题面 大致题意: 两种操作,区间求和,将形如\(ax+y\)的位置的元素值加\(z\). 分块 这种题目显然就是按照\(x\)与\(\sqrt n\)的大小关系来分块. 对于\(x>\sq ...
- LA 3353 最优巴士线路设计
给出一个 n 个点的有向图,找若干个圈,是的每个结点恰好属于一个圈.要求总长度尽量小. 三倍经验题 Uva 12264,HDU 1853 这题有两种解法,一是匹配: 每个点只在一个圈中,则他有唯一的前 ...
- echarts图表与可视窗口的自适应
由于要适应屏幕尺寸,发现了这个问题.网上搜到了两个办法,如下: 方法一: window.onresize = mychart.resize; 方法二: window.addEventListener( ...
- NW.js开发环境的搭建
写在前面: 之前一直在找关于在mac怎么搭建nw.js的开发环境,苦于自己也没有很深入的理解,其实看看官方文档就差不多知道mac下要怎么整了. 官方文档的图: 正题开始: 先去下载一个nw.js的安装 ...
- 解决 Database Configuration Assistannt安装oracle实例使的 警告
在创建到85%的时候报错,错误如下: 解决办法: 经过查看警告中给出的日志文件F:\develop\oracle_data\app\Administrator\cfgtoollogs\dbca\tes ...
- 【luogu P2880 [USACO07JAN]平衡的阵容Balanced Lineup】 题解
题目链接:https://www.luogu.org/problemnew/show/P2880 是你逼我用ST表的啊qaq #include <cstdio> #include < ...
- Entity Framework5.0运行时错误ObjectStateManager 中已存在具有同一键的对象
EF写了个简单的框架,在把查询出来的数据修改回去时,报了ObjectStateManager 中已存在具有同一键的对象这样一个错误,寻寻觅觅终于找到了最终的解决方案. ObjectStateManag ...
- android中cursor对象的使用
cursor对象是使用行来存储数据的,你要使用它获得数据,就必须知道每一列的数据名称以及他的数据类型才能获得对象数据 常见的方法: .close()关闭资源:记住,所有的资源对象使用完成后都要主动关闭 ...
- 在react中实现CSS模块化
react中使用普通的css样式表会造成作用域的冲突,css定义的样式的作用域是全局,在Vue 中我们还可以使用scope来定义作用域,但是在react中并没有指令一说,所以只能另辟蹊径了.下面我将简 ...
- 课时59.体验css(理解)
我们想做这样一个样式,应该怎么做? 分析: 有一个标题(h1),还有一些段落(p) 标题是居中的,段落也是居中的,所以我们可以设置h标签和p标签居的align属性等于center来实现 标题和段落都有 ...