热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

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

>

id="show_1_ct_1" class="show_1_ct" st">"display: none;"> class="ul1">
  • class="sp1"> 机房总面积2500平米,一期面积1100平方米,8级抗震建筑结构
  • class="sp1"> 机房位于一楼,承重>1000公斤/平方米,绝缘地板设计,防电磁干扰设施
  • class="sp1"> T3+级国际标准建造,先进的节能环保设计
  • class="sp1"> 充足的电力保障,丰富的网络资源
  • class="sp1"> 优质的机房环境,优越的地理位置,便捷的交通线路
  • class="sp1"> 全方位的业务范围,全面的管理、配套服务
  • class="show_1" OnClick="spread('show_1_ct_2',this);"> 综合布线 class="show_right"> class="show_img" src="img/show_btn.png"> id="show_1_ct_2" class="show_1_ct" st">"display: none;"> class="ul1">
  • class="sp1"> 分层走线,隐蔽、美观;
  • class="sp1"> 桥架三层结构,由下至上分别以强电、光纤、弱电分布;
  • class="sp1"> 中层以光纤分隔防止强电信号干扰;
  • class="sp1"> 下层地面涂防水胶,加上3层抗静电、防尘漆。保证下层温度、湿度及清洁;
  • class="show_1" OnClick="spread('show_1_ct_3',this);">机柜布置 class="show_right"> class="show_img" src="img/show_btn.png"> class="show_1_ct" id="show_1_ct_3" st">"display: none;"> class="ul1">
  • class="sp1"> 采用19英寸标准封闭式机柜,长宽高分别为110cm\60cm\200cm;
  • class="sp1"> 所有标准机柜设有锁定功能,布放单模、多模的光纤和网线的集线排;
  • class="sp1"> 机柜全部预布放超五类线缆;
  • class="sp1"> 机柜组全部布放多模及单模光纤;
  • class="sp1"> 骨干布线桥架由配线间接入各个机房区域,提供灵活、冗余的布线方式;
  • class="sp1"> 机柜布线全部采用国际著名品牌,实现光纤、铜缆分桥架布设。
  • class="show_1" OnClick="spread('show_1_ct_4',this);">供电系统 class="show_right"> class="show_img" src="img/show_btn.png"> class="show_1_ct" id="show_1_ct_4" st">"display: none;"> class="ul1">
  • class="sp1"> 两路通信市电高压供电系统,每路供电容量1600KVA,主备自动切换;
  • class="sp1"> 双路冗余大功率智能台达(delta)UPS,1+1冗余备份,后备蓄电池全负载供电时间≥30min;
  • class="sp1"> 网络运行中心(NOC)24小时监测;
  • class="sp1"> 康明斯+马拉松 柴油供电系统,满载油机备油持续供电时间≥48h.;
  • 
    /**
     * 展开与收缩
     * @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)
    }

    推荐阅读
    • CSS3选择器的使用方法详解,提高Web开发效率和精准度
      本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
    • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
    • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
    • 闭包一直是Java社区中争论不断的话题,很多语言都支持闭包这个语言特性,闭包定义了一个依赖于外部环境的自由变量的函数,这个函数能够访问外部环境的变量。本文以JavaScript的一个闭包为例,介绍了闭包的定义和特性。 ... [详细]
    • 本文整理了Java中org.apache.solr.common.SolrDocument.setField()方法的一些代码示例,展示了SolrDocum ... [详细]
    • 本文整理了常用的CSS属性及用法,包括背景属性、边框属性、尺寸属性、可伸缩框属性、字体属性和文本属性等,方便开发者查阅和使用。 ... [详细]
    • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
    • Linux重启网络命令实例及关机和重启示例教程
      本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
    • Java学习笔记之面向对象编程(OOP)
      本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
    • 本文讨论了Kotlin中扩展函数的一些惯用用法以及其合理性。作者认为在某些情况下,定义扩展函数没有意义,但官方的编码约定支持这种方式。文章还介绍了在类之外定义扩展函数的具体用法,并讨论了避免使用扩展函数的边缘情况。作者提出了对于扩展函数的合理性的质疑,并给出了自己的反驳。最后,文章强调了在编写Kotlin代码时可以自由地使用扩展函数的重要性。 ... [详细]
    • 先看官方文档TheJavaTutorialshavebeenwrittenforJDK8.Examplesandpracticesdescribedinthispagedontta ... [详细]
    • 本文整理了Java中java.lang.NoSuchMethodError.getMessage()方法的一些代码示例,展示了NoSuchMethodErr ... [详细]
    • 本文整理了Java中org.gwtbootstrap3.client.ui.Icon.addDomHandler()方法的一些代码示例,展示了Icon.ad ... [详细]
    • 本文整理了Java中org.apache.ibatis.mapping.ParameterMapping.getNumericScale()方法的一些代码示例,展示了 ... [详细]
    • vb.net面试题,请大家帮忙,谢谢。如果需要讲详细一点,那就加我QQ531412815第4题,潜在的错误,这里的错误不是常规错误,属于那种只有在运行是才知道的错误:Catchex ... [详细]
    author-avatar
    手机用户248覀9795477
    这个家伙很懒,什么也没留下!
    PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
    Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有