css帧动画点击执行一次_CSS动画深入浅出
实现向右移动动画
如果我们想要一个按钮,控制一个div向右移动的动画效果,该怎么实现呢?
有三种实现的方法,下面我们分别介绍三种方法
1.通过设定left
实现思路:通过改变left实现div的右移
实现案例请点击:https://jsbin.com/leduqolugi/edit?html,js,output
JS核心代码:
function startMove(){var n =0;var timer = setInterval(() => {if(n<=30){box.style.left = n/100*300 +'px';n++;}else{clearInterval(timer);}},100);
}
2.通过transform + transition
实现思路:使用transform属性里的translateX来完成移动,并且使用transition的过渡效果。
实现案例请点击:https://jsbin.com/tujigujemi/edit?html,css,js,output
CSS代码:
#box{width:100px;height:100px;background:red;transition:all 2s;
}
#box.move{transform:translateX(100px);
}
CSS核心代码有两行:
1.transition:all 2s; 让整个移动在2s内完成,transition的作用是给我开头和结尾,我来补充中间帧。
2.transform:translateX(100px);实现右移100px。
JS代码:
function startMove(){box.classList.add('move')
}
3.使用animation
实现案例请点击:https://jsbin.com/xefawusuku/edit?html,css,js,output
animation的核心就是定义关键帧, 其中move是这个动画的名字。
@keyframes move{0%{transform:translateX(0px);}100%{transform:translateX(100px)}
}
然后,写一个move类,指定让move运行2s。
#box.move{animation:move 2s;
}
然后,JS添加上这个类。
start.addEventListener('click',()=>{box.classList.add('move');
})
关于transition的总结
有些属性不能用transition,比如display:block变成display:none
当我们想做的动画效果是想让一个显示的div消失,可以有两种方法:
1.用Opacity,最开始设置opacity:1,点击按钮后设置opacity:0
但是,opacity后,这个元素仍然占有相应的空间,所以还应该用JS去掉这个元素,可以用的事件是transitionend
实现案例请点击:https://jsbin.com/tesusotira/edit?html,css,js,output
start.addEventListener('click',()=>{box.classList.add('end');
});
box.addEventListener('transitionend',()=>{box.remove();
});
2.还可以改用visibility:visible 改为 hidden
总结:可以用opacity : 1 -> 0 或者 visibility: visible -> hidden 替代 display: block -> none
关于animation的总结
1.animation组成部分:
<1>关键帧keyframes
<2>animation属性,animation: 动画名称(必需),执行一次所需时间(必需),动画在开始前的延迟时间,动画的运行速度轨迹(linear:匀速,默认ease:低速-加速-低速),动画的播放次数(infinite:无限循环)
2.稍微复杂一点的动画
实现案例请点击:https://jsbin.com/fetudazucu/edit?html,js,output
实现效果如下:
代码如下:
注意:animation-play-state 和 animationPlayState的书写方式
实现一颗跳动的爱心
实现案例请点击:https://jsbin.com/sivunicowa/edit?html,css,output
css帧动画点击执行一次_CSS动画深入浅出相关推荐
- 动画总结 Core Animation 贝赛尔曲线 显式动画 隐式动画
Core Animation 接下来详细介绍下动画的各个属性及作用 fromValue: 动画的开始值(Any类型, 根据动画不同可以是CGPoint.NSNumber等) toValue: 动画的结 ...
- html鼠标点击伪类,CSS伪类:CSS3鼠标滑过按钮动画
前言 按钮,对开发者而言,是非常常见的一个功能.前端通常会对按钮加入一些操作交互样式,增加一些用户体验. 比如:hover样式.点击样式.loading样式等.下面我们通过简单示例在学习一下css3动 ...
- CSS 帧动画 播放动画
CSS3 帧动画 amimation @keyframes 在 CSS3 出现之前,动画都是通过 JavaScript 动态的改变元素的样式属性来完成了,这种方式虽然能够实现动画,但是在性能上存在一些 ...
- 六、CSS 速览 —— 平面转换、3D转换、动画
平面转换.3D转换.动画 字体图标 iconfont 阿里图标库 从图标库引用素材 平面转换 transition: all 1s; 设置元素变换动画 transform: translate(px, ...
- css硬件加速_CSS动画的硬件加速简介
css硬件加速 In the last couple of years we've often heard about hardware acceleration and how it helps t ...
- CSS 实现按钮点击动效的套路
大厂技术 高级前端 Node进阶 点击上方 程序员成长指北,关注公众号 回复1,加入高级Node交流群 在 Web 中,大部分按钮可能都是平平无奇的,有时候为了强调品牌特殊或者满足特殊功能,可能需 ...
- Animate.css+wow.js实现页面滚动到可视区显示动画效果
今天看迅雷官网 https://www.xunlei.com/v2018/dist/aboutus.html 实现的滚动到可视区域后显示动画,自己之前没做过这种,非常感兴趣,然后问小伙伴, 大部分都没 ...
- 解惑:如何使用html+css+js实现旋转相册,立方体相册等动画效果
解惑:如何使用html+css+js实现旋转相册,立方体相册等动画效果 一.前言 最初还是在抖音上看到可以使用简单地代码实现炫酷的网页效果的,但是想要找到可以运行的代码还是比较困难的,最近突然想起就在 ...
- Activity切换动画---点击哪里从哪放大
本篇文章已授权微信公众号 安卓巴士Android开发者门户 独家发布 emmmm,这次来梳理一下 Activity 切换动画的研究.首先,老规矩,看一下效果图: 效果图 这次要实现的动画效果就是类似于 ...
最新文章
- python批量读取dat文件_python编写Windows环境下批量修改文件名
- [ZPG TEST 109] 兔子跳跃【构图】
- NoMasp博客导读
- 浅谈android hook技术
- 三十三、五大数据处理的R包
- [转]软件保护之注册算法篇
- orcadcapture安装_OrCad Capture
- 虚拟机专用精简版win7系统_新手玩NAS:创建虚拟机,安装WIN10,实现迅雷下载和百度云...
- Docker 停止容器
- 人类的下一个走向:无用阶级
- 我逢人就吹的超好用Markdown编辑器-Typora
- 2019很艰难,2020会更好吗
- 将图片上传到FTP服务器
- 电商系统-优惠券部分设计
- 八一农垦大学计算机科学与技术专业好不好,黑龙江八一农垦大学最好的专业(什么专业最好)...
- Hessian/Burlap: is an unknown class in WebappClassLoader
- 进程(线程)间同步互斥问题(三) 熟睡的理发师问题
- 杂谈(主机名、ip地址、域名的区别)(16)
- Niagara内容示例 2.2 Dynamic Beam
- 仿美团app产品列表,用weui(bootstrap可去掉)写成
热门文章
- python中set函数_python中set()函数简介及实例解析
- linux gpart 用法,gpart 使用笔记
- layui 行变灰_layui table设置某一行的字体颜色方法
- ajax 前端报错,Django ajax 发送post请求 前端报错解决
- python学习课后练习题_python初步学习-练习题
- javascript表格可以输入数据_最火8套测量自动计算表格,输入数据直接得结果,效率提升80%...
- 大一计算机应用基础答案李小艳,13级幼师班期末考试计算机试题A卷
- ht1621b和单片机电平匹配_基于HT1621B段式液晶模块的驱动应用
- 测试色谱柱柱效的软件,高效液相色谱柱柱效测定
- JAVA移慎_java里面给对象赋值,慎用赋值符号(=) (转)