JS---封装缓动(变速)动画函数---增加任意多个属性&增加回调函数

封装缓动(变速)动画函数---增加任意多个属性&增加回调函数

回掉函数fn,在所有元素到达目的位置后,判断是否传入一个函数,有就调用 if(fn){fn()};

这样一次点击,产生多个动画

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <title>title</title>
  <style>
    * {
      margin: 0;
      padding: 0;
    }

    div {
      margin-top: 30px;
      width: 200px;
      height: 100px;
      background-color: green;
      position: absolute;
      left: 0;
      top: 0;
    }
  </style>
</head>

<body>
  <input type="button" value="移动到400px" id="btn1" />
  <div id="dv">
  </div>
  <script src="common.js"></script>
  <script>
    //点击按钮,改变宽度到达一个目标值,高度到达一个目标值

    //获取任意一个元素的任意一个属性的当前的值---当前属性的位置值
    function getStyle(element, attr) {
      return window.getComputedStyle ? window.getComputedStyle(element, null)[attr] : element.currentStyle[attr] || 0;
    }

    //element---元素
    //json---对象---多个属性及多个目标值
    //fn---函数

    function animate(element, json, fn) {
      clearInterval(element.timeId);
      element.timeId = setInterval(function () {
        var flag = true;
        for (var attr in json) {
          var current = parseInt(getStyle(element, attr));
          var target = json[attr];
          var step = (target - current) / 10;
          step = step > 0 ? Math.ceil(step) : Math.floor(step);
          current += step;
          element.style[attr] = current + "px";
          if (current != target) {
            flag = false;
          }
        }
        if (flag) {
          clearInterval(element.timeId);
          if (fn) {
            fn();
          }
        }
        //测试代码
        console.log("目标:" + target + ",当前:" + current + ",每次移动的步数" + step);
      }, 20)
    }

    my$("btn1").onclick = function () {
      var json1 = { "width": 400, "height": 200, "left": 500, "top": 80 };
      animate(my$("dv"), json1, function () {
        var json2 = { "width": 200, "height": 100, "left": 200, "top": 120 };
        animate(my$("dv"), json2, function () {
          var json3 = { "width": 400, "height": 300, "left": 300, "top": 80 };
          animate(my$("dv"), json3);
        });
      });
    };

  </script>
</body>

</html>

原文地址:https://www.cnblogs.com/jane-panyiyun/p/12072529.html

时间: 2024-10-14 20:05:57

JS---封装缓动(变速)动画函数---增加任意多个属性&增加回调函数的相关文章

JavaScript变速动画函数封装添加任意多个属性加回调函数还有透明度

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> <style> * { margin: 0; padding: 0; } div { width: 200px; height: 100px; background-color: purple; position: absolu

JS特效@缓动框架封装及应用

| 版权声明:本文为博主原创文章,未经博主允许不得转载. 一.变量CSS样式属性获取/赋值方法 给属性赋值:(既能获取又能赋值) 1)div.style.width 单个赋值:点语法,这个方法比较固定,不能用变量或者字符串的形式更换属性,不方便我们传值获取属性,和给属性赋值. 2)div.style["width"] 变量赋值:中括号形式,传入字符串.可以通过传字符串或者变量的方式获取和赋值属性.缺点:只能是对行内式CSS来操作的.赋值的时候毫无问题.但是,获取值的时候有问题了. 二.

ajax提交数据,回调函数不执行或总是执行error回调函数的问题

jsp页面: <form id="itemAddForm" class="itemForm" method="post"> <div id="tab1" class="tabcontent"> <div class="form"> <div class="form_row"> <label><b>

register_shutdown_function函数详解--脚本退出时执行回调函数

register_shutdown_function — Register a function for execution on shutdown. ps:Registers a callback to be executed after script execution finishes or exit() is called. 1.脚本时常死掉,而且并不总是那么好看.我们可不想给用户显示一个致命错误,又或者一个空白页(在display_errors设为off的情况下) . PHP中有一个叫

变速动画函数封装增加任意多个属性、透明度和层级

//计算后的样式属性---- 一个元素的任意的一个样式属性值function getStyle(element,attr) { //判断这个浏览器是否支持这个方法 return window.getComputedStyle?window.getComputedStyle(element,null)[attr]:element.currentStyle[attr];}//匀速动画function animate(element,json,fn) { //element--元素 attr--属性名

变速动画函数封装增加任意多个属性值

//计算后的样式属性---- 一个元素的任意的一个样式属性值function getStyle(element,attr) { //判断这个浏览器是否支持这个方法 return window.getComputedStyle?window.getComputedStyle(element,null)[attr]:element.currentStyle[attr];}//匀速动画function animate(element,json,fn) { //element--元素 attr--属性名

网站建设中前端常用的jQuery+easing缓动的动画

网站建设中前端人员利用jQuery实现动画再简单不过了,只是要实现更酷的效果还需要插件来帮忙,easing就是一款帮助jQuery实现缓动动画的插件,经过试用,效果很不错! 下载该插件:jquery.easing.1.3.js jquery.easing.compatibility.js 该插件美化排版后是130行左右,压缩后更小.这个插件弥补了jquery里面的动画效果的不足,是其动画效果更加强悍. X轴表示时间,Y轴表示的是动画效果的变化.查看这些曲线变化,更利于掌握这个插件的效果. 插件支

animation js控制 缓动效果

<!DOCTYPE html><html><head><meta charset="utf-8" /><title>缓动效果</title></head><body><div id="btn" style='position:absolute;'>按钮</div><script type="text/javascript"

ajax 传值,Ajax: Asynchoronous Javascript and xml (异步的js和xml). 异步刷新,异步传递.替代表单提交数据,回调函数处理返回的数据

aspx里的代码 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="s