jq点击展示更多内容效果
效果:
常见的点击更多展示效果.代码如下,有几种方式.
样式:
.list-box { background: #ddd; width: 500px; margin: 20px auto; } .content { height: 48px; line-height: 24px; overflow: hidden; } .showMore { height: auto; } .more-btn { color: #ea5413; text-align: center; cursor: pointer; /* animation: all 0.2s; */ } .more-btn i { display: inline-block; animation: all 0.2s; font-style: normal; transform: rotate(90deg); } .showMore+.more-btn i { transform: rotate(-90deg); }
html
<div class="list-box"> <div class="content"> 折叠内容主体,这是一段比较长内容。默认折叠主要内容,只显示当前项标题。点击标题展开,才能看到这段问题。再次点击标题,折叠内容。折叠内容主体,这是一段比较长内容。 默认折叠主要内容,只显示当前项标题。点击标题展开,才能看到这段问题。再次点击标题,折叠内容。 折叠内容主体,这是一段比较长内容。默认折叠主要内容,只显示当前项标题。点击标题展开,才能看到这段问题。再次点击标题,折叠内容。 </div> <div class="more-btn">更多<i>></i></div> </div>
js第一种方式:(普通的展开收起加类实现)
$(function() { $('.more-btn').click(function() { if ($(this).prev('.content').height() == '48') { $(this).prev('.content').addClass('showMore'); $(this).html("收起<i>></i>"); } else { $(this).prev('.content').removeClass('showMore'); $(this).html("更多<i>></i>"); } }) })
js第二种方式(效果是滑动展开收起,用的是动画animate)
$(function() { $('.more-btn').click(function() { if ($(this).prev('.content').height() == '48') { // $(this).prev('.content').animate({ // height: "auto" // },1000) // jQuery.animate height设为auto没有效果的解决方法 var curHeight = $('.content').height(), autoHeight = $('.content').css('height', 'auto').height(); $(this).prev('.content').height(curHeight).animate({ height: autoHeight }, 1000) $(this).html("收起<i>></i>"); } else { $(this).prev('.content').animate({ height: '48px' }) $(this).html("更多<i>></i>"); } }) })
本来一开始是展开之后的内容用height:auto,但是发现一直点击没有效果,百度才知道jQuery.animate height设为auto没有效果的,解决方法是:
var curHeight = $('.content').height(), autoHeight = $('.content').css('height', 'auto').height(); $(this).prev('.content').height(curHeight).animate({ height: autoHeight }, 1000) $(this).html("收起<i>></i>");
就这样了.
相对来说第一种方便实现一点,第二种效果滑动好看一点.
本文作者: Jasmine
本文链接: https://www.jianbaizhan.com/article/722
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 许可协议。转载请注明出处!