模拟Element Plus的导航栏样式
本文我们来介绍一下要如何实现Element Plus的导航栏样式,我们可以先看一下它官网的效果是什么样的:

我们可以看到它的导航栏在滚动的时候会有一个模糊的背景,并且有一个点状的背景图案,看起来蛮炫酷对不对? 下面是我使用tailwindcss的实现方法,有参考它的浏览器样式:
<div
aria-hidden="true"
className={clsx(
'absolute inset-x-0 -top-1 -bottom-6 -z-10',
'bg-white/20 dark:bg-zinc-900/20',
'bg-[radial-gradient(transparent_1px,rgb(228_228_231/0.3)_1px)]',
'dark:bg-[radial-gradient(transparent_1px,rgb(39_39_42/0.4)_1px)]',
'bg-size-[4px_4px]',
'backdrop-blur-xs backdrop-saturate-50',
'-webkit-backdrop-blur-xs -webkit-backdrop-saturate-50',
'border-b border-transparent',
'transition-all duration-500',
)}
/>
来说说各个部分的作用:
- 定位和尺寸:
'absolute inset-x-0 -top-1 -bottom-6 -z-10',
这部分代码将这个元素定位为绝对定位,并且让它覆盖整个导航栏。
- 基础半透明底色:
'bg-white/20 dark:bg-zinc-900/20',
这部分代码设置了一个基础的半透明背景色,在浅色模式下是白色的20%透明度,在深色模式下是深灰色的20%透明度。
- 点状网格(这部分是关键!):
'bg-[radial-gradient(transparent_1px,rgb(228_228_231/0.3)_1px)]',
'dark:bg-[radial-gradient(transparent_1px,rgb(39_39_42/0.4)_1px)]',
'bg-size-[4px_4px]',
这部分代码使用了CSS的radial-gradient来创建一个点状的背景图案,在浅色模式下是透明点和浅灰色网格,在深色模式下是透明点和深灰色网格。bg-size-[4px_4px]设置了背景图案的大小为4px x 4px。
- 毛玻璃效果:
'backdrop-blur-xs backdrop-saturate-50',
'-webkit-backdrop-blur-xs -webkit-backdrop-saturate-50',
这部分代码使用了CSS的backdrop-filter属性来实现毛玻璃效果,backdrop-blur-xs设置了模糊程度,backdrop-saturate-50设置了饱和度。为了兼容Safari浏览器,还添加了-webkit-前缀的属性。
- 边框:
'border-b border-transparent',
'transition-all duration-500',
这部分代码设置了一个底部边框,初始状态是透明的,并且添加了过渡效果,当滚动时可以通过JavaScript来改变边框的颜色和透明度,从而实现边框的淡入效果。
让我们来看看最终的实现效果吧:
感谢你的阅读,希望能够给在看的你带来些许帮助。