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 相关文章推荐
FileUpload上传图片(图片不变形)
Aug 05 Javascript
javascript函数式编程实例分析
Apr 25 Javascript
详解JavaScript异步编程中jQuery的promise对象的作用
May 03 Javascript
jquery PrintArea 实现票据的套打功能(代码)
Mar 17 Javascript
原生JavaScript实现的简单省市县三级联动功能示例
May 27 Javascript
Ionic3 UI组件之autocomplete详解
Jun 08 Javascript
Node调用Java的示例代码
Sep 20 Javascript
JS点击动态添加标签、删除指定标签的代码
Apr 18 Javascript
Vue.js最佳实践(五招助你成为vuejs大师)
May 04 Javascript
react实现同页面三级跳转路由布局
Sep 26 Javascript
深入理解Antd-Select组件的用法
Feb 25 Javascript
vue.js实现双击放大预览功能
Jun 23 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
用Zend Encode编写开发PHP程序
2010/02/21 PHP
PHP5中使用PDO连接数据库的方法
2010/08/01 PHP
PHPUnit PHP测试框架安装方法
2011/03/23 PHP
php的memcache类分享(memcache队列)
2014/03/26 PHP
[原创]php正则删除html代码中class样式属性的方法
2017/05/24 PHP
PHP提取字符串中的手机号正则表达式怎么写
2017/07/17 PHP
JavaScript 编程引入命名空间的方法与代码
2007/08/13 Javascript
JMenuTab简单使用说明
2008/03/13 Javascript
jQuery 表单验证扩展代码(二)
2010/10/20 Javascript
使用JSLint提高JS代码质量方法分享
2013/12/16 Javascript
Jquery使用css方法改变样式实例
2015/05/18 Javascript
AngularJS通过$http和服务器通信详解
2016/09/21 Javascript
微信小程序 时间格式化(util.formatTime(new Date))详解
2016/11/16 Javascript
微信小程序 swiper组件轮播图详解及实例
2016/11/16 Javascript
JS/jQuery判断DOM节点是否存在的简单方法
2016/11/24 Javascript
微信小程序新增的拖动组件movable-view使用教程
2017/05/20 Javascript
jQuery获取单选按钮radio选中值与去除所有radio选中状态的方法
2017/05/20 jQuery
vue 根据数组中某一项的值进行排序的方法
2018/08/30 Javascript
在vue中使用echarts图表实例代码详解
2018/10/22 Javascript
小程序如何构建骨架屏
2019/05/29 Javascript
微信小程序实现渐入渐出动画效果
2019/06/13 Javascript
在Python中的Django框架中进行字符串翻译
2015/07/27 Python
python pcm音频添加头转成Wav格式文件的方法
2019/01/09 Python
python之PyQt按钮右键菜单功能的实现代码
2019/08/17 Python
python中open函数的基本用法示例
2019/09/07 Python
python实现的批量分析xml标签中各个类别个数功能示例
2019/12/30 Python
Python垃圾回收机制三种实现方法
2020/04/27 Python
Python发送邮件封装实现过程详解
2020/05/09 Python
Python并发请求下限制QPS(每秒查询率)的实现代码
2020/06/05 Python
JSF面试题:如何管量web层中的Bean,用什么标签。如何通过jsp页面与Bean绑定在一起进行处理?
2012/10/05 面试题
个人租房协议书
2014/04/09 职场文书
企业安全生产承诺书
2014/05/22 职场文书
药品营销策划方案
2014/06/15 职场文书
房屋买卖协议样本
2014/11/16 职场文书
2014年优秀党员材料
2014/12/18 职场文书
写给消防战士们的一封慰问信
2019/10/07 职场文书