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 相关文章推荐
Firefox中通过JavaScript复制数据到剪贴板(Copy to Clipboard 跨浏览器版)
Nov 22 Javascript
JS中如何判断传过来的JSON数据中是否存在某字段
Aug 18 Javascript
js中匿名函数的创建与调用方法分析
Dec 19 Javascript
jquery实现submit提交表单
Feb 03 Javascript
JQuery中属性过滤选择器用法实例分析
May 18 Javascript
javascript引用类型之时间Date和数组Array
Aug 27 Javascript
jQuery判断邮箱格式对错实例代码讲解
Apr 12 jQuery
.net MVC+Bootstrap下使用localResizeIMG上传图片
Apr 21 Javascript
基于Swiper实现移动端页面图片轮播效果
Dec 28 Javascript
electron + vue项目实现打印小票功能及实现代码
Nov 25 Javascript
node全局变量__dirname与__filename的区别
Jan 14 Javascript
npx create-react-app xxx创建项目报错的解决办法
Feb 17 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获得文件扩展名三法
2006/11/25 PHP
推荐个功能齐全的发送PHP邮件类
2007/01/03 PHP
php 无法加载mcrypt.dll的解决办法
2013/04/03 PHP
PHP函数分享之curl方式取得数据、模拟登陆、POST数据
2014/06/04 PHP
Zend Framework实现具有基本功能的留言本(附demo源码下载)
2016/03/22 PHP
PHP设计模式之状态模式定义与用法详解
2018/04/02 PHP
php面向对象基础详解【星际争霸游戏案例】
2020/01/23 PHP
Firefox window.close()的使用注意事项
2009/04/11 Javascript
Chrome中JSON.parse的特殊实现
2011/01/12 Javascript
js的Prototype属性解释及常用方法
2014/05/08 Javascript
Bootstrap每天必学之模态框(Modal)插件
2016/04/26 Javascript
Cookies 和 Session的详解及区别
2017/04/21 Javascript
jquery基于layui实现二级联动下拉选择(省份城市选择)
2017/06/20 jQuery
JS基于for语句编写的九九乘法表示例
2018/01/04 Javascript
详解Angular路由之路由守卫
2018/05/10 Javascript
小程序实现留言板
2018/11/02 Javascript
node.js基于socket.io快速实现一个实时通讯应用
2019/04/23 Javascript
bootstrap-treeview实现多级树形菜单 后台JSON格式如何组织?
2019/07/26 Javascript
vue created钩子函数与mounted钩子函数的用法区别
2020/11/05 Javascript
pycharm 使用心得(六)进行简单的数据库管理
2014/06/06 Python
Python3通过Luhn算法快速验证信用卡卡号的方法
2015/05/14 Python
Python操作MongoDB详解及实例
2017/05/18 Python
深入理解Python爬虫代理池服务
2018/02/28 Python
PyQt5每天必学之QSplitter实现窗口分隔
2018/04/19 Python
Python 做曲线拟合和求积分的方法
2018/12/29 Python
python中树与树的表示知识点总结
2019/09/14 Python
python各种excel写入方式的速度对比
2020/11/10 Python
解决Python import .pyd 可能遇到路径的问题
2021/03/04 Python
人力资源管理专业应届生求职信
2013/09/28 职场文书
毕业典礼主持词大全
2014/03/26 职场文书
库房管理员岗位职责
2015/02/12 职场文书
初中运动会前导词
2015/07/20 职场文书
演讲开头怎么书写?
2019/08/06 职场文书
学者《孟子》名人名言
2019/08/09 职场文书
MySQL大小写敏感的注意事项
2021/05/24 MySQL
css清除浮动clearfix:after的用法详解(附完整代码)
2023/05/21 HTML / CSS