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 相关文章推荐
jQuery LigerUI 使用教程表格篇(1)
Jan 18 Javascript
jQuery实现鼠标移到元素上动态提示消息框效果
Oct 20 Javascript
javascript实例分享---具有立体效果的图片特效
Jun 08 Javascript
jquery结婚电子请柬特效源码分享
Aug 21 Javascript
javascript实现图片轮播效果
Jan 20 Javascript
JavaScript事件学习小结(三)js事件对象
Jun 09 Javascript
使用jquery+iframe做一个ajax上传效果(实例)
Aug 24 jQuery
Cpage.js给组件绑定事件的实现代码
Aug 31 Javascript
jQuery中复合选择器简单用法示例
Mar 31 jQuery
Webpack 4如何动态切割JS注入文件名详解
Jul 09 Javascript
js prototype深入理解及应用实例分析
Nov 25 Javascript
解决VUEX的mapState/...mapState等取值问题
Jul 24 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中串行化用法示例
2016/11/16 PHP
Yii Framework框架使用PHPExcel组件的方法示例
2019/07/24 PHP
php 多进程编程父进程的阻塞与非阻塞实例分析
2020/02/22 PHP
thinkphp框架表单数组实现图片批量上传功能示例
2020/04/04 PHP
鼠标经过的文本框textbox变色
2009/05/21 Javascript
jQuery针对各类元素操作基础教程
2014/08/29 Javascript
DOM 事件流详解
2015/01/20 Javascript
javascript随机抽取0-100之间不重复的10个数
2016/02/25 Javascript
微信小程序授权获取用户详细信息openid的实例详解
2017/09/20 Javascript
vue组件中使用props传递数据的实例详解
2018/04/08 Javascript
通过实例讲解JS如何防抖动
2019/06/15 Javascript
nodejs文件夹深层复制功能
2019/09/03 NodeJs
使用Layui搭建后台管理界面的操作方法
2019/09/20 Javascript
公众号SVG动画交互实战代码
2020/05/31 Javascript
微信小程序实现列表左右滑动
2020/11/19 Javascript
Python 3中print函数的使用方法总结
2017/08/08 Python
Python自定义线程类简单示例
2018/03/23 Python
python读取文本中数据并转化为DataFrame的实例
2018/04/10 Python
pandas 空的dataframe 插入列名的示例
2018/10/30 Python
python采集微信公众号文章
2018/12/20 Python
Numpy中对向量、矩阵的使用详解
2019/10/29 Python
python redis 批量设置过期key过程解析
2019/11/26 Python
python 爬取马蜂窝景点翻页文字评论的实现
2020/01/20 Python
Python要如何实现列表排序的几种方法
2020/02/21 Python
Django前后端分离csrf token获取方式
2020/12/25 Python
Django实现简单的分页功能
2021/02/22 Python
6种非常炫酷的CSS3按钮边框动画特效
2016/03/16 HTML / CSS
俄罗斯在线手表和珠宝商店:AllTime
2019/09/28 全球购物
传统软件工程与面向对象的软件工程有什么区别
2012/05/31 面试题
中药学专业毕业生推荐信
2014/07/10 职场文书
暑假安全保证书
2015/02/28 职场文书
2016大学优秀学生干部事迹材料
2016/03/01 职场文书
七年级作文之冬景
2019/11/07 职场文书
Python实现打乒乓小游戏
2021/09/25 Python
一文带你探究MySQL中的NULL
2021/11/11 MySQL
使用kubeadm命令行工具创建kubernetes集群
2022/03/31 Servers