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 相关文章推荐
5秒后跳转到另一个页面的js代码
Oct 12 Javascript
JS将制定内容复制到剪切板示例代码
Feb 11 Javascript
jquery禁止输入数字以外的字符的示例(纯数字验证码)
Apr 10 Javascript
javascript中的正则表达式使用详解
Aug 30 Javascript
最好用的Bootstrap fileinput.js文件上传组件
Dec 12 Javascript
微信小程序实现刷脸登录
May 25 Javascript
layui 优化button按钮和弹出框的方法
Aug 15 Javascript
通过实例学习React中事件节流防抖
Jun 17 Javascript
微信小程序获取当前位置和城市名
Nov 13 Javascript
node.js中fs文件系统模块的使用方法实例详解
Feb 13 Javascript
js实现盒子拖拽动画效果
Aug 09 Javascript
vue表单验证之禁止input输入框输入空格
Dec 03 Vue.js
如何防止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与MYSQL中UTF8编码的中文排序实例
2014/10/21 PHP
PHP实现APP微信支付的实例讲解
2018/02/10 PHP
线路分流自动智能跳转代码,自动选择最快镜像网站(js)
2011/10/31 Javascript
判断对象是否Window的实现代码
2012/01/10 Javascript
JS中的异常处理方法分享
2013/12/22 Javascript
JS生成某个范围的随机数【四种情况详解】
2016/04/20 Javascript
JS获取元素多层嵌套思路详解
2016/05/16 Javascript
js手动播放图片实现图片轮播效果
2016/09/17 Javascript
js实现贪吃蛇小游戏(容易理解)
2017/01/22 Javascript
Vue计算属性的学习笔记
2017/03/22 Javascript
AngularJS动态绑定ng-options的ng-model实例代码
2017/06/21 Javascript
Vue中的数据监听和数据交互案例解析
2017/07/12 Javascript
JS获取日期的方法实例【昨天,今天,明天,前n天,后n天的日期】
2017/09/28 Javascript
vue利用better-scroll实现轮播图与页面滚动详解
2017/10/20 Javascript
vue-video-player 通过自定义按钮组件实现全屏切换效果【推荐】
2018/08/29 Javascript
微信小程序导航栏滑动定位功能示例(实现CSS3的positionsticky效果)
2019/01/24 Javascript
layui表格分页 记录勾选的实例
2019/09/02 Javascript
vue组件系列之TagsInput详解
2020/05/14 Javascript
JavaScript 闭包的使用场景
2020/09/17 Javascript
[01:46]DOTA2上海特锦赛小组赛英文解说KotlGuy采访
2016/02/27 DOTA
Python 中 Meta Classes详解
2016/02/13 Python
Python图片转换成矩阵,矩阵数据转换成图片的实例
2018/07/02 Python
在脚本中单独使用django的ORM模型详解
2020/04/01 Python
如何通过Python3和ssl实现加密通信功能
2020/05/09 Python
python实现mean-shift聚类算法
2020/06/10 Python
马来西亚综合购物网站:Lazada马来西亚
2018/06/05 全球购物
人事主管岗位职责范本
2013/12/04 职场文书
单位单身证明范本
2014/01/11 职场文书
中文教师求职信
2014/02/22 职场文书
母婴店促销方案
2014/03/05 职场文书
国旗下演讲稿
2014/05/08 职场文书
2014年冬季防火方案
2014/05/21 职场文书
2014年人事工作总结范文
2014/11/19 职场文书
团员年度个人总结
2015/02/26 职场文书
Nginx安装完成没有生成sbin目录的解决方法
2021/03/31 Servers
浅谈Golang 切片(slice)扩容机制的原理
2021/06/09 Golang