banner
meanc

meanc

twitter
github
discord server

backdrop-blur 导致圆角锯齿

昨天在 follow 中看到了这样一个效果, 仔细看发现下侧浮层两个圆角透出了底图的部分内容#

image
image

思考#

第一反应是圆角的渲染导致的像素不匹配的问题
我尝试写一个例子重现这个问题

image

但是我尝试了不同大小的圆角和图片,并不能复现出这个问题
我尝试查看可能出现问题的样式

image

在尝试切换 backdrop-blur 的时候我发现这个问题消失了,所以问题是 backdrop-blur 这个属性的计算引起的

解决#

我尝试将这个属性拆分到元素内部

        <div className="absolute bottom-0 w-full text-center rounded-b-sm overflow-hidden duration-500 opacity-0 group-hover:opacity-100">
          <div className="z--1 absolute  top-0 left-0 size-full bg-white/50 dark:bg-neutral-900/70"></div>
          <div className="text-[13px] backdrop-blur-none group-hover:backdrop-blur-sm " >
           text
          </div>
        </div>

可以看到,如果过渡动画应用在整个元素上,那么 backdrop-blur 的效果会在整体渲染完成后才进行

所以我们换个方法,将过度动画应用于内层的背景元素和模糊元素


        <div className="absolute bottom-0 w-full text-center rounded-b-sm overflow-hidden duration-500">
          <div className="z--1 absolute  top-0 left-0 size-full bg-white/50 dark:bg-neutral-900/70 opacity-0 group-hover:opacity-100"></div>
          <div className="text-[13px] backdrop-blur-none group-hover:backdrop-blur-sm opacity-0 group-hover:opacity-100" >
            text
          </div>
        </div>

我们看一下效果

非常完美,收工!#

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。