CSS背景渐变未完全覆盖背景图片出现侧边线条问题求解
这个偶现的侧边线条是浏览器亚像素缩放时,同个background属性下多个背景图层边缘对齐偏差导致的渲染异常,同时你当前使用黑色低透明度作为渐变起始色的设置也不合理,会导致渐变衔接处偏暗,以下是可落地的解决方案:
方案1:调整渐变参数(修改成本最低)
将渐变的起始色改为白色透明,同时将渐变透明区间延伸到容器边缘,避免对齐偏差露出图片:
<div class="w-3/5 absolute right-0" style="height: 40rem; background: linear-gradient(270deg,rgba(255, 255, 255, 0) 0%, rgb(255, 255, 255, 1) 99%), url({{ bigImageRight.bild.one().getUrl() }}); background-size: cover; background-position: center;" ></div>
方案2:添加偏移遮挡(快速兼容)
给容器增加1px的白色右边框,或者调整宽度和偏移量,直接覆盖住可能露出的边缘:
<!-- 加边框版本 --> <div class="w-3/5 absolute right-0 border-r border-white" style="height: 40rem; background: linear-gradient(270deg,rgba(255, 255, 255, 0) 0%, rgb(255, 255, 255, 1) ), url({{ bigImageRight.bild.one().getUrl() }}); background-size: cover; background-position: center;" ></div> <!-- 偏移版本 --> <div class="absolute right-0" style="width: calc(60% + 1px); right: -1px; height: 40rem; background: linear-gradient(270deg,rgba(255, 255, 255, 0) 0%, rgb(255, 255, 255, 1) ), url({{ bigImageRight.bild.one().getUrl() }}); background-size: cover; background-position: center;" ></div>
方案3:拆分图层(最稳妥,彻底避免渲染问题)
不要把渐变和背景图写在同一个background属性里,拆分两个独立图层叠加,完全消除图层对齐偏差:
<div class="w-3/5 absolute right-0" style="height: 40rem; background: url({{ bigImageRight.bild.one().getUrl() }}); background-size: cover; background-position: center;"> <!-- 单独渐变层 --> <div class="absolute inset-0" style="background: linear-gradient(270deg,rgba(255, 255, 255, 0) 0%, rgb(255, 255, 255, 1));"></div> </div>
内容的提问来源于stack exchange,提问作者Daniel
相关产品推荐
相关产品推荐

