刚需css还真没想太多,项目中不断练习才不断的有了收获。关于这个的详细解释MDN,这里做个记录备忘。本文涉及到的关键
<style>
*{
margin: 0;
padding: 0;
}
.box{
width: 400px;
height: 400px;
position: relative;
overflow: hidden;
background-color: yellowgreen;
}
.inner{
visibility:hidden;
/* position: fixed; */
position:absolute;
top:0;
left: 0;
right: 0;
bottom: 0;
background-color: rgba(0, 0, 0, .5);
display: flex;
align-items: center;
justify-content: center;
}
.inner-container{
background-color: white;
position: relative;
}
</style>
<body>
<div class="box">
<div>店铺一</div>
<div>店铺一</div>
<div>店铺一</div>
<div>店铺一</div>
<button id = 'test'>click me</button>
<div class="inner">
<div class="inner-container">
<div>特价优惠活动</div>
<div>全场满50-10</div>
<div>全场满100-25</div>
<div>快来抢购</div>
<button class="close">关闭</button>
</div>
</div>
</div>
<div class="test">
<div class="inner">123</div>
</div>
</body>
<script>
const tip = document.querySelector('#test')
const inner = document.querySelector('.inner')
tip.addEventListener('click',function(){
inner.style.visibility = 'visible'
})
const close = document.querySelector('.close')
close.addEventListener('click',function(){
inner.style.visibility = 'hidden'
})
</script>
效果图
这里主要是看.inner这个类中的css代码,开启这个元素的绝对定位之后,指定四个方向为0,会自动向最近的一个非static祖先元素进行定位,占满其大小。
将元素定位改成fixed,就是下面这样。
下面才是我们想要的结果,因为fixed是相对于浏览器的窗口进行定位的,不会受其他元素影响。