高度折叠jQuery+CSS 半开折叠效果源码

题记:写这篇博客要主是加深自己对高度折叠的认识和总结实现算法时的一些验经和训教,如果有错误请指出,万分感谢。

    一个项目想用jQuery做一个可以半折叠的DIV元素,苦于jQueryUI中accordion没有供提相干的方法,就自己写了个。前以用使jQueryUI的时候现发可以用的accordion全体折叠起来了,没办法设置折叠的最小高度。

    代码品质很低,希望老鸟可以点指点指。

    下图是果效示展,可以借由jQuery的函数开展压缩

 高度和折叠

 1 //author: hlhr
 2 //require: Jquery1.4 and above
 3 function animate_toggle_height(maxh,minh,maxo,mino,element,speed) {//这个是纵向的,参数释解:大最高度,最小高度,大最透明度,最小透明度,元素,画动度速
 4     if (element.css("height")==minh.toString().concat("px")){//如果是最小高度就开展
 5         element.animate({
 6             height:maxh,
 7             opacity:maxo
 8         },{queue: false},speed);
 9         return "Fold"
10     }
11     if (element.css("height")==maxh.toString().concat("px")){//如果是大最高度就折叠
12         $(this).html("");
13         element.animate({
14             height:minh,
15             opacity:mino
16         },{queue: false},speed);
17         return "Read more";
18     }
19 }
20 
21 function animate_toggle_width(maxw,minw,maxo,mino,element,speed) {
22     if (element.css("width")==minw.toString().concat("px")){
23         element.animate({
24             width:maxw,
25             opacity:maxo
26         },{queue: false},speed);
27         return "Fold"
28     }
29     if (element.css("width")==maxw.toString().concat("px")){
30         element.animate({
31             width:minw,
32             opacity:mino
33         },{queue: false},speed);
34         return "Read more";
35     }
36 }
    每日一道理
心是一棵树,爱与希望的根须扎在土里,智慧与情感的枝叶招展在蓝天下。无论是岁月的风雨扑面而来,还是滚滚尘埃遮蔽了翠叶青枝,它总是静默地矗立在那里等待,并接受一切来临,既不倨傲,也不卑微。
  心是一棵树,一个个故事被年轮携载;一回回驿动与飞鸟相约;一次次碰撞使它绵密柔韧;一幕幕经历造就了它博广的胸怀。心是一棵树,独木不成林。因此,树与树既独立又相联,心与心既相异又相亲。
 1 <html>
 2     <head>
 3         <script src="jquery-1.9.1.min.js"></script><!--须要jquery库-->
 4         <script src="jqslider.js"></script><!--链接上文的js库-->
 5         <style>
 6             body{margin: 0 auto; text-align:center;}
 7             .slide{font-size:20px; overflow: hidden; width: 500px; }
 8             #content{margin:0 auto; width: 500px;}
 9             .viewbutton{position:relative; text-align: right;}
10         </style>
11     </head>
12     
13     <body>
14         <fieldset id="content">
15             <div class="slide">
16             <a class="viewbutton" href="#">
17                 Read more
18             </a>
19                 <p>slide!</p>
20                 <p>slide!</p>
21                 <p>slide!</p>
22                 <p>slide!</p>
23                 <p>slide!</p>
24             </div>
25         </fieldset>
26         <p />
27 
28         <fieldset id="content">
29             <div class="slide">
30             <a class="viewbutton" href="#">
31                 Read more
32             </a>
33                 <p>slide!</p>
34                 <p>slide!</p>
35                 <p>slide!</p>
36                 <p>slide!</p>
37                 <p>slide!</p>
38             </div>
39         </fieldset>
40         
41         
42         <script type="text/javascript">
43             var max_h=300;
44             var min_h=100;
45             //var max_w=500;
46             //var min_w=10;
47             var max_o=1;
48             var min_o=0.3;
49             $(".slide").css({opacity:min_o});//设置初始的透明度
50             $(".slide").css({height:min_h});//设置初始的高度
51             $(".viewbutton").click(function(){//这里只是用调了纵向开展,也可以用调向横开展
52                 $(this).html(animate_toggle_height(max_h,min_h,max_o,min_o,$(this).parent(),500));//自动识别为viewbutton的上一级行进画动
53             });
54         </script>
55     </body>
56 </html>
 viewbutton的层级可自行修改,但要注意画动的目标是什么。我写的viewbutton会对它上一级的那个div做画动,所以就用不把选择器写得过于庞杂了。

文章结束给大家分享下程序员的一些笑话语录: 程序员的愿望
  有一天一个程序员见到了上帝.上帝: 小伙子,我可以满足你一个愿望.程序员: 我希望中国国家队能再次打进世界杯.
  上帝: 这个啊!这个不好办啊,你还说下一个吧!
  程序员: 那好!我的下一个愿望是每天都能休息6个小时以上.
  上帝: 还是让中国国家打进世界杯.


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
YCExpandView01.该库介绍02.效果展示03.如何使用04.注意要点05.优化问题06.部分代码逻辑01.该库介绍自定义折叠和展布局,在不用改变原控件的基础上,就可以实现折叠功能,入侵性极低。主要的思路是,设置一个折叠时的布局高度,设置一个内容展时的高度,然后利用属性动画去动态改变布局的高度。可以设置折叠和展的监听事件,方便发者拓展其他需求。可以设置动画的时间。可以支持支持常见的文本折叠,流失布局标签折叠,或者RecyclerView折叠等功能。十分方便,思路也比较容易理解,代码不超过300行……02.效果展示03.如何使用设置文本控件      如何切换展折叠//初始化操作 expand.initExpand(false ,mHeight); //设置动画时间 expand.setAnimationDuration(300); //折叠或者展操作后的监听 expand.setOnToggleExpandListener(new ExpandLayout.OnToggleExpandListener() {     @Override     public void onToggleExpand(boolean isExpand) {         if (isExpand){             ivExpand.setBackgroundResource(R.mipmap.icon_btn_collapse);         }else {             ivExpand.setBackgroundResource(R.mipmap.icon_btn_expand);         }     } }); //折叠view expand.collapse(); //展view expand.expand(); //查看控件是折叠还是展状态 expand.isExpand(); //这个是置反操作 expand.toggleExpand();04.注意要点05.优化问题1.在从折叠状态到伸展状态,或者反之。只要是在动画过程中,则执行动画的过程中屏蔽事件传递2.当控件销毁后,在onDetachedFromWindow方法中,手动销毁动画3.针对折叠和伸展状态之间切换,如果动画在执行中,即使调用多次toggleExpand()方法,避免频繁调用collapse或者expand4.如果发者使用该折叠控件时,设置折叠时的高度为0,则会抛出异常

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值