如何使图片叠加层中的Instagram图标恢复正常亮度
解决父元素滤镜导致子元素叠加层亮度异常的问题
问题核心:你给父容器.instacont设置了filter: brightness(40%),这个滤镜会作用于容器内的所有元素,包括叠加层.overlay。子元素设置的filter: brightness(100%)是在父滤镜的基础上叠加计算的(相当于40% × 100% = 40%),所以看起来完全没效果。
下面提供两种可行的解决方案:
方案一:将滤镜直接应用到图片上
把滤镜从父容器移到图片元素本身,这样只有图片会变暗,叠加层不受影响:
修改后的CSS:
.instacont { width: 250px; display: flex; } .insta-container { display: flex; flex-direction: column; align-items: center; position: relative; } .overlay { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); color: white; font-size: 23px; text-align: center; } #seimg { width: 287px; display: flex; margin-left: -5px; } .insta { display: flex; width: 287px; filter: brightness(40%); /* 滤镜移至图片 */ }
方案二:将叠加层移出滤镜容器
如果必须给父容器加滤镜(比如容器内有多个元素需要统一处理),可以把叠加层放到父容器的同级位置,利用外层.insta-container的相对定位来保持图标在图片中央:
修改后的HTML:
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css" rel="stylesheet"/> <div class="insta-container"> <div class="instacont"> <img class="insta" src="https://i.pinimg.com/736x/2c/fc/71/2cfc71b0af14a2d2a20fe8048f3bd8ef.jpg"> </div> <div class="overlay"><i class="fab fa-instagram fa-2x" style="color: #ffffff;" id="instaicon"></i></div> </div>
CSS无需修改,因为.insta-container已经设置了position: relative,叠加层的绝对定位会基于这个外层容器,刚好覆盖在图片中央,同时完全不受.instacont的滤镜影响。
这两种方法都能让Instagram图标保持正常亮度,达到你想要的效果。
内容的提问来源于stack exchange,提问作者Ayman
相关产品推荐
相关产品推荐

