jQuery+CSS 半开折叠效果原理及代码(自写)


Posted in Javascript onMarch 04, 2013

一个项目想用jQuery做一个可以半折叠的DIV元素,苦于jQueryUI中accordion没有提供相关的方法,就自己写了个。以前使用jQueryUI的时候发现能够用的accordion全部折叠起来了,没办法设置折叠的最小高度。
代码质量很低,希望老鸟能够指点指点。

下图是效果展示,能够借由jQuery的函数展开收缩
jQuery+CSS 半开折叠效果原理及代码(自写) 

//author: hlhr 
//require: Jquery1.4 and above 
function animate_toggle_height(maxh,minh,maxo,mino,element,speed) {//这个是纵向的,参数解释:最大高度,最小高度,最大透明度,最小透明度,元素,动画速度 
if (element.css("height")==minh.toString().concat("px")){//如果是最小高度就展开 
element.animate({ 
height:maxh, 
opacity:maxo 
},{queue: false},speed); 
return "Fold" 
} 
if (element.css("height")==maxh.toString().concat("px")){//如果是最大高度就折叠 
$(this).html(""); 
element.animate({ 
height:minh, 
opacity:mino 
},{queue: false},speed); 
return "Read more"; 
} 
} 
function animate_toggle_width(maxw,minw,maxo,mino,element,speed) { 
if (element.css("width")==minw.toString().concat("px")){ 
element.animate({ 
width:maxw, 
opacity:maxo 
},{queue: false},speed); 
return "Fold" 
} 
if (element.css("width")==maxw.toString().concat("px")){ 
element.animate({ 
width:minw, 
opacity:mino 
},{queue: false},speed); 
return "Read more"; 
} 
}

<html> 
<head> 
<script src="jquery-1.9.1.min.js"></script><!--需要jquery库--> 
<script src="jqslider.js"></script><!--链接上文的js库--> 
<style> 
body{margin: 0 auto; text-align:center;} 
.slide{font-size:20px; overflow: hidden; width: 500px; } 
#content{margin:0 auto; width: 500px;} 
.viewbutton{position:relative; text-align: right;} 
</style> 
</head> 
<body> 
<fieldset id="content"> 
<div class="slide"> 
<a class="viewbutton" href="#"> 
Read more 
</a> 
<p>slide!</p> 
<p>slide!</p> 
<p>slide!</p> 
<p>slide!</p> 
<p>slide!</p> 
</div> 
</fieldset> 
<p /> 
<fieldset id="content"> 
<div class="slide"> 
<a class="viewbutton" href="#"> 
Read more 
</a> 
<p>slide!</p> 
<p>slide!</p> 
<p>slide!</p> 
<p>slide!</p> 
<p>slide!</p> 
</div> 
</fieldset> <script type="text/javascript"> 
var max_h=300; 
var min_h=100; 
//var max_w=500; 
//var min_w=10; 
var max_o=1; 
var min_o=0.3; 
$(".slide").css({opacity:min_o});//设置初始的透明度 
$(".slide").css({height:min_h});//设置初始的高度 
$(".viewbutton").click(function(){//这里只是调用了纵向展开,也可以调用横向展开 
$(this).html(animate_toggle_height(max_h,min_h,max_o,min_o,$(this).parent(),500));//自动识别为viewbutton的上一级进行动画 
}); 
</script> 
</body> 
</html>

viewbutton的层级可自行修改,但要注意动画的目标是什么。我写的viewbutton会对它上一级的那个div做动画,所以就不用把选择器写得过于复杂了。
Javascript 相关文章推荐
Javascript面象对象成员、共享成员变量实验
Nov 19 Javascript
Node.js实现在目录中查找某个字符串及所在文件
Sep 03 Javascript
高性能JavaScript 重排与重绘(2)
Aug 11 Javascript
JS中使用FormData上传文件、图片的方法
Aug 07 Javascript
vue.js表格分页示例
Oct 18 Javascript
JavaScript对象封装的简单实现方法(3种方法)
Jan 03 Javascript
浅析vue component 组件使用
Mar 06 Javascript
Angular2利用组件与指令实现图片轮播组件
Mar 27 Javascript
Javascript中类式继承和原型式继承的实现方法和区别之处
Apr 25 Javascript
移动端滑动切换组件封装 vue-swiper-router实例详解
Nov 25 Javascript
vue项目打包后提交到git上为什么没有dist这个文件的解决方法
Sep 16 Javascript
JS的深浅复制详细
Oct 16 Javascript
JavaScript实现自己的DOM选择器原理及代码
Mar 04 #Javascript
jQuery:节点(插入,复制,替换,删除)操作
Mar 04 #Javascript
JS获取后台Cookies值的小例子
Mar 04 #Javascript
JQuery获取各种宽度、高度(format函数)实例
Mar 04 #Javascript
javascript加号&quot;+&quot;的二义性说明
Mar 04 #Javascript
js给dropdownlist添加选项的小例子
Mar 04 #Javascript
jQuery侧边栏随窗口滚动实现方法
Mar 04 #Javascript
You might like
坏狼的PHP学习教程之第1天
2008/06/15 PHP
Jquery 获取指定标签的对象及属性的设置与移除
2014/05/29 Javascript
简述Jquery与DOM对象
2015/07/10 Javascript
js限制文本框的输入内容代码分享(3类)
2015/08/20 Javascript
jquery实现文本框textarea自适应高度
2016/03/09 Javascript
深入理解JavaScript中的对象复制(Object Clone)
2016/05/18 Javascript
webpack中引用jquery的简单实现
2016/06/08 Javascript
jQuery soColorPacker 网页拾色器
2016/06/22 Javascript
jQuery无缝轮播图代码
2016/12/22 Javascript
Angularjs中三种数据的绑定策略(“@”,“=”,“&amp;”)
2016/12/23 Javascript
Angular 输入框实现自定义验证功能
2017/02/19 Javascript
10个最优秀的Node.js MVC框架
2017/08/24 Javascript
深入理解Vue 的条件渲染和列表渲染
2017/09/01 Javascript
详解10分钟学会vue滚动行为
2017/09/21 Javascript
详解angularjs 学习之 scope作用域
2018/01/15 Javascript
详解async/await 异步应用的常用场景
2019/05/13 Javascript
利用JS代码自动删除稿件的普通弹幕功能
2019/09/20 Javascript
vue获取form表单的值示例
2019/10/29 Javascript
深度解读vue-resize的具体用法
2020/07/08 Javascript
Python的多态性实例分析
2015/07/07 Python
python如何实现excel数据添加到mongodb
2015/07/30 Python
Python中元组,列表,字典的区别
2017/05/21 Python
浅谈python和C语言混编的几种方式(推荐)
2017/09/27 Python
Django开发中的日志输出的方法
2018/07/02 Python
Python获取时间范围内日期列表和周列表的函数
2019/08/05 Python
python3实现带多张图片、附件的邮件发送
2019/08/10 Python
详解Pycharm出现out of memory的终极解决方法
2020/03/03 Python
python实现遍历文件夹图片并重命名
2020/03/23 Python
Pycharm同步远程服务器调试的方法步骤
2020/11/04 Python
HTML5教程之html 5 本地数据库(Web Sql Database)
2014/04/03 HTML / CSS
使用phonegap获取设备的一些信息方法
2017/03/31 HTML / CSS
英国最大的在线运动补充剂商店:Discount Supplements
2017/06/03 全球购物
Java方面的关于数组和继承的笔面试题
2015/09/18 面试题
应聘自荐信
2013/12/14 职场文书
群众路线对照检查材料
2014/09/22 职场文书
校车安全管理责任书
2015/05/11 职场文书