JS实现slide文字框缩放伸展效果代码


Posted in Javascript onNovember 05, 2015

本文实例讲述了JS实现slide文字框缩放伸展效果代码。分享给大家供大家参考,具体如下:

这里介绍的slide文字框缩放伸展效果,自己闲来无事写的,不是太好,可能在兼容性方面还需努力,展开速度方面,IE8和火狐的展开速度不一样,火狐下更快一些,至今没找到原因,也请JS高人指点江山。

运行效果截图如下:

JS实现slide文字框缩放伸展效果代码

在线演示地址如下:

具体代码如下:

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content" content="text/html charset=gb2312">
<title>slide文字框缩放伸展效果</title>
<style type="text/css">
*{margin:0; padding:0;}
ul{list-style:none;}
.box{width:300px; margin:10px; border:1px solid #ccc; overflow:hidden; position:relative; font-size:12px;}
.oHx{height:30px; background:#eee; line-height:30px; font-size:14px; text-indent:14px; cursor:pointer;}
.fold{position:absolute; top:9px; right:12px;}
.box_content{line-height:18px; overflow:hidden; display:none;}
</style>
<script type="text/javascript">
 function getElementsByClassName(className,id,tag){
    tag = tag || "*";
    if(id){
     var id = typeof id == "string" ? $(id) : id;
    }else{
     var id = document.body;
    }
    var els = id.getElementsByTagName(tag),arr = [];
    for(var i=0,n=els.length;i<n;i++){
     for(var j=0,k=els[i].className.split(" "),l=k.length;j<l;j++){
      if(k[j]==className){
       arr.push(els[i]);
       break;
      }
     }
    }
    return arr;
   };
   function Slide(slideClass,slideBtn,slideCon,slideSpeed) {
    this.oSlides = getElementsByClassName(slideClass);
    this.oTimer = null;
    this.slideBtn = slideBtn;
    this.slideCon = slideCon;
    this.slideSpeed = slideSpeed;
   }
   Slide.prototype = {
    oTimer:null,
    _init:function (){
     this._slideEvent();
    },
    _slideEvent:function (){
     var This = this;
     for(var i = 0,n=This.oSlides.length;i<n;i++){
      (function(n){
       var oSlide = This.oSlides[n];
       var oSlideBtn = getElementsByClassName(This.slideBtn,oSlide)[0];
       var oSlideCon = getElementsByClassName(This.slideCon,oSlide)[0];
       oSlideBtn.onclick = function (){
        if(oSlideCon.style.display == "block" && This.oTimer == null){
         This._slideClose(oSlideCon);
        }else if(!(oSlideCon.style.display == "block" ) && This.oTimer == null){
         This._slideOpen(oSlideCon);
        }
       }
      })(i)
     }
    },
    _slideOpen:function (slideCon){
     var This = this;
     slideCon.style.display = "block";
     slideCon.style.height = "auto";
     var slideHeight = slideCon.offsetHeight;
     slideCon.style.height = 0 + "px";
     This.oTimer = setInterval(function (){
      if(slideCon.offsetHeight < slideHeight){
       slideCon.style.height = slideCon.offsetHeight + 2 + "px";
      }else{
       clearInterval(This.oTimer);
       This.oTimer = null;
      }
     },This.slideSpeed);
    },
    _slideClose:function (slideCon){
     var This = this;
     This.oTimer = setInterval(function (){
      if(slideCon.offsetHeight <= 0){
       clearInterval(This.oTimer);
       slideCon.style.display = "none";
       This.oTimer = null;
      }else{
       slideCon.style.height =slideCon.offsetHeight - 2 + "px";
      }
     },This.slideSpeed);
    }
   }
  </script>
 </head>
 <body>
  <div class="box"> 
   <div class="oHx slide">收缩2</div> 
   <div class="box_content">
    <ul class="uft" style="padding:10px;"> 
     <li><a href="#" target="_blank">scscms V1.0 阳光企业网站系统</a></li>
  <li><a href="#" target="_blank">24点,VC++游戏源码</a></li>
  <li><a href="#" target="_blank">可记录图像的C#数据库记录单程序</a></li>
  <li><a href="#" target="_blank">jQuery 1.4 参考指南的实例源代码</a></li>
    </ul> 
   </div>
  </div>
  <div class="box"> 
   <div class="oHx slide">收缩3</div> 
   <div class="box_content">
    <ul class="uft"style="padding:10px;"> 
     <li><a href="#" target="_blank">scscms V1.0 阳光企业网站系统</a></li>
  <li><a href="#" target="_blank">24点,VC++游戏源码</a></li>
  <li><a href="#" target="_blank">可记录图像的C#数据库记录单程序</a></li>
  <li><a href="#" target="_blank">jQuery 1.4 参考指南的实例源代码</a></li>
    </ul> 
   </div>
  </div>
  <script type="text/javascript">
   var mySlide = new Slide("box","slide","box_content",10); 
   mySlide._slideEvent();
  </script>
 </body>
</html>

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
js 实现图片预加载(js操作 Image对象属性complete ,事件onload 异步加载图片)
Mar 25 Javascript
事件绑定之小测试  onclick &amp;&amp; addEventListener
Jul 31 Javascript
json实现前后台的相互传值详解
Jan 05 Javascript
JavaScript动态修改背景颜色的方法
Apr 16 Javascript
谈谈impress.js初步理解
Sep 09 Javascript
DOM 事件的深入浅出(二)
Dec 05 Javascript
Vuejs仿网易云音乐实现听歌及搜索功能
Mar 30 Javascript
关于vue中 $emit的用法详解
Apr 12 Javascript
jQuery实现上下滚动公告栏详细代码
Nov 21 jQuery
150行Node.js实现的dns代理工具
Aug 02 Javascript
layui type2 通过url给iframe子页面传值的例子
Sep 06 Javascript
javascript操作元素的常见方法小结
Nov 13 Javascript
如何防止JavaScript自动插入分号
Nov 05 #Javascript
javascript常用函数(2)
Nov 05 #Javascript
使用JavaScript和CSS实现文本隔行换色的方法
Nov 04 #Javascript
javascript常用函数(1)
Nov 04 #Javascript
逐一介绍Jquery data()、Jquery stop()、jquery delay()函数(详)
Nov 04 #Javascript
jQuery多条件筛选如何实现
Nov 04 #Javascript
基于JavaScript实现移动端点击图片查看大图点击大图隐藏
Nov 04 #Javascript
You might like
php无限极分类实现的两种解决方法
2013/04/28 PHP
PHP实现下载断点续传的方法
2014/11/12 PHP
ECshop 迁移到 PHP7版本时遇到的兼容性问题
2016/02/15 PHP
为javascript添加String.Format方法
2020/08/11 Javascript
JQuery获取元素文档大小、偏移和位置和滚动条位置的方法集合
2010/01/12 Javascript
javascript中怎么做对象的类型判断
2013/11/11 Javascript
js获取下拉列表的值和元素个数示例
2014/05/07 Javascript
jquery和js实现对div的隐藏和显示方法
2014/09/26 Javascript
基于jQuery实现火焰灯效果导航菜单
2017/01/04 Javascript
js中常用的Math方法总结
2017/01/12 Javascript
JavaScript 数据类型详解
2017/03/13 Javascript
js,jq,css多方面实现简易下拉菜单功能
2017/05/13 Javascript
详谈表单格式化插件jquery.serializeJSON
2017/06/23 jQuery
通过vue提供的keep-alive减少对服务器的请求次数
2018/04/01 Javascript
React为 Vue 引入容器组件和展示组件的教程详解
2018/05/03 Javascript
JQuery实现ul中添加LI和删除指定的Li元素功能完整示例
2019/10/16 jQuery
[41:41]TFT vs Secret Supermajor小组赛C组 BO3 第一场 6.3
2018/06/04 DOTA
python读写ini配置文件方法实例分析
2015/06/30 Python
对python中return和print的一些理解
2017/08/18 Python
python xlsxwriter库生成图表的应用示例
2018/03/16 Python
对Python字符串中的换行符和制表符介绍
2018/05/03 Python
删除DataFrame中值全为NaN或者包含有NaN的列或行方法
2018/11/06 Python
用Python读取几十万行文本数据
2018/12/24 Python
python障碍式期权定价公式
2019/07/19 Python
Python基于OpenCV实现人脸检测并保存
2019/07/23 Python
pytorch在fintune时将sequential中的层输出方法,以vgg为例
2019/08/20 Python
python的命名规则知识点总结
2019/10/04 Python
CSS3样式linear-gradient的使用实例
2017/01/16 HTML / CSS
草莓网英国官网:Strawberrynet UK
2017/02/12 全球购物
经济系大学生求职信
2013/10/01 职场文书
经理管理专业自荐信范文
2013/12/31 职场文书
汽车装潢店创业计划书范文
2014/02/05 职场文书
教师演讲稿大全
2014/05/16 职场文书
机关单位保密工作责任书
2015/05/11 职场文书
2015暑期社会实践个人总结
2015/07/13 职场文书
网络舆情信息简报
2015/07/21 职场文书