如何将高度动画设置为自动
How can I animate height to auto?
jQuery
$(".facts").click(function(e) {
if($(this).height() >50) {
$(this).animate({height:50+'px'});
$(this).find('.servicedrop').toggleClass('fa-caret-up fa-caret-down');
$(this).removeClass("facts_active");
}else{
if ( $(".facts_active").length) {
$(".facts_active").animate({height:50+'px'});
}
$(this).animate({height:350 + 'px'});
$(this).find('.servicedrop').toggleClass('fa-caret-down fa-caret-up');
$(this).addClass("facts_active");
}
});
我想把height
动画化为"auto"
,而不是把height:350px
动画化,以使我的手风琴做出响应。我在谷歌上搜索了它并阅读了一些解决方案,但我不知道如何将其添加到代码中。
如果你能帮我就太好了。
如注释中所述,您无法设置height:auto;
的动画,但您可以通过设置max-height
的动画并将活动的max-height
设置为您知道永远不会超过的值来绕过它。你也可以用更少的Javascript来完成,因为动画可以用CSS3:来处理
$(function() {
$('.facts').click(function() {
$(this).toggleClass('active');
});
});
.facts {
width:300px;
max-height:50px;
overflow:hidden;
margin-bottom:20px;
-moz-transition: 1s;
-ms-transition: 1s;
-o-transition: 1s;
-webkit-transition: 1s;
transition: 1s;
}
.facts.active {
max-height:9999px; /*Height value which will not be exceeded*/
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="facts">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam dapibus erat justo, eu sagittis enim consequat id. Donec luctus luctus aliquam. Curabitur libero neque, interdum in nulla at, semper malesuada ligula. Donec tincidunt ipsum sit amet libero euismod, vel placerat est elementum. Fusce rhoncus molestie venenatis. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Phasellus rhoncus nisl nisl, sit amet suscipit est ultrices non. Nunc odio massa, tincidunt scelerisque venenatis sed, scelerisque nec leo.
</div>
<div class="facts">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam dapibus erat justo, eu sagittis enim consequat id. Donec luctus luctus aliquam. Curabitur libero neque, interdum in nulla at, semper malesuada ligula. Donec tincidunt ipsum sit amet libero euismod, vel placerat est elementum. Fusce rhoncus molestie venenatis. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Phasellus rhoncus nisl nisl, sit amet suscipit est ultrices non. Nunc odio massa, tincidunt scelerisque venenatis sed, scelerisque nec leo.
</div>
<div class="facts">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam dapibus erat justo, eu sagittis enim consequat id. Donec luctus luctus aliquam. Curabitur libero neque, interdum in nulla at, semper malesuada ligula. Donec tincidunt ipsum sit amet libero euismod, vel placerat est elementum. Fusce rhoncus molestie venenatis. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Phasellus rhoncus nisl nisl, sit amet suscipit est ultrices non. Nunc odio massa, tincidunt scelerisque venenatis sed, scelerisque nec leo.
</div>
<div class="facts">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam dapibus erat justo, eu sagittis enim consequat id. Donec luctus luctus aliquam. Curabitur libero neque, interdum in nulla at, semper malesuada ligula. Donec tincidunt ipsum sit amet libero euismod, vel placerat est elementum. Fusce rhoncus molestie venenatis. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Phasellus rhoncus nisl nisl, sit amet suscipit est ultrices non. Nunc odio massa, tincidunt scelerisque venenatis sed, scelerisque nec leo.
</div>
<div class="facts">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam dapibus erat justo, eu sagittis enim consequat id. Donec luctus luctus aliquam. Curabitur libero neque, interdum in nulla at, semper malesuada ligula. Donec tincidunt ipsum sit amet libero euismod, vel placerat est elementum. Fusce rhoncus molestie venenatis. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Phasellus rhoncus nisl nisl, sit amet suscipit est ultrices non. Nunc odio massa, tincidunt scelerisque venenatis sed, scelerisque nec leo.
</div>
<div class="facts">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam dapibus erat justo, eu sagittis enim consequat id. Donec luctus luctus aliquam. Curabitur libero neque, interdum in nulla at, semper malesuada ligula. Donec tincidunt ipsum sit amet libero euismod, vel placerat est elementum. Fusce rhoncus molestie venenatis. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Phasellus rhoncus nisl nisl, sit amet suscipit est ultrices non. Nunc odio massa, tincidunt scelerisque venenatis sed, scelerisque nec leo.
</div>
您可以通过使用$('select').height();
动态计算高度来完成
$(".facts").click(function(e) {
if($(this).height() >50) {
$(this).animate({height:50+'px'});
$(this).find('.servicedrop').toggleClass('fa-caret-up fa-caret-down');
$(this).removeClass("facts_active");
}else{
if ( $(".facts_active").length) {
$(".facts_active").animate({height:50+'px'});
}
var computedH = $(this).height(); // compute div's height including content
$(this).animate({height: computedH + 'px'}); // now you can animate the computed height
$(this).find('.servicedrop').toggleClass('fa-caret-down fa-caret-up');
$(this).addClass("facts_active");
}
});
你可以在这个小提琴上做一些类似的事情。
https://jsfiddle.net/pparas/frw0opfv/6/
你必须计算出你想要的高度,然后制作动画。
$(".facts").click(function(e) {
var newHeight = $('div.inner').height();
$(this).animate({
height: newHeight
});
});
类似于@Arun Sharma的回复。
希望能有所帮助。
Paras
相关文章:
- 设置动画时,SVG/Raphael大圆圈会变形
- jQuery animate()函数没有't设置动画
- 对象获胜'如果qml中的其他地方定义了数字动画属性,则t设置动画
- 如何在NativeScript中从列表中删除项目时设置动画
- angularjs路线过渡如何以交互方式设置动画
- 如何通过justinaguilar.com设置动画延迟?[解决]
- 当滚动条到达容器底部时设置动画
- 设置动画时jQuery停止侦听事件
- jQuery在模糊时设置动画-但仅当模糊超出形式时
- Reactjs在不使用插件的情况下为离开组件设置动画
- 在要设置动画的所有方法之间进行选择
- ng设置动画以创建slideIn/slideOut过渡
- 设置动画/移动putImageData放置的画布图像
- TweenSite不设置动画
- 使用jquery为html元素文本的每个字符设置动画
- 如何使用ngAnimate在CSS类之间设置动画
- 为已设置动画的元素设置动画
- scrollTop按钮没有't设置动画
- 可以使用jQuery'移动HTML背景吗;s设置动画
- 仅为父对象的填充设置动画