整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          帶圖標和按鈕切換特效的垂直導航菜單的html頁面源碼

          帶圖標和按鈕切換特效的垂直導航菜單的html頁面源碼

          家好,今天給大家介紹一款,帶圖標的垂直導航菜單的html頁面源碼(圖1)。送給大家哦,獲取方式在本文末尾。

          圖1

          點擊每個按鈕時,都有切換特效,并顯示按鈕的說明,看起來非常不錯(圖2)

          圖2

          代碼完整,需要的朋友可以下載(圖3)

          圖3

          本源碼編碼:10148,需要的朋友,點擊下面的鏈接后,搜索10148,即可獲取。

          就愛UI - 分享UI設計的點點滴滴

          行準備工作

          這邊對基本的樣式進行了設置,首先在html部分設置了一個名為nav的div,隨后進行基本的默認樣式的清除,并且設置盒子為ie盒子方便后續的計算,整體都設置為彈性盒,方便后續矢量文字的操作,對導航欄nav進行定位,方便后續位置上的操作

          
          <body>
              <!-- 目前就一個簡單的nav,推薦大家語義化來寫 -->
              <div class="nav"></div>
          </body>
          
          <style>
              /* 清除一些默認樣式 */
              *{
                  margin: 0;
                  padding: 0;
                  box-sizing: border-box;
                  list-style: none;
              }
              a{
                   text-decoration: none;/*確保在瀏覽器中顯示鏈接時,沒有任何文本裝飾,如下劃線。 */
              }
              /* 對整體進行設置,并且都設置為彈性盒,方便進行操作 */
              body{
                  display: flex;
                  justify-content: center;
                  align-items: center;
                  min-height: 100vh;
                  background: #222327;
              }
              /* 設置導航欄樣式 */
              .nav{
                  /* 對導航欄位置進行定位處理,方便后續的圖標位置的設置 */
                  position: relative; 
                  width: 400px;
                  height: 70px;
                  background: #fff;
                  display: flex;
                  justify-content: center;
                  align-items: center;
                  border-radius: 10px;
              }
          </style>
          

          引入矢量文字

          這里面呢引用了阿里巴巴的矢量文字效果,具體如何使用請見www.iconfont.cn/manage/inde… 里面的教程,這邊我挑了五個字體圖標加入到了網頁中,并且用ul和lil加入到了導航欄中,目前是豎著排列的,后續加入css樣式之后會好起來,并且在第一個li上加入了active的css樣式,用于設置選中效果


          <link rel="stylesheet" href="//at.alicdn.com/t/c/font_4173165_2g4t5a6pg9v.css">
              <div class="nav">
                  <ul>
                      <li class="active"> <span><i class="iconfont icon-shouye"></i></span></li>
                      <li > <span><i class="iconfont icon-liuyan"></i></span></li>
                      <li > <span><i class="iconfont icon-code"></i></span></li>
                      <li > <span><i class="iconfont icon-box-empty"></i></span></li>
                      <li > <span><i class="iconfont icon-gitee-fill-round"></i></span></li>
                  </ul>
              </div>

          對導航欄和ui li字體圖標進行設置

          這里面呢針對ul和li進行了設置,使之達到了圖下的效果,對ul 和li進行了彈性盒的設置,li中的使用flex:1讓這些矢量文字按等份劃分容器寬度,使之達到了一個距離平均的樣式,并且設置了這個zindex的疊加級別

              .nav{
                  /* 對導航欄位置進行定位處理,方便后續的圖標位置的設置 */
                  position: relative; 
                  width: 400px;
                  height: 70px;
                  background: #fff;
                  display: flex;
                  justify-content: center;
                  align-items: center;
                  border-radius: 10px;
              }
              .nav ul{
                  display: flex;
                  width: 350px;
              }
              .nav ul li{
                  height: 60px;
                  /* flex:1是讓所有的li平均分nav這個容器 */
                  flex: 1;
                  position: relative;
                 z-index: 2;
                 display: flex;
                 justify-content: center;
              }

          繼續設置i元素和span元素

          這里呢針對了span元素和i元素進行了設置,通過span元素蔣i元素中的矢量圖標設置到水平垂直都居中的位置,并且設置了圓角,加入了動畫和動畫延遲,針對i元素將文字大小設置了,并且在html中加入了對應圖標的文字效果,并且為例美觀在每個li元素中都添加了一個選中時候的不同的顏色,使用了變量--clr用于獲取選中效果 行內樣式是一種直接在HTML元素上指定樣式的方法,在這種情況下,你使用 style 屬性將 --clr 變量設為不同色

            .nav ul li span{
                  /* 進行定位,使之通過span元素帶動矢量圖標進行水平垂直到中心位置 */
                  position: relative;
                  display: flex;
                  justify-content: center;
                  align-items: center;
                  width: 55px;
                  height: 55px;
                  border-radius: 50%;
                  /* 設置鼠標移入的樣式 */
                  cursor: pointer;
                  /* 設置動畫過度事件以及延遲 */
                  transition: 0.5s;
                  transition-delay: 0s;
              }
              .nav ul li span i{
                  color: #222327;
                  font-size: 1.5em;
              }
          <body>
              <!-- 目前就一個簡單的nav,推薦大家語義化來寫 -->
              <div class="nav">
                  <ul>
                      <!-- 設置active效果,用于獲取選中效果 用于獲取選中效果 行內樣式是一種直接在HTML元素上指定樣式的方法,在這種情況下,你使用 style 屬性將 --clr 變量設為不同色 -->
                      <li class="active" style="--clr:#f44336"><span><i class="iconfont icon-shouye"></i>首頁</span></li>
                      <li style="--clr:#0fc70f"> <span><i class="iconfont icon-liuyan"></i>留言</span></li>
                      <li style="--clr:#2196f3"> <span><i class="iconfont icon-code"></i>代碼</span></li>
                      <li style="--clr:#b145e9"> <span><i class="iconfont icon-box-empty"></i>盒子</span></li>
                      <li style="--clr:#ffa111"> <span><i class="iconfont icon-gitee-fill-round"></i>gitee</span></li>
                      <div class="indicator"></div>
                  </ul>
              </div>
          </body>

          下面設置選中時候的樣式,在這里呢針對span元素設置了選中的時候會向上位移到這個地方,并且在矢量圖標的地方設置了開始選中的時候將文字顏色改為和背景顏色一樣的顏色,這樣當點擊的那一刻,圖標會出現消失的情況,當超出導航欄到黑色部分的時候,文字就會顯示出來,在后面,設置了一個半圓的背景圖,當背景圖位移到文字的位置的時候,矢量文字就會顯示出來


          /* 下面是針對選中效果做的樣式處理 */
              .nav ul li.active span {
                  /* 設置了一開始的背景顏色,后面會被取代,設置了點擊的時候會向上移動 */
                  background: orange;
                  transform: translateY(-27px);
                  transition-delay: 0.25s;
              }
          
              .nav ul li.active span i {
                  /* 設置了點擊時候矢量圖標的文字顏色 */
                  color: #fff;
              }
          

          設置模糊效果

          這里呢加入了一個模糊的效果,配合后面的選中的時候圖標顏色顯示會形成一個類似于色彩過度的效果,并且將i元素上面設置的顏色顯示出來

              .nav ul li span::before {
                  content: '';
                  position: absolute;
                  top: 10px;
                  left: 0;
                  width: 100%;
                  height: 100%;
                  background: orange;
                  border-radius: 50%;
                  filter: blur(40px);
                  opacity: 0;
                  transition: 0.5s;
                  transition-delay: 0s;
              }
              .nav ul li span::before {
                  opacity: 0.5;
                  transition-delay: 0.25s;
              }
                  /* 這里將i元素設置的顏色顯示出來 這兩個樣式塊中都使用了 background: var(--clr); 屬性,可以將背景顏色設置為clr 變量所表示的值。這種使用自定義變量的方式,可以在代碼中統一定義顏色值,以便在需要時進行統一更改。*/
                 .nav ul li.active span {
                  background: var(--clr);
              }
          
              .nav ul li span::before {
                  background: var(--clr);
              }
            

          接下來設置背景圓

          這里呢設置了背后的那個向下突兀的圓,其原理是通過位置的調整和顏色的與背景顏色的一致加上zindex的圖冊優先級的顯示,構成了這么一個背景半圓形圖

          .indicator {
                  /* 這里進行了定位,并且設置了背景園的位置,同時將圓的背景顏色與背景顏色設為一致,會形成那種向下突兀的圓形,并且加入了動畫 ps:這個過度的小圓弧我是真設置不好,湊合看吧,大佬們有能力的可以試試設置一下*/
                  position: absolute;
                  top: -35px;
                  width: 70.5px;
                  height: 70px;
                  background: #222327;
                  border-radius: 50%;
                  z-index: 1;
                  transition: 0.5s;
              }
              /* 設置左邊半弧 */
              .indicator::before {
                  content: '';
                  position: absolute;
                  top: 16px;
                  left: -34px;
                  width: 10px;
                  height: 5px;
                  background: transparent;
                  border-radius: 50%;
                  box-shadow: 20.5px 19px 0 4px #fff;
              }
          /* 設置右邊半弧 */
              .indicator::after {
                  content: '';
                  position: absolute;
                  top: 16px;
                  left: 54px;
                  width: 10px;
                  height: 5px;
                  background: transparent;
                  border-radius: 50%;
                  box-shadow: 20px 19px 0 4px #fff;
              }

          ****動畫設置,配合js形成點擊的時候,active會移動到點擊的目標身上

          這里呢使用了nth-child選擇器選中對應的i元素,注意,這里設置的平移效果是由clac函數計算而來,選中其中一個i元素,并且當且僅當具有active類之后的所有兄弟中的.indicator類元素,有一個指示器元素(.indicator)。指示器的位置會根據活動項目(具有active類的<li>元素)的位置進行調整。 根據活動項目的位置設置指示器的水平平移距離,實現一個在導航菜單中顯示當前選中項目的效果。指示器的位置和平移距離是根據活動項目的索引和固定的長度單位(70px)進行計算的

          /*/* nth-child()選中低某個i元素,然后配合js完成背景圓的移動 
          在CSS中,calc() 是一個用于執行計算的函數。它允許在CSS屬性值中使用數學表達式。
          這種計算函數通常用于允許動態計算和調整元素的尺寸、間距或位置。在 calc() 函數中,可以使用不同的運算符(如加號 +、減號 -、乘號 *、除號 /)來結合數值和單位進行計算。
          它可以包含其他長度單位(如像素 px、百分比 % 等),并且可以與其他CSS屬性值和變量一起使用。
          
          當一個 `<li>` 元素具有 `active` 類時,對應的 `.indicator` 元素會相對于活動項目的位置水平平移一個特定的距離。每個 `.indicator` 元素的平移距離相對于其前面的活動項目索引和一個固定的長度單位(`70px`)計算得出。
          
          */ */
             
             .nav li:nth-child(1).active~.indicator{
                  transform: translateX(calc(70px*0));
              }
          
              .nav li:nth-child(2).active~.indicator {
                  transform: translateX(calc(70px*1));
              }
          
              .nav li:nth-child(3).active~.indicator {
                  transform: translateX(calc(70px*2));
              }
          
              .nav li:nth-child(4).active~.indicator {
                  transform: translateX(calc(70px*3));
              }
          
              .nav li:nth-child(5).active~.indicator {
                  transform: translateX(calc(70px*4));
              }
              


          這里配合js代碼,通過foreach為點擊的li或者為所有的li進行添加或者移入active樣式

          <script>
          //通過 `lis.forEach(li=> li.addEventListener('click', function () {...}))` 遍歷 `lis` 數組中的每個元素,并為每個元素都添加一個 ‘click’ 事件監聽器。
          //在每次點擊事件中,使用 `lis.forEach(item=> {...})` 遍歷 `lis` 數組中的每個元素,將它們的 `active` 類都移除,然后在當前被點擊的元素上添加 `active` 類,
              const lis=document.querySelectorAll('.nav li')
              lis.forEach(li=> li.addEventListener('click', function () {
                  lis.forEach(item=> {
                      item.classList.remove('active');
                      this.classList.add('active');
                  })
              }))
          </script>

          效果展示

          總結

          這里配合js使用的動畫是值得我學習的,通過js點擊賦予不同的liactive樣式,又根據active所在的li元素經過計算對.indicator元素進行平移,使之完成這個動畫效果


          基于css3寫出的底部導航欄效果(詳細注釋
          原文鏈接:https://juejin.cn/post/7262334378759405605

          么制作動態效果的后臺導航欄呢,一起來文中看看~

          先上完成效果:

          整體的制作過程

          1. 制作菜單元件

          分別制作導航菜單中的每個元件,制作好一個以后,就可以復用了,制作步驟如下:

          1. 使用矩形,制作單個導航菜單的底層
          2. 使用圖片,制作導航菜單的圖標
          3. 使用矩形,設置成三角形,制作導航菜單的二級菜單的顯示隱藏標識

          制作三角形的步驟:選擇矩形,右鍵選擇彈出來的菜單中的——變換形狀,選擇三角形。

          2. 制作菜單

          將制作好的菜單元件組合成一個整體的導航菜單元件

          (1)改變三角形的大小為16*16

          (2)分別制作:一級無下級菜單,一級有下級的菜單,二級菜單

          (3)組合菜單,以制作一級有下級的菜單為例:選中圖片、三角形、矩形、右鍵、彈出菜單、選擇組合。(一級無下級菜單同樣操作組合)

          (4)制作二級菜單動態效果,選中二級菜單,在交互中,添加選中效果,設置選中后的背景顏色變更為#19a2dd。添加交互:單擊時——設置選中——當前文件。重點,重點,給二級菜單設置選項組team2(選項組名字自定義)。

          (5)制作一級菜單動態效果。給一級菜單組中的三角形添加一個名字:sanjiao(這個名字可以自定義)。選中一級菜單組,在交互中,添加交互:單擊時——旋轉——sanjiao——順時針——過——180°。

          重點,重點,給一級菜單設置選項組team1(選項組名稱自定義)

          3. 制作導航欄底層元件(這個沒什么好說的,直接看圖)

          4. 制作導航菜單

          自由組合一級,二級菜單,如圖。組合時,一定要確保每個菜單中的距離大于等于0,千萬不能小于0,注意,注意,注意。

          (1)將財務管理下的四個二級菜單選中,右鍵彈出菜單,選擇轉換為動態面板,并設置動態面板名稱(財務管理,這里可以自定義設置)。人員管理,系統設置如法炮制。

          (2)給一級菜單的單擊時的交互添加動作。以財務管理為例:添加顯示/隱藏(交互),目標選擇動態面板財務管理,選擇切換;顯示動畫選擇向下滑動——300毫秒,隱藏動畫選擇向上滑動——300毫秒;重點,重點,重點,更多選項中,選擇推動和拉動元件——下方——線性——300毫秒。人員管理,系統設置如法炮制。

          最后,把菜單捏在一起,OK了。大功告成,可以自己玩玩了

          本文由 @大王 原創發布于人人都是產品經理。未經許可,禁止轉載

          題圖來自Unsplash,基于CC0協議


          主站蜘蛛池模板: 国产一区二区三区精品视频| 国产探花在线精品一区二区| 日韩一区二区三区无码影院| 少妇人妻精品一区二区三区| 99久久无码一区人妻a黑| 亚洲日韩国产一区二区三区在线 | 国产高清一区二区三区| 精品一区二区ww| 精品人妻一区二区三区四区 | 国产精品一区二区毛卡片| 日本福利一区二区| 成人区精品一区二区不卡| 无码午夜人妻一区二区三区不卡视频| 国产精品亚洲午夜一区二区三区| 国产在线观看一区二区三区| 99久久精品费精品国产一区二区 | 亚洲国模精品一区 | 视频一区二区三区免费观看| 日本亚洲国产一区二区三区| 亚洲国产av一区二区三区丶| 国产精品亚洲一区二区三区久久 | 99精品一区二区三区无码吞精| 国产在线精品一区在线观看| 国产无套精品一区二区| 在线日产精品一区| 国产精品一区在线观看你懂的| 少妇无码一区二区三区| 视频一区二区三区在线观看| 人妻体体内射精一区二区| 国产在线一区二区三区在线| 久久国产免费一区二区三区| 狠狠综合久久av一区二区| 国产主播一区二区| 日本一道一区二区免费看| 国产一区二区女内射| 日韩一区二区三区在线| 亚洲一区二区三区偷拍女厕| 日韩在线一区视频| 无码人妻视频一区二区三区| 丝袜美腿高跟呻吟高潮一区| 国产精品一区二区久久精品|