我创建了一个向上滑动的登录/退出框,我认为有一种更聪明的方法可以做到这一点。我遇到的问题是,当框出现时,它会在主体上抛出一个垂直滚动条。这显然是预料之中的,但不会出现溢出:隐藏在身体上,我怎样才能更干净地做到这一点?
FIDDLE:https://jsfiddle.net/43dog4fw/
// show logout box
$('.user').click(function() {
$('.logout-box')
.show()
.animate({
marginBottom: "0"
}, 200, 'swing');
});
// Close logout box
$('.close-bar').click(function() {
$('.logout-box').animate({
marginBottom: "-=380px"
}, 200, 'swing', function() {
$('.logout-box').hide();
});
});
答案 0 :(得分:0)
不是为底部边距设置动画,而是以百分比为底部属性设置动画。这样,模态的高度并不重要。
<强> JS 强>
$('.user').click(function() {
$('.logout-box')
.show()
.animate({
bottom: "0%"
}, 200, 'swing');
});
// Close logout box
$('.close-bar').click(function() {
$('.logout-box').animate({
bottom: "-100%"
}, 200, 'swing', function() {
$('.logout-box').hide();
});
});
<强> CSS 强>
.logout-box {
position: fixed;
background: gray;
display: none;
left: 0;
bottom: -100%;
height: 380px;
margin-bottom: 0;
width: 100%;
background: #000000;
}
如果您的模态总是从屏幕底部出现,您可以将位置更改为fixed
而不是absolute
,这也会消除滚动条。
答案 1 :(得分:0)
使用高度而不是边距来制作动画。
// show logout box
$('.user').click(function() {
$('.logout-box')
.show()
.animate({
height: "380px"
}, 200, 'swing');
});
// Close logout box
$('.close-bar').click(function() {
$('.logout-box').animate({
height: 0
}, 200, 'swing', function() {
$('.logout-box').hide();
});
});
答案 2 :(得分:0)
您可以使用css transition
并切换.visible
类,如下所示:
检查Fiddle
body { overflow:hidden }
.logout-box {
position: absolute;
background: gray;
left: 0;
bottom: 0;
height: 380px;
margin-bottom: -380px;
width: 100%;
background: #000000;
opacity:0;
transition:all 150ms ease-in-out;
}
.visible {
margin-bottom:0;
opacity:1;
}