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>

我們看一下效果

非常完美,收工!#

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。