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 相关文章推荐
fromCharCode和charCodeAt 方法
Dec 27 Javascript
给moz-firefox下添加IE方法和属性
Apr 10 Javascript
表单填写时用回车代替TAB的实现方法
Oct 09 Javascript
JavaScript开发规范要求(规范化代码)
Aug 16 Javascript
js 中将多个逗号替换为一个逗号的代码
Jun 07 Javascript
javascript为按钮注册回车事件(设置默认按钮)的方法
May 09 Javascript
简介JavaScript中setUTCSeconds()方法的使用
Jun 12 Javascript
微信小程序 生命周期详解
Oct 12 Javascript
Bootstrap基本组件学习笔记之列表组(11)
Dec 07 Javascript
Angularjs 实现动态添加控件功能
May 25 Javascript
vue中实现Monaco Editor自定义提示功能
Jul 05 Javascript
初试vue-cli使用HBuilderx打包app的坑
Jul 17 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
YB217、YB235、YB400浅听
2021/03/02 无线电
PHP面向对象程序设计之接口用法
2014/08/20 PHP
PHP观察者模式定义与用法实例分析
2019/03/22 PHP
Laravel-admin之修改操作日志的方法
2019/09/30 PHP
url地址自动加#号问题说明
2010/08/21 Javascript
25个好玩的JavaScript小游戏分享
2011/04/22 Javascript
详解JavaScript中的forEach()方法的使用
2015/06/08 Javascript
基于JS实现Android,iOS一个手势动画效果
2016/04/27 Javascript
文本框只能输入数字的js代码(含小数点)
2016/07/10 Javascript
Jquery Easyui日历组件Calender使用详解(23)
2016/12/18 Javascript
Vue.js学习示例分享
2017/02/05 Javascript
判断颜色是否合法的正则表达式(详解)
2017/05/03 Javascript
Vue-Router基础学习笔记(小结)
2018/10/15 Javascript
vue实现登录页面的验证码以及验证过程解析(面向新手)
2019/08/02 Javascript
Angular8基础应用之表单及其验证
2019/08/11 Javascript
javaScript 实现重复输出给定的字符串的常用方法小结
2020/02/20 Javascript
使用vue打包进行云服务器上传的问题
2020/03/02 Javascript
vue 解决兄弟组件、跨组件深层次的通信操作
2020/07/27 Javascript
python代码制作configure文件示例
2014/07/28 Python
Python yield与实现方法代码分析
2018/02/06 Python
Django中Model的使用方法教程
2018/03/07 Python
python 常用的基础函数
2018/07/10 Python
python对csv文件追加写入列的方法
2019/08/01 Python
PYTHON实现SIGN签名的过程解析
2019/10/28 Python
修改Pandas的行或列的名字(重命名)
2019/12/18 Python
Python实现图片识别加翻译功能
2019/12/26 Python
Python基于yaml文件配置logging日志过程解析
2020/06/23 Python
美国专营婴幼儿用品的购物网站:buybuy BABY
2017/01/01 全球购物
Lou & Grey美国官网:主打舒适性面料服饰
2017/12/21 全球购物
夜班门卫岗位职责
2013/12/09 职场文书
老同学聚会感言
2014/02/23 职场文书
《跨越海峡的生命桥》教学反思
2014/02/24 职场文书
119消防日活动总结
2014/08/29 职场文书
作弊检讨书范文
2015/05/06 职场文书
导游词之秦皇岛燕塞湖
2020/01/03 职场文书
Python中的 Set 与 dict
2022/03/13 Python