最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

原生js分段动画的实现代码

来源:动视网 责编:小采 时间:2020-11-27 20:01:21
文档

原生js分段动画的实现代码

原生js分段动画的实现代码:本文主要和大家分享原生js分段动画的实现代码,希望能帮助到大家。<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional
推荐度:
导读原生js分段动画的实现代码:本文主要和大家分享原生js分段动画的实现代码,希望能帮助到大家。<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional


本文主要和大家分享原生js分段动画的实现代码,希望能帮助到大家。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"><head>
 <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
 <title>函数的封装(多属性),动画的停止-分段动画</title>
 <style type="text/css">
 * { margin: 0; padding: 0; }

 .box { width: 100px; height: 100px; background-color: #F10250; margin: 50px; position: relative; }
 </style>
 <script type="text/javascript">
 function getStyle(element, styleName) {
 if (element.currentStyle) { return element.currentStyle[styleName];
 } else { return window.getComputedStyle(element, null)[styleName];
 }
 } function animate(element, json, fun) {
 //element.timer的意思是给当前元素添加一个timer属性
 //在这里是添加一个计时器
 clearInterval(element.timer); var isStop = false;
 element.timer = setInterval(function() {
 for (var key in json) {
 isStop = true; //通过in循环,获取到的是json中的css属性名key
 //通过json[key],可以获取key属性的值
 var target = json[key]; var current = parseInt(getStyle(element, key)); var setp = (target - current) / 10; //当current的值是一个大于target的值的时候
 //此时setp是一个小于零的数,此时向上取整为零
 //所以需要判断setp是否大于零,大于零向上取整,小于零向下取整
 setp = setp > 0 ? Math.ceil(setp) : Math.floor(setp);
 current += setp;
 console.log(current); //只要有一个属性动画没有结束,就不停止动画
 //不能用只要有一个属性动画完成就停止动画的思路,
 //因为此时不是所有属性的动画都已经完成
 //不停止动画
 if (Math.abs(target - current) > Math.abs(setp)) {
 isStop = false;
 } else { //强制将current = target
 current = target;
 }
 element.style[key] = current + "px"; //停止动画
 if (isStop) {
 clearInterval(element.timer); //添加回调函数
 //判断传入的是一个函数
 if (typeof fun == "function") {
 fun();
 }
 }
 }
 }, 10);
 }
 window.onload = function() {
 var box = document.getElementsByClassName("box")[0];
 box.onclick = function() {
 animate(box, {
 left: 400,
 }, function() {
 animate(box, {
 width: 500
 }, function() {
 animate(box, {
 height: 500
 }, null);
 });
 });
 }

 } </script></head><body>
 <p class="box"></p>
 <p class="hezi" style="background-color: green"></p></body></html

文档

原生js分段动画的实现代码

原生js分段动画的实现代码:本文主要和大家分享原生js分段动画的实现代码,希望能帮助到大家。<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional
推荐度:
标签: 动画 实现 js
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top