APA*_*AD1 21 html javascript css jquery css-transitions
有没有办法动画显示:无显示:阻止使用CSS,以便隐藏的div滑下而不是突然出现,或者我应该采取不同的方式?
HTML:
<div id="box">
Initial Content
<div class="hidden">
This is hidden content
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
CSS:
#box {
height:auto;
background:#000;
color:#fff;
cursor:pointer;
}
.hidden {
height:200px;
display:none;
}
.hidden.open {
display:block;
}
Run Code Online (Sandbox Code Playgroud)
这是我的脚本:
$(document).ready(function() {
$('#box').click(function() {
$(this).find(".hidden").toggleClass('open');
});
});
Run Code Online (Sandbox Code Playgroud)
sin*_*ake 27
是的,有一种方法:http: //jsfiddle.net/6C42Q/12/
通过使用CSS3过渡,并操纵高度,而不是显示属性:
.hidden {
height: 0px;
-webkit-transition: height 0.5s linear;
-moz-transition: height 0.5s linear;
-ms-transition: height 0.5s linear;
-o-transition: height 0.5s linear;
transition: height 0.5s linear;
}
.hidden.open {
height: 200px;
-webkit-transition: height 0.5s linear;
-moz-transition: height 0.5s linear;
-ms-transition: height 0.5s linear;
-o-transition: height 0.5s linear;
transition: height 0.5s linear;
}
Run Code Online (Sandbox Code Playgroud)
更多这里:向下滑动div单击Pure CSS?
由于您已经在使用jQuery,最简单的方法就是使用slideDown().http://api.jquery.com/slidedown/
还有slideToggle().
然后,您不需要手动执行所有特定于浏览器的转换css.
我喜欢 CSS 过渡的想法,但它仍然非常跳跃。有时必须将 max-height 设置为非常高的数字,因为动态内容会使过渡变得无用,因为它非常跳跃。所以,我又回到了 jQuery,但它有它自己的缺点。内联元素是跳跃的。
我发现这对我有用:
$(this).find('.p').stop().css('display','block').hide().slideDown();
Run Code Online (Sandbox Code Playgroud)
停止停止所有先前的转换。css 确保它被视为块元素,即使它不是。hide 隐藏该元素,但 jquery 会将其记住为块元素。最后,slideDown 通过向下滑动来显示元素。
我们可以使用visibility: hiddentovisibility: visible来代替display: nonetodisplay: block属性。并且使用max-height而不hight应该保持元素具有自动高度。
看这个例子:
function toggleSlide () {
const div = document.querySelector('div')
if (div.classList.contains('open')) {
div.classList.remove('open')
} else {
div.classList.add('open')
}
}Run Code Online (Sandbox Code Playgroud)
div {
visibility: hidden;
transition: visibility .5s, max-height .5s;
max-height: 0;
overflow: hidden;
/* additional style */
background: grey;
color: white;
padding: 0px 12px;
margin-bottom: 8px;
}
div.open {
visibility: visible;
/* Set max-height to something bigger than the box could ever be */
max-height: 100px;
}Run Code Online (Sandbox Code Playgroud)
<div>
<p>First paragraph</p>
<p>Second paragraph</p>
</div>
<button
onclick="toggleSlide()"
>
toggle slide
</button>Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
75984 次 |
| 最近记录: |