效果如图所示:
点击的时候会显示一个框,这个框我用的是显示隐藏实现的,没有动画效果。现在产品要求点击的时候框要有下移动画,关闭的时候有上移动画。这个该怎么实现呀?
效果如图所示:
点击的时候会显示一个框,这个框我用的是显示隐藏实现的,没有动画效果。现在产品要求点击的时候框要有下移动画,关闭的时候有上移动画。这个该怎么实现呀?
给框加一个高度,点击后高度由0变为100%的高度
假设高度300,显示直接改变dispalay就行了
@keyframes animateName {
from {
height: 0;
}
to {
height: 300px;
}
}
写了个 demo ,希望对你有用。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
html,
body {
margin: 0;
padding: 0;
background: #333;
}
.popup {
width: 100%;
top: auto;
right: auto;
bottom: 0;
left: 50%;
position: fixed;
background: #fff;
top: 50%;
left: 50%;
backface-visibility: hidden;
transition: .2s ease-out;
transform: translate3d(-50%, 100%, 0);
}
</style>
</head>
<body>
<button>显示/隐藏</button>
<div class="popup">嘻嘻嘻嘻嘻</div>
<script>
const button = document.querySelector('button'),
popup = document.querySelector('.popup');
let show = true
button.addEventListener('click', function() {
if (show) {
popup.style.transform = 'translate3d(-50%, 0, 0)'
} else {
popup.style.transform = 'translate3d(-50%, 100%, 0)'
}
show = !show
})
</script>
</body>
</html>
如果对兼容性没什么要求的话,可以采用css
的过渡
.select{
visibility:hidden;
opacity:0;
transform:translateY(-100px);
transition:.3s;
}
/* 添加show出现,移除show隐藏 */
.select.show{
visibility:visible;
opacity:1;
transform:translateY(0);
}
注意,不能用display:none
这些方式来隐藏,这样是不会有动画的。
如果要兼容ie6+
等老旧浏览器,你可以使用jquery
来实现动画
$('.select').slideDown();//向下展开显示
$('.select').slideUp();//向上收缩隐藏
3 回答5.1k 阅读✓ 已解决
5 回答1.9k 阅读
3 回答1.4k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
4 回答1.6k 阅读✓ 已解决
2 回答2.5k 阅读✓ 已解决
2 回答1.9k 阅读✓ 已解决
我的css3 animation实现:
https://codepen.io/mudontire/...