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 相关文章推荐
用dtree实现树形菜单 dtree使用说明
Oct 17 Javascript
ie支持function.bind()方法实现代码
Dec 27 Javascript
JS判断浏览器是否支持某一个CSS3属性的方法
Oct 17 Javascript
jquery处理页面弹出层查询数据等待操作实例
Mar 25 Javascript
jQuery使用serialize()表单序列化时出现中文乱码问题的解决办法
Jul 27 Javascript
Bootstrap的popover(弹出框)2秒后定时消失的实现代码
Feb 27 Javascript
JavaScript实现的原生态兼容IE6可调可控滚动文字功能详解
Sep 19 Javascript
bootstrap中的导航条实例代码详解
May 20 Javascript
微信小程序实现的picker多级联动功能示例
May 23 Javascript
浅谈Node新版本13.2.0正式支持ES Modules特性
Nov 25 Javascript
vue element-ui实现input输入框金额数字添加千分位
Dec 29 Javascript
Element Popover 弹出框的使用示例
Jul 26 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生成网页快照 不用COM不用扩展.
2010/02/11 PHP
PHP获取表单textarea数据中的换行问题
2010/09/10 PHP
php+xml编程之xpath的应用实例
2015/01/24 PHP
PHP设计模式之迭代器模式
2016/06/17 PHP
php根据数据id自动生成编号的实现方法
2016/10/16 PHP
PHP观察者模式示例【Laravel框架中有用到】
2018/06/15 PHP
html数组字符串拼接的最快方法
2009/09/16 Javascript
JS date对象的减法处理实现代码
2010/12/28 Javascript
JavaScript在IE和FF下的兼容性问题
2014/05/19 Javascript
javascript常用的方法整理
2015/08/20 Javascript
分享一个原生的JavaScript拖动方法
2016/09/25 Javascript
JS禁止查看网页源代码的实现方法
2016/10/12 Javascript
zTree节点文字过多的处理方法
2017/11/24 Javascript
如何实现小程序tab栏下划线动画效果
2019/05/18 Javascript
一些可能会用到的Node.js面试题
2019/06/15 Javascript
[50:01]Ti4 冒泡赛第二天 NEWBEE vs Titan
2014/07/15 DOTA
[41:52]2018DOTA2亚洲邀请赛3月29日小组赛B组Effect VS Secret
2018/03/30 DOTA
[00:16]热血竞技场
2019/03/06 DOTA
在Lighttpd服务器中运行Django应用的方法
2015/07/22 Python
Python模拟百度登录实例详解
2016/01/20 Python
Python爬取三国演义的实现方法
2016/09/12 Python
python中使用iterrows()对dataframe进行遍历的实例
2018/06/09 Python
解决Python print 输出文本显示 gbk 编码错误问题
2018/07/13 Python
Python爬取数据保存为Json格式的代码示例
2019/04/09 Python
Python 多线程搜索txt文件的内容,并写入搜到的内容(Lock)方法
2019/08/23 Python
Python基于百度AI实现OCR文字识别
2020/04/02 Python
python能做哪方面的工作
2020/06/15 Python
Python基于httpx模块实现发送请求
2020/07/07 Python
俄罗斯一家时尚女装商店:Charuel
2019/12/04 全球购物
给护士表扬信
2014/01/19 职场文书
旅游管理专业大学生职业规划书
2014/02/27 职场文书
教师暑期培训感言
2014/08/15 职场文书
2014年校务公开工作总结
2014/12/18 职场文书
国情备忘录观后感
2015/06/04 职场文书
七个非常实用的Python工具包总结
2021/06/15 Python
JS前端宏任务微任务及Event Loop使用详解
2022/07/23 Javascript