博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaScript原生折叠扩展收缩菜单带缓冲动画
阅读量:6036 次
发布时间:2019-06-20

本文共 5106 字,大约阅读时间需要 17 分钟。

292339484239346.gif

JavaScript原生折叠扩展收缩菜单带缓冲动画 @落雨

/** * 展开与收缩 * @param  {[type]} ObjectId [description] 需要操作的ID * @param  {[type]} me       [description] 当前对象,非必须 * @return {[type]}          [description] */function spread(ObjectId, me) {    var img = me.getElementsByTagName('img')[0];        if ($X(ObjectId).style.display == 'none') {        me.style.color = '#34a8bf';        Start(ObjectId, 'Opens');        //替换右边小图标        img.src="img/show_btn1.png";             } else {        me.style.color = '#000';        Start(ObjectId, 'Close');        img.src="img/show_btn.png";    }}/** * 根据ID返回对象 * @param  {[type]} Read_Id [description] * @return {[type]}         [description] */function $X(Read_Id) {    return document.getElementById(Read_Id);}/** * 开始动画+收缩啊啊啊啊啊啊啊啊 * @param {[type]} ObjId  [description] * @param {[type]} method [description] */function Start(ObjId, method) {    var oo = $X(ObjId);    var firstH = oo.offsetHeight; //获取对象高度     firstH = firstH == 0 ? '300px' : firstH;    if (method == "Close") {        startrun(oo, "height", 0, function() {            oo.style.display = "none";        }, 'close');    } else if (method == "Opens") {        oo.style.display = "block";        oo.style.height = 0;        startrun(oo, "height", 300, function() {                     }, 'close');        //oo.style.height = firstH;    }}/** * 获得Style属性 * @param  {[type]} obj  [description] * @param  {[type]} name [description] * @return {[type]}      [description] */function getstyle(obj, name) {    if (obj.currentStyle) {        return obj.currentStyle[name];    } else {        return getComputedStyle(obj, false)[name];    }}/** * 动画库 * @param  {[type]}   obj    [description] * @param  {[type]}   attr   [description] * @param  {[type]}   target [description] * @param  {Function} fn     [description] * @param  {[type]}   action [description] * @return {[type]}          [description] */function startrun(obj, attr, target, fn, action) {    clearInterval(obj.timer);    obj.timer = setInterval(function() {        var cur = 0;        obj.style.overflow = 'hidden';        if (attr == "opacity") {            cur = Math.round(parseFloat(getstyle(obj, attr)) * 100);        } else {            cur = parseInt(getstyle(obj, attr));        }        var speed = (target - cur) / 8;        speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed);        if (cur == target) {            clearInterval(obj.timer);            if (fn) {                fn();            }        } else {            if (attr == "opacity") {                obj.style.filter = "alpha(opacity=" + (cur + speed) + ")";                obj.style.opacity = (cur + speed) / 100;            } else {                obj.style[attr] = cur + speed + "px";            }        }        if (action == 'open') {            //obj.style.display = "block";        } else {            //obj.style.display = "none";        }    }, 30)}

转载地址:http://lflhx.baihongyu.com/

你可能感兴趣的文章
logback 和 log4j对比,及相关配置
查看>>
关于TFS地址改变后,项目迁移的问题。
查看>>
用pycharm写appium脚本的时候,导入一个模块有时候会报错
查看>>
Session
查看>>
设计黄金法则永不改变
查看>>
Android Ap 开发 设计模式第四篇:工厂方法模式
查看>>
虚拟机基本管理
查看>>
Xcode 编译选项
查看>>
通用链表首先要做到能够存放任何数据类型的数据
查看>>
一位华为底层老员工的中年危机,发人深思!
查看>>
学习日志---linux lvm逻辑卷管理
查看>>
Cocos2d-x 3.x物理引擎概述(1)
查看>>
Formik官方应用案例解析(一)Basics
查看>>
2014网络流行语
查看>>
戴尔服务部首席创新官:创新至零
查看>>
通过Html实现在线运行,复制,保存代码的功能
查看>>
XENAPP单一服务器全功能解决方案-XENAPP服务器
查看>>
活动目录系列之十:活动目录数据库的维护
查看>>
Powershell 之监控文件系统变化
查看>>
新御剑1.5注入版(11.29)
查看>>