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 相关文章推荐
ie和firefox中img对象区别的困惑
Dec 27 Javascript
JavaScript中的对象化编程
Jan 16 Javascript
国外的为初学者写的JavaScript教程
Jun 09 Javascript
基于jQuery的弹出消息插件 DivAlert之旅(一)
Apr 01 Javascript
javascript 弹出的窗口返回值给父窗口具体实现
Nov 23 Javascript
在JavaScript中如何解决用execCommand(
Oct 19 Javascript
JavaScript的String字符串对象常用操作总结
May 26 Javascript
webpack+vue.js快速入门教程
Oct 12 Javascript
ES6通过babel转码使用webpack使用import关键字
Dec 13 Javascript
基于VUE实现判断设备是PC还是移动端
Jul 03 Javascript
vue3.0 项目搭建和使用流程
Mar 04 Vue.js
聊聊JS ES6中的解构
Apr 29 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
火车采集器 免费版使出收费版本功能实现原理
2009/09/17 PHP
php生成数组的使用示例 php全组合算法
2014/01/16 PHP
Laravel5.1自定义500错误页面示例
2016/10/09 PHP
ThinkPHP 3使用OSS的方法
2018/07/19 PHP
PHP使用HTML5 FileApi实现Ajax上传文件功能示例
2019/07/01 PHP
取得传值的函数
2006/10/27 Javascript
jQuery实现行文字链接提示效果的方法
2015/03/10 Javascript
对象转换为原始值的实现方法
2016/06/06 Javascript
使用bootstrapValidator插件进行动态添加表单元素并校验
2016/09/28 Javascript
HTML5canvas 绘制一个圆环形的进度表示实例
2016/12/16 Javascript
Jquery EasyUI Datagrid右键菜单实现方法
2016/12/30 Javascript
bootstrap多层模态框滚动条消失的问题
2017/07/21 Javascript
React-intl 实现多语言的示例代码
2017/11/03 Javascript
vue+element-ui+ajax实现一个表格的实例
2018/03/09 Javascript
如何使node也支持从url加载一个module详解
2018/06/05 Javascript
Vue.js 利用v-for中的index值实现隔行变色
2018/08/01 Javascript
对layui数据表格动态cols(字段)动态变化详解
2019/10/25 Javascript
你准备好迎接vue3.0了吗
2020/04/28 Javascript
jQuery实现鼠标拖动图片功能
2021/03/04 jQuery
[03:48]显微镜下的DOTA2第四期——TP动作
2014/06/20 DOTA
详解Python中find()方法的使用
2015/05/18 Python
Python连接phoenix的方法示例
2017/09/29 Python
浅谈Python 列表字典赋值的陷阱
2019/01/20 Python
Python之虚拟环境virtualenv,pipreqs生成项目依赖第三方包的方法
2019/07/23 Python
python cumsum函数的具体使用
2019/07/29 Python
Django+zTree构建组织架构树的方法
2019/08/21 Python
详解在Python中使用Torchmoji将文本转换为表情符号
2020/07/27 Python
Anthropologie英国:美国家喻户晓的休闲服装和家居产品品牌
2018/12/05 全球购物
大学本科毕业生求职简历的自我评价
2013/10/09 职场文书
自我评价如何写好?
2014/01/05 职场文书
护理专业优质毕业生自荐书
2014/01/31 职场文书
党员公开承诺践诺书
2014/03/25 职场文书
文明寄语大全
2014/04/11 职场文书
法英专业大学生职业生涯规划范文:衡外情,量己力!
2014/09/23 职场文书
预备党员群众路线思想汇报2014
2014/10/25 职场文书
2014年作风建设工作总结
2014/10/29 职场文书