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

简介: JavaScript原生折叠扩展收缩菜单带缓冲动画 @落雨 机房介绍 上海三门路数据中心 位于上海市杨浦区三门路561号1楼C1室,一期机架数量200个,总规划机架数量500个,主要服务于华东地区的IDC应用及全国范围内的企业云计算需求。

img_3fe5a1106edd8e57682e92f7c49832ff.gif

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


 <div id="div_two" style="display: none;">
            <p class="p1">机房介绍</p>
            <div class="hide_jie">
                <p>上海三门路数据中心</p>
                位于上海市杨浦区三门路561号1楼C1室,一期机架数量200个,总规划机架数量500个,主要服务于华东地区的IDC应用及全国范围内的企业云计算需求。机房内拥有电信、联通、移动和BGP八线资源,总带宽超过40G,上海本地点对点传输及上海到浙江、北京等方向的长途传输;上海到香港,东南亚,美国等地的国际专线资源。、 是上海地区网络品质最高,服务最优质的数据中心。
            </div>
            <div class="show_1"  onClick="spread('show_1_ct_1',this);">
                机房简介
                <div class="show_right">
                    <img class="show_img" src="img/show_btn.png">
                </div>
            </div>
            <div id="show_1_ct_1" class="show_1_ct" style="display: none;">
                <ul class="ul1">
                    <li><span class="sp1"> </span><span></span> 机房总面积2500平米,一期面积1100平方米,8级抗震建筑结构</li>
                    <li><span class="sp1"> </span> <span> </span>机房位于一楼,承重>1000公斤/平方米,绝缘地板设计,防电磁干扰设施</li>
                    <li><span class="sp1"> </span><span>  </span>T3+级国际标准建造,先进的节能环保设计</li>
                    <li><span class="sp1"> </span><span> </span>充足的电力保障,丰富的网络资源</li>
                    <li><span class="sp1"> </span><span> </span>优质的机房环境,优越的地理位置,便捷的交通线路</li>
                    <li><span class="sp1"> </span><span> </span>全方位的业务范围,全面的管理、配套服务</li>
                </ul>
            </div>
            <div class="show_1" onClick="spread('show_1_ct_2',this);">
                综合布线
                <div class="show_right">
                    <img class="show_img" src="img/show_btn.png">
                </div>
            </div>
            <div id="show_1_ct_2" class="show_1_ct" style="display: none;">
                <ul class="ul1">
                    <li><span class="sp1"> </span><span></span>分层走线,隐蔽、美观;</li>
                    <li><span class="sp1"> </span> <span> </span>桥架三层结构,由下至上分别以强电、光纤、弱电分布;</li>
                    <li><span class="sp1"> </span><span>  </span>中层以光纤分隔防止强电信号干扰;</li>
                    <li><span class="sp1"> </span><span> </span>下层地面涂防水胶,加上3层抗静电、防尘漆。保证下层温度、湿度及清洁;</li>
                </ul>
            </div>
            <div class="show_1"  onClick="spread('show_1_ct_3',this);">机柜布置
                <div class="show_right">
                    <img class="show_img" src="img/show_btn.png">
                </div>
            </div>
            <div class="show_1_ct" id="show_1_ct_3" style="display: none;">
                <ul class="ul1">
                    <li><span class="sp1"> </span><span></span>采用19英寸标准封闭式机柜,长宽高分别为110cm\60cm\200cm;</li>
                    <li><span class="sp1"> </span> <span> </span>所有标准机柜设有锁定功能,布放单模、多模的光纤和网线的集线排;</li>
                    <li><span class="sp1"> </span><span>  </span>机柜全部预布放超五类线缆;</li>
                    <li><span class="sp1"> </span><span> </span>机柜组全部布放多模及单模光纤;</li>
                    <li><span class="sp1"> </span><span> </span>骨干布线桥架由配线间接入各个机房区域,提供灵活、冗余的布线方式;</li>
                    <li><span class="sp1"> </span><span> </span>机柜布线全部采用国际著名品牌,实现光纤、铜缆分桥架布设。</li>
                </ul>
            </div>
            <div class="show_1" onClick="spread('show_1_ct_4',this);">供电系统
                <div class="show_right">
                    <img class="show_img" src="img/show_btn.png">
                </div>
            </div>
            <div class="show_1_ct" id="show_1_ct_4" style="display: none;">
                <ul class="ul1">
                    <li><span class="sp1"> </span><span></span>两路通信市电高压供电系统,每路供电容量1600KVA,主备自动切换;</li>
                    <li><span class="sp1"> </span> <span> </span>双路冗余大功率智能台达(delta)UPS,1+1冗余备份,后备蓄电池全负载供电时间≥30min;</li>
                    <li><span class="sp1"> </span><span>  </span>网络运行中心(NOC)24小时监测;</li>
                    <li><span class="sp1"> </span><span> </span>康明斯+马拉松 柴油供电系统,满载油机备油持续供电时间≥48h.;</li>
                </ul>
            </div>

/**
 * 展开与收缩
 * @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)
}
目录
相关文章
|
2月前
|
移动开发 JavaScript 前端开发
【Html.js——图片折叠效果】折叠手风琴(蓝桥杯真题-1763)【合集】
本项目实现了一个图片折叠手风琴效果,使用jQuery完成。主要包括以下部分: - **介绍**:任务是通过点击图片实现折叠和展开的效果。 - **准备**:内置初始代码,包含 `css/style.css`、`images/` 文件夹、`js/` 文件夹及 `index.html` 等文件。启动 Web Server 服务可运行项目。 - **目标**:完善 `index.js` 文件,使页面达到预期的折叠效果。 - **规定**:严格按步骤操作,保持默认文件结构不变,并在完成后保持 Web 服务正常访问状态。 - **通关代码**:使用 jQuery 实现点击事件,为选中元素添加 `act
51 19
|
2月前
|
JavaScript 前端开发 测试技术
盘点原生JavaScript中直接触发事件的方式
本文全面探讨了原生JavaScript中触发事件的多种方式,包括`dispatchEvent`、`Event`构造函数、`CustomEvent`构造器、直接调用事件处理器以及过时的`createEvent`和`initEvent`方法。通过技术案例分析,如模拟点击事件、派发自定义数据加载事件和实现提示框系统,帮助开发者掌握这些方法在实际开发中的应用,提升灵活性与兼容性。
53 3
|
4月前
|
JavaScript 前端开发
如何使用时间切片来优化JavaScript动画的性能?
如何使用时间切片来优化JavaScript动画的性能?
|
3月前
|
前端开发 API 开发者
Next.js 实战 (五):添加路由 Transition 过渡效果和 Loading 动画
这篇文章介绍了Framer Motion,一个为React设计的动画库,提供了声明式API处理动画和页面转换,适合创建响应式用户界面。文章包括首屏加载动画、路由加载Loading、路由进场和退场动画等主题,并提供了使用Framer Motion和next.js实现这些动画的示例代码。最后,文章总结了这些效果,并邀请读者探讨更好的实现方案。
|
3月前
|
机器学习/深度学习 JavaScript Cloud Native
Node.js作为一种快速、可扩展的服务器端运行时环境
Node.js作为一种快速、可扩展的服务器端运行时环境
75 8
|
4月前
|
JavaScript 前端开发
如何在不影响性能的前提下使用JavaScript库来实现复杂的动画效果?
如何在不影响性能的前提下使用JavaScript库来实现复杂的动画效果?
|
4月前
|
开发框架 JavaScript 前端开发
TypeScript 是一种静态类型的编程语言,它扩展了 JavaScript,为 Web 开发带来了强大的类型系统、组件化开发支持、与主流框架的无缝集成、大型项目管理能力和提升开发体验等多方面优势
TypeScript 是一种静态类型的编程语言,它扩展了 JavaScript,为 Web 开发带来了强大的类型系统、组件化开发支持、与主流框架的无缝集成、大型项目管理能力和提升开发体验等多方面优势。通过明确的类型定义,TypeScript 能够在编码阶段发现潜在错误,提高代码质量;支持组件的清晰定义与复用,增强代码的可维护性;与 React、Vue 等框架结合,提供更佳的开发体验;适用于大型项目,优化代码结构和性能。随着 Web 技术的发展,TypeScript 的应用前景广阔,将继续引领 Web 开发的新趋势。
83 2
|
3月前
|
前端开发 JavaScript 应用服务中间件
Nginx 支持 JavaScript:前所未有的扩展
Nginx 是全球领先的高性能 Web 服务器,以其高效的反向代理和负载均衡功能著称。近期,Nginx 正式支持 JavaScript(通过 NJS 模块),基于 V8 引擎,允许在配置中嵌入 JS 代码,极大提升了灵活性和扩展性。开发者可以使用 JavaScript 实现动态请求处理、自定义认证、复杂响应处理、中间件编写及流量控制等功能,显著降低开发和维护难度,同时保持高性能。NJS 模块的引入为 Nginx 带来了前所未有的扩展能力,适应快速变化的业务需求。
71 0
|
4月前
|
JavaScript 前端开发
CSS3 动画和 JavaScript 动画的性能比较
具体的性能表现还会受到许多因素的影响,如动画的复杂程度、浏览器的性能、设备的硬件条件等。在实际应用中,需要根据具体情况选择合适的动画技术。
|
4月前
ractive.js联系表单动画效果源码
一款ractive.js联系表单动画效果,很有创意的发送邮件、联系内容等表单,基于ractive.js实现的动画效果,以发送信件的方式。
44 1

热门文章

最新文章