1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        一個(gè)側(cè)邊欄導(dǎo)航組件實(shí)現(xiàn)思路

        共 3448字,需瀏覽 7分鐘

         ·

        2021-02-02 00:51

        翻譯:布蘭
        作者:Adam Argyle
        來源:https://web.dev/building-a-sidenav-component/

        在這篇文章中,我想和大家分享我是如何為 web 原型化一個(gè) Sidenav 組件的,這個(gè)組件是響應(yīng)式的,有狀態(tài)的,支持鍵盤導(dǎo)航,可以使用和不使用 Javascript,并且可以跨瀏覽器工作。

        構(gòu)建一個(gè)響應(yīng)式導(dǎo)航系統(tǒng)是很困難的。有些用戶使用鍵盤,有些用戶使用強(qiáng)大的臺(tái)式機(jī),還有一些用戶使用小型移動(dòng)設(shè)備訪問。每個(gè)訪問者都應(yīng)該能夠打開和關(guān)閉菜單。

        桌面到移動(dòng)設(shè)備響應(yīng)式布局演示

        用了哪些技術(shù)

        在這次組件探索中,我很高興地結(jié)合了一些關(guān)鍵的網(wǎng)絡(luò)平臺(tái)特性:

        • 偽類
        • CSS Grid
        • transforms
        • 媒體查詢和用戶偏好 CSS
        • 用戶增強(qiáng)體驗(yàn)

        我的解決方案只有一個(gè)側(cè)邊欄,只有在“移動(dòng)”視口為540px 或更小時(shí)才能切換。540px 將是我們?cè)谝苿?dòng)交互式布局和靜態(tài)桌面布局之間切換的斷點(diǎn)。

        偽類

        一個(gè) 鏈接將 url 散列設(shè)置為 #sidenav-open,另一個(gè)設(shè)置為 empty('')。最后,一個(gè)元素具有匹配散列的 id:

        <a?href="#sidenav-open"?id="sidenav-button"?title="Open?Menu"?aria-label="Open?Menu">
        <a?href="#"?id="sidenav-close"?title="Close?Menu"?aria-label="Close?Menu">a>
        <aside?id="sidenav-open">aside>

        點(diǎn)擊這些鏈接會(huì)改變我們網(wǎng)頁 URL 的散列狀態(tài),然后用一個(gè)偽類來顯示和隱藏 Sidenav:

        @media?(max-width:?540px)?{
        ????#sidenav-open?{
        ????????visibility:?hidden;
        ????}
        ????
        ????#sidenav-open:target?{
        ????????visibility:?visible;
        ????}
        }

        CSS Grid

        在過去,我只使用絕對(duì)或固定位置 Sidenav 布局和組件。不過,使用網(wǎng)格區(qū)域語法,可以為同一行或列分配多個(gè)元素。

        Stacks

        主要的布局元素 #sidenav-container 是一個(gè)網(wǎng)格,它創(chuàng)建了 1 行和 2 列,其中 1 列被命名為 stack。當(dāng)空間受到限制時(shí),CSS 會(huì)將所有

        元素的子元素賦給同一個(gè)網(wǎng)格名稱,將所有元素放在同一個(gè)空間中,創(chuàng)建一個(gè)堆棧。

        #sidenav-container?{
        ????display:?grid;
        ????grid:?[stack]?1fr?/?min-content?[stack]?1fr;
        ????min-height:?100vh;
        }

        @media?(max-width:?540px)?{
        ????#sidenav-container?>?*?{
        ????????grid-area:?stack;
        ????}
        }

        菜單背景


        瀏覽 37
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            成人精品18 | 性色av一区二区三区免费看开蚌 | 国产成人秘 一区二区三区东京热 | 精品探花视频在线播放 | 我要看三级黄色片 | 无码A级毛片免费看视频 | 精品国产一区二区三区香蕉沈先生 | 啊轻点灬太粗嗯太深了用力地铁 | 亲嘴还扔衣服亲脖子 | 欧美色熟妇一区二区三区 |