頂部固定導(dǎo)航優(yōu)雅動(dòng)畫

效果演示

Kapture 2025-01-06 at 15.11.30.gif
  • 源碼
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <title>測試</title>
        <style>
            * {
                box-sizing: border-box;
            }

            :root {
                --dark-gray: #1a232d;
                --darkest-gray: #0d1117;
                --lavender: #e9ebfc;
                --sm-spacer: 6vw;
                --lg-spacer: 10vw;
                --md-spacer: 8vw;
                --xl-spacer: 12vw;
                --xs-spacer: 4vw;
                --xxs-spacer: 2vw;
                --xxxs-spacer: 1vw;
                --red: #f55454;
                --light-red: #f99f9f;
                --light-purple: #99a1ff;
                --darkest-gray-50: #0d111780;
                --green: #48bd54;
                --purple: #7781fc;
                --pink: #de697f;
                --light-pink: #ff99ad;
                --light-yellow: #ffd94d;
                --light-green: #7cd084;
                --light-blue: #4acae8;
                --yellow: #c6a117;
                --blue: #189ab8;
                --dark-gray-50: #1a232d80;
            }

            body {
                background-color: #e9ebfc;
                font-family: neue-haas-grotesk-text, sans-serif;
            }
            #main-nav {
                transition: transform 0.3s ease, background 0.3s ease,
                    border-color 0.3s ease, width 0.3s ease;
            }

            .main-nav {
                z-index: 1;
                grid-column-gap: 1vw;
                grid-row-gap: 1vw;
                background-color: #0000;
                border: 1px solid #0000;
                border-radius: 12px;
                justify-content: space-between;
                align-items: center;
                margin-left: auto;
                margin-right: auto;
                padding: 12px 36px;
                transition: opacity 0.2s, box-shadow 0.3s;
                display: flex;
                position: fixed;
                top: 0;
                left: 0;
                right: 0;
            }

            .nav-group {
                grid-column-gap: 1.5vw;
                grid-row-gap: 1.5vw;
                align-items: center;
                display: flex;
            }

            .nav-group.main-nav-group {
                grid-column-gap: 0vw;
                grid-row-gap: 0vw;
            }

            .nav-link {
                color: var(--lavender);
                text-decoration: none;
                transition: all 0.2s;
            }

            .nav-link:hover {
                transform: scale(1.05);
            }

            .nav-link.main-nav-link {
                border: 1px solid #0000;
                border-radius: 0.5vw;
                padding-left: 1.25vw;
                padding-right: 1.25vw;
                transition: all 0.2s;
            }

            .nav-link.main-nav-link:hover {
                transform: scale(1.05);
            }

            .nav-link.main-nav-link.w--current {
                border: 1px solid var(--dark-gray);
                background-color: var(--darkest-gray-50);
            }

            .opacity-50 {
                opacity: 0.5;
            }

            .opacity-30 {
                opacity: 0.3;
            }

            .color-light-red {
                color: var(--light-red);
            }

            .nav-logo {
                width: 11.5vw;
            }

            .nav-logo.light {
                display: none;
            }

            .main-nav-default {
                transform: translateY(0px);
                background: transparent;
                border-color: transparent;
                width: 100vw;
                backdrop-filter: blur(0px);
                box-shadow: rgba(0, 0, 0, 0) 0px 0px 4vw;
                height: 71.5px;
                transform-style: preserve-3d;
            }

            .main-nav-active {
                transform: translate3d(0px, 24px, 0px) scale3d(1, 1, 1) rotateX(0deg)
                    rotateY(0deg) rotateZ(0deg) skew(0deg, 0deg);
                background: rgba(255, 255, 255, 0.5);
                border-color: rgb(233, 235, 252);
                width: 92vw;
                backdrop-filter: blur(12px);
                box-shadow: rgba(0, 0, 0, 0.2) 0px 0px 4vw;
                height: 71.5px;
                transform-style: preserve-3d;
            }

            h1 {
                margin: 0;
                padding-top: 80px;
                height: 120vh;
            }
        </style>
    </head>
    <body>
        <div
            id="main-nav"
            data-w-id="55a1e26b-7315-064e-41b7-3281ebdfc5b2"
            class="main-nav"
        >
            <a
                href="/"
                aria-current="page"
                class="display-none-mobile-landscape-and-below w-inline-block w--current"
                ><img
                    src="https://cdn.prod.website-files.com/66d2b621cb0b824deff321d0/66d75b261592edff29a6e9f0_logo-light.svg"
                    loading="lazy"
                    alt=""
                    class="nav-logo"
                    data-categories="unclassified"
                    style="display: none" /><img
                    src="https://cdn.prod.website-files.com/66d2b621cb0b824deff321d0/66db8c232f417a6f617d90b1_logo-dark.svg"
                    loading="lazy"
                    alt=""
                    class="nav-logo light"
                    data-categories="unclassified"
                    style="display: block" /></a
            ><a
                data-w-id="bcbb3569-c145-d561-9931-fd7604c68aa6"
                href="#"
                class="btn tertiary in-nav main-nav-link close-btn w-inline-block"
                ><div>Close</div>
                <img
                    src="https://cdn.prod.website-files.com/66d2b621cb0b824deff321d0/66daa9dfb145ddd21dbbb0e2_close-light.svg"
                    loading="lazy"
                    alt=""
                    class="btn-icon"
                    data-categories="unclassified"
            /></a>
            <div
                class="horizontal-divider stretch-divider opacity-30 reverse no-gradient display-none-mobile-landscape-and-below"
            ></div>
            <div class="nav-group main-nav-group">
                <a href="/about" class="nav-link main-nav-link">About</a
                ><a href="/blog" class="nav-link main-nav-link">Blog</a
                ><a href="/pricing" class="nav-link main-nav-link">Pricing</a
                ><a
                    
                    class="nav-link main-nav-link"
                    >Jobs</a
                >
            </div>
            <div
                class="horizontal-divider stretch-divider opacity-30 no-gradient display-none-mobile-landscape-and-below"
            ></div>
            <div class="nav-group main-nav-group">
                <a
                    
                    target="_blank"
                    class="btn tertiary in-nav main-nav-link w-inline-block"
                    ><div>Documentation</div>
                    <img
                        src="https://cdn.prod.website-files.com/66d2b621cb0b824deff321d0/66d3637a43303c850a7cbe7e_file-light.svg"
                        loading="lazy"
                        alt=""
                        class="btn-icon"
                        data-categories="unclassified" /></a
                ><a
                    
                    target="_blank"
                    class="btn tertiary in-nav main-nav-link w-inline-block"
                    ><div>GitHub</div>
                    <img
                        src="https://cdn.prod.website-files.com/66d2b621cb0b824deff321d0/66d802cf28f0f15fe78b9901_github-light.svg"
                        loading="lazy"
                        alt=""
                        class="btn-icon wide"
                        data-categories="unclassified"
                /></a>
            </div>
            <div
                class="horizontal-divider stretch-divider opacity-30 no-gradient display-none-mobile-landscape-and-below"
            ></div>
            <div class="nav-group main-nav-group">
                <a
                    href="/contact"
                    class="btn tertiary color-light-red main-nav-link w-inline-block"
                    ><div>Contact us</div>
                    <img
                        src="https://cdn.prod.website-files.com/66d2b621cb0b824deff321d0/66da7e1105e97230c9c350dc_send-light-red.svg"
                        loading="lazy"
                        alt=""
                        class="btn-icon extra-wide"
                        data-categories="unclassified"
                /></a>
            </div>
        </div>
        <h1>
            占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符
        </h1>

        <script>
            const mainNav = document.getElementById('main-nav')
            const mainNavDefault = 'main-nav-default'
            const mainNavActive = 'main-nav-active'

            // 監(jiān)聽滾動(dòng)事件
            window.addEventListener('scroll', () => {
                if (window.scrollY > 80) {
                    mainNav.classList.add(mainNavActive)
                    mainNav.classList.remove(mainNavDefault)
                } else {
                    mainNav.classList.add(mainNavDefault)
                    mainNav.classList.remove(mainNavActive)
                }
            })
        </script>
    </body>
</html>

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市萎河,隨后出現(xiàn)的幾起案子萎胰,更是在濱河造成了極大的恐慌讨跟,老刑警劉巖舀患,帶你破解...
    沈念sama閱讀 221,198評(píng)論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異当宴,居然都是意外死亡董济,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門透罢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來榜晦,“玉大人,你說我怎么就攤上這事羽圃∏海” “怎么了?”我有些...
    開封第一講書人閱讀 167,643評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵朽寞,是天一觀的道長识窿。 經(jīng)常有香客問我,道長脑融,這世上最難降的妖魔是什么喻频? 我笑而不...
    開封第一講書人閱讀 59,495評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮肘迎,結(jié)果婚禮上甥温,老公的妹妹穿的比我還像新娘。我一直安慰自己妓布,他們只是感情好姻蚓,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,502評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著匣沼,像睡著了一般狰挡。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上释涛,一...
    開封第一講書人閱讀 52,156評(píng)論 1 308
  • 那天加叁,我揣著相機(jī)與錄音,去河邊找鬼唇撬。 笑死殉农,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的局荚。 我是一名探鬼主播超凳,決...
    沈念sama閱讀 40,743評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼愈污,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了轮傍?” 一聲冷哼從身側(cè)響起暂雹,我...
    開封第一講書人閱讀 39,659評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎创夜,沒想到半個(gè)月后杭跪,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,200評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡驰吓,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,282評(píng)論 3 340
  • 正文 我和宋清朗相戀三年涧尿,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片檬贰。...
    茶點(diǎn)故事閱讀 40,424評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡姑廉,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出翁涤,到底是詐尸還是另有隱情桥言,我是刑警寧澤,帶...
    沈念sama閱讀 36,107評(píng)論 5 349
  • 正文 年R本政府宣布葵礼,位于F島的核電站号阿,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏鸳粉。R本人自食惡果不足惜扔涧,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,789評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望届谈。 院中可真熱鬧扰柠,春花似錦、人聲如沸疼约。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評(píng)論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽程剥。三九已至,卻和暖如春汤踏,著一層夾襖步出監(jiān)牢的瞬間织鲸,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評(píng)論 1 271
  • 我被黑心中介騙來泰國打工溪胶, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留搂擦,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,798評(píng)論 3 376
  • 正文 我出身青樓哗脖,卻偏偏與公主長得像瀑踢,于是被迫代替她去往敵國和親扳还。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,435評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容