假设三个盒子,三种办法在一起做对比:
<div class="normal">正常模式</div>
<div class="box">优化后</div>
<div class="pesudo">双伪元素</div>
hover的时候最简单的办法就是:
.normal:hover {
transform: scale(1.75, 1.75);
box-shadow: 0 16px 24px rgba(0, 0, 0, 0.7);
}
第二种就是:
.box::after {
content: "";
border-radius: 5px;
position: absolute;
z-index: -1;
top: 0;
left: 0;
width: 100%;
height: 100%;
box-shadow: 0 16px 24px rgba(0, 0, 0, 0.7);
opacity: 0;
transition: all 0.6s cubic-bezier(0.165, 0.84, 0.44, 1);
}
.box:hover {
transform: scale(1.75, 1.75);
}
.box:hover::after {
opacity: 1;
}
使用双伪元素:
.pesudo {
box-shadow: unset;
}
.pesudo::after {
content: "";
border-radius: 5px;
position: absolute;
z-index: -1;
top: 0;
left: 0;
width: 100%;
height: 100%;
box-shadow: 0 16px 24px rgba(0, 0, 0, 0.7);
opacity: 0;
transition: all 0.6s cubic-bezier(0.165, 0.84, 0.44, 1);
}
.pesudo::before {
content: "";
border-radius: 5px;
position: absolute;
z-index: -1;
top: 0;
left: 0;
width: 100%;
height: 100%;
box-shadow: 0 8px 12px rgba(0, 0, 0, 0.5);
transition: all 0.6s cubic-bezier(0.165, 0.84, 0.44, 1);
}
.pesudo:hover {
transform: scale(1.75, 1.75);
}
.pesudo:hover::before {
opacity: 0;
}
.pesudo:hover::after {
opacity: 1;
}