代码
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<style>
* {
margin: 0;
padding: 0;
}
html, body {
width: 100%;
height: 100%;
background-color: #f7f7f7;
}
.flex {
display: flex;
justify-content: center;
align-items: center;
}
.box {
position: relative;
width: 375px;
height: 667px;
background-color: #ffffff;
}
.btn {
width: 60px;
height: 36px;
line-height: 36px;
text-align: center;
color: #666666;
border: 1px solid #eeeeee;
border-radius: 4px;
}
.pop {
position: fixed;
left: 0;
top: 0;
width: 100%;
height: 100%;
background-color: rgba(0, 0, 0, .7);
opacity: 0;
z-index: -1;
transition: opacity .3s ease-in-out;
-webkit-transition: opacity .3s ease-in-out;
}
.pop-act {
opacity: 1;
z-index: 30;
}
.item {
position: fixed;
left: 0;
bottom: 0;
width: 100%;
height: 30%;
background-color: #f2f2f2;
z-index: 40;
transform: translate3d(0, 100%, 0);
-webkit-transform: translate3d(0, 100%, 0);
transition: transform .3s ease-in-out;
-webkit-transition: transform .3s ease-in-out;
}
.item-act {
transform: translate3d(0, 0, 0);
-webkit-transform: translate3d(0, 0, 0);
}
</style>
</head>
<body class="flex">
<div class="box flex">
<div class="btn">显示</div>
<!-- 遮罩层-->
<div class="pop"></div>
<!-- 选择器内容-->
<div class="item"></div>
</div>
<script>
document.querySelector('.btn').addEventListener('click', function () {
document.querySelector('.pop').classList.add('pop-act');
document.querySelector('.item').classList.add('item-act');
});
document.querySelector('.pop').addEventListener('click', function () {
this.classList.remove('pop-act');
document.querySelector('.item').classList.remove('item-act');
});
</script>
</body>
</html>
点击显示按钮遮罩层缓慢出现,内容块上滑到视图区域,点击遮罩层,遮罩隐藏,内容块下滑出视图区域。