IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> 轮播图第一步-运动函数的封装 -> 正文阅读

[JavaScript知识库]轮播图第一步-运动函数的封装

function move(element, obj, callback = function () { }) {
    let num = 0;
    // 定义一个变量存储定时器的个数
    // 初始值是0
    for (let type in obj) {
        // 循环遍历这个对象
        // 使用let定义变量每一个循环中变量存储独立的属性 不会被覆盖
        // 每次循环触发生成一个定时器 操作对应的属性和属性值
        num++;
        // 对象循环一次,证明对象中有一对属性和属性值
        // 也就是一个定时器需要改变属性属性值
        // 此时num+1
        let startVal = type === 'opacity' ? window.getComputedStyle(element)[type] * 100 : parseInt(window.getComputedStyle(element)[type]);
        //    获取初始值并且兼容透明度
        let endVal = type === 'opacity' ? obj[type] * 100 : obj[type];
        //    获取最终值并且兼容透明度

        // 用time来记录定时器变化
        let time = setInterval(function () {
            // 定义步长
            let step = endVal - startVal;
            step = step > 0 ? Math.ceil(step) : Math.floor(step);
            // 当步长大于0 时向上取整 小于0时,向下取整
            startVal += step;
            //对象的属性的变化值
            element.style[type] = type === 'opacity' ? startVal / 100 : startVal + 'px';
            if (startVal === endVal) {
             
                clearInterval(time);
                // 清除定时器也就是运动终止时
                num--;
                // 每清除一个定时器num-1;
                if (num === 0) {
                    // 当num的值累加至0时,表示所有的定时器都清除了
                    // 此时使用回调函数
                    callback();
                }
            }
        }, 30)
    }

}

在这里一定要注意异步池的概念哦!关于异步池的知识点,后面会给大家补充,大家在这里只需要知道是先执行for...in循环,异步池中的内容不会执行,等到for...in执行完毕后,再执行异步池的内容

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-02-09 20:36:38  更:2022-02-09 20:36:49 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 10:32:10-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码