在网页设计中,推拉门效果经常被运用在导航栏、侧边栏等元素中,使页面更加美观、动态。这里我们就来学习一下在 CSS 盒子中如何制作推拉门效果。
首先,我们需要定义两个 div 标签来模拟推拉门的两片木板:
<div class="door">
<div class="door-1"></div>
<div class="door-2"></div>
</div>
接下来,在 CSS 中设置门的样式及动画:
.door {
position: relative;
width: 250px;
height: 200px;
margin: 0 auto;
overflow: hidden;
}
.door-1 {
position: absolute;
width: 125px;
height: 200px;
background-color: #ddd;
transition: all 0.5s ease-in-out;
}
.door-2 {
position: absolute;
left: 125px;
width: 125px;
height: 200px;
background-color: #555;
transition: all 0.5s ease-in-out;
}
.door-1.open {
transform: translateX(-125px);
}
.door-2.open {
transform: translateX(125px);
}
这里我们将 door-1 和 door-2 分别设置为左右两个 div,使用绝对定位来重叠在一起,overflow: hidden 隐藏超出部分的内容。然后我们为两个门添加了颜色和过渡效果。接下来,当 door-1.addClassName('open') 被调用时,door-1 就会向左移,door-2 向右移,从而产生推拉门效果。这里利用了 CSS 的 transform 属性。
最后,我们通过 JavaScript 来控制门的开关:
var door = document.querySelector('.door');
var door1 = document.querySelector('.door-1');
var door2 = document.querySelector('.door-2');
// 点击door元素触发开关门操作
door.addEventListener('click', function () {
if (door1.classList.contains('open')) {
// 关门
door1.classList.remove('open');
door2.classList.remove('open');
} else {
// 开门
door1.classList.add('open');
door2.classList.add('open');
}
});
至此,一个完整的推拉门效果就完成了。我们可以自己尝试修改颜色、尺寸、动画时间等参数,来制作自己想要的效果。