<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Flex 布局項目實戰,好像沒那么難!

      在上篇文章別再用 float 布局了,flex 才是未來!中,我們聊到 Flex 布局才是目前主流的布局方式。在文章最后,我們還貼了一個案例,并且還淺淺地講解了一下。

      有些小伙伴說,這講解得太粗了,要是能夠再深入講解一下,順便把代碼分享分享就好了。那么,今天我們就繼續來扒一扒這個項目的布局實現。

      大體框架實現

      這個項目是我在 CodePen 上找到的一個項目,地址是:Glassmorphism Creative Cloud App Redesign,其頁面如下圖所示。

      -w1327

      從上圖可以看得出來,其布局還是非常清晰明了的。其最外層包括一個頂部的導航欄和一個下面的內容區域,用 html 描述大致是下面的代碼。

      <div class="app">
          <div class="header"</div> 
          <div class="wrapper">/div>
      </div>
      

      如上面代碼所示的布局,我們用 Flex 布局來寫,大致就是如下代碼所示。

      .app {
        display: flex;
        flex-direction: column;
        background-color: var(--theme-bg-color);
        max-width: 1250px;
        max-height: 860px;
        width: 100%;
        height: 90vh;
        overflow: hidden;
        position: relative;
        font-size: 15px;
        font-weight: 500;
        border-radius: 14px;
        backdrop-filter: blur(20px);
        -webkit-backdrop-filter: blur(20px);
      }
      
      .header {
        display: flex;
        height: 58px;
        padding: 0 30px;
        background-color: black;
      }
      
      .wrapper {
        display: flex;
        flex: 1;
        background-color: red;
        overflow: hidden;
      }
      

      加了上面的樣式代碼之后,整體的效果就變成了如下圖的樣式。

      -w1116

      此時去拖動窗口大小,會發現紅色背景的內容部分是會自動改變高度的。

      接下來,我們繼續分析剩下的內容。

      對于導航欄而言,我們也可以把它看成是一個 Flex 容器,其內部劃分為 4 個元素。我加上這部分的代碼內容之后,整體的 html 代碼如下所示。

      <div class="app">
        <div class="header">
          <div class="menu-circle"></div>
          <div class="header-menu"></div>
          <div class="search-bar"></div>
          <div class="header-profile"></div>
        </div>
        <div class="wrapper">
          
          </div>
        </div>
      </div>
      

      此時,我們再加上導航欄這部分的 CSS 樣式,如下代碼所示。

      
      .menu-circle {
        flex-shrink: 0;
        width: 100px;
        margin-right: 50px;
        background-color: gray;
      }
      
      .header-menu {
        flex-shrink: 0;
        width: 400px;
        margin-right: 50px;
        background-color: gray;
      }
      
      .search-bar {
        flex-shrink: 0;
        width: 200px;
        margin-right: 50px;
        background-color: gray;
      }
      
      .header-profile {
        flex-shrink: 0;
        width: 100px;
        margin-right: 50px;
        background-color: gray;
      }
      

      加上之后,其效果圖如下圖所示。

      -w1117

      到這里,我想你應該會發現,使用 Flex 布局其實就是一層層把內容劃分,然后設置好合適的 flex 屬性,布局變得非常簡單了。這里我就不繼續講解其他區域的布局代碼了,我直接將我最終完成的一個布局草稿圖給出來,如下圖所示。

      -w1093

      我們在實際要做的時候,就是這樣一點點去將需要弄的區域做出來,接下來就是填上所需要的內容,包括文字、圖標、顏色等等信息。上面我自己練習布局的 HTML 和 CSS 代碼都在 CodePen 上,有興趣的可以參考下:CodePen Home Flex 布局項目實戰

      紙上得來終覺淺,雖然 Flex 布局簡單,但也有非常多的實現細節需要去琢磨。這里我就不事無巨細地講解所有的樣式實現了,我將摘取 5 個比較常見的樣式實現來一步步講解如何實現它們。這 5 個例子的代碼都放在了 CodePen 上,感興趣的可以自己看看:CSS最佳實踐 - CodePen。

      細節實現

      扁平化按鈕

      首先,我們將上面的例子整理一下,作為我們的第一個 CSS 最佳實踐。

      要實現如下圖所示的扁平化按鈕,應該怎么寫呢?

      -w163

      實現思路

      使用 padding 屬性控制按鈕文字與邊框的距離。

      實現步驟

      1、首先,使用 button 元素來作為按鈕的 html 元素。
      2、接著,使用 padding 屬性來控制按鈕文字與上下左右的距離。
      3、最后,設置按鈕文字、背景顏色、背景圓角、邊框、鼠標手勢屬性。

      整體實現代碼:

      <div>
        <h1>1. 扁平化圖標的實現</h1>
        <div>
          <button class="content-btn">Start free trial</button>
        </div>
      </div>
      
      .content-btn {
          padding: 8px 26px;
          border: none;
          border-radius: 20px;
          color: #fff;
          background-color: #3a6df0;
          cursor: pointer;
      }
      

      帶圖標的菜單

      一個菜單,左邊有一個圖標,如下圖所示,如何實現?

      -w164

      核心思路

      使用 flex 布局設置菜單項。將圖標與文字放在同一個層級,使用 flex 布局對齊圖標和文字,設置 svg 圖標的大小。

      實現步驟

      首先,使用 a 屬性表示一個菜單,外層包一個 div 容器,如下代碼所示。

      <div class="side-menu">
        <a href=""></a>
        <a href=""></a>
      </div>
      

      接著,每一個 a 元素表示一個菜單。在菜單里面,圖標與菜單文字在同一層,如下代碼所示。

      <div class="side-menu">
        <a href="">
          <svg></svg>帶圖標的菜單1
        </a>
        <a href="">
          <svg></svg>帶圖標的菜單2
        </a>
      </div>
      

      接著,構造好 html 層次之后,可以構思 CSS 布局。菜單項(.side-menu)所在容器使用 flex 布局。

      .side-menu {
        display: flex;
        flex-direction: column;
        white-space: no-wrap;
      }
      

      最后,單個菜單(.side-menu a)內部則也使用 flex 布局,同時設置垂直居中對齊,讓圖標和文字對齊。此外,還為圖標設置大小、懸浮顯示背景顏色等。相關 CSS 代碼如下所示。

      .side-menu a {
          display: flex;
          align-items: center;
          font-weight: 400;
          font-size: 14px;
          text-decoration: none;
          padding: 10px;
          color: #000;
          /* 設置寬度 */
          width: 150px;
      }
      
      .side-menu a:hover {
        background-color: rgba(12 15 25 / 30%);
        border-radius: 6px;
      }
      
      .side-menu svg {
        width: 16px;
        margin-right: 8px;
      }
      

      完整代碼見:CSS最佳實踐 - 3、 帶圖標的菜單 - CodePen

      圖標上的紅點提醒

      對于許多應用來說,會通過紅點或者未讀數量來提醒用戶,那么如何實現類似于下圖的提醒呢?

      -w194

      核心思路

      使用 relative 或 absolute 布局讓紅點飄到右上角。其他的樣式思路包括:使用 border-radius 畫一個圓;使用 flex 布局使數字上下左右居中。

      實現步驟

      首先,在菜單后面加上 span 標簽,填入對應的內容,如下代碼所示。

      帶圖標的菜單<span class="notification-number updates">3</span>
      

      接著,畫出圓圈以及背景顏色,以及字體大小顏色,如下代碼所示。

      .notification-number {
        width: 16px;
        height:16px;
        background-color: #3a6df0;
        border-radius: 50%;
        font-size:10px;
        color: #fff;
      }
      

      接著,使用 flex 布局設置圓圈和字體的上下左右居中對齊。

      .notification-number {
        display: flex;
        align-items: center;
        justify-content: center;
      }
      

      最后,使用相對布局調整圖形圖標位置。

      .notification-number {
        position: relative;
        top: -6px;
        right: -6px;
      }
      

      到這里,圖標上的紅點提示就完成了。上面這種實現方式是使用 relative 來實現的,完整代碼見:CSS最佳實踐 - 4、圖標上的紅點提醒(relative實現) - CodePen

      實際上,我們也可以使用 absolute 對齊的方式來實現,其完整代碼見:CSS最佳實踐 - 5、圖標上的紅點提醒(absolute實現) - CodePen。

      這兩種的區別在于:它們偏移的參考對象不同。對于 relative 而言,其相對于其父級容器偏移。但是 absolute 則是相對于最近的非 static 定位祖先元素的偏移。

      搜索表單

      如下圖所示的搜索框,如何實現?

      -w235

      核心思路

      使用背景圖以及位置偏移設置搜索放大鏡圖標。

      實現步驟

      首先,整理出 html 元素層級。

      <div class="search-bar">
          <input type="text" placeholder="Search">
      </div>
      

      接著,設置搜索框大小以及背景,還有文字字體顏色。

      .search-bar input {
        height: 40px;
        width: 150px;
        padding: 0 20px 0 40px;
        background-color: #14162b;
        border-radius: 5px;
        border: none;
        font-family: "Poppins", sans-serif;
        font-size: 15px;
        font-weight: 500;
        color: #fff;
      }
      

      最后,設置背景圖以及位置。

      .search-bar input {
        background-image: url("data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 56.966 56.966' fill='%23717790c7'%3e%3cpath d='M55.146 51.887L41.588 37.786A22.926 22.926 0 0046.984 23c0-12.682-10.318-23-23-23s-23 10.318-23 23 10.318 23 23 23c4.761 0 9.298-1.436 13.177-4.162l13.661 14.208c.571.593 1.339.92 2.162.92.779 0 1.518-.297 2.079-.837a3.004 3.004 0 00.083-4.242zM23.984 6c9.374 0 17 7.626 17 17s-7.626 17-17 17-17-7.626-17-17 7.626-17 17-17z'/%3e%3c/svg%3e");
        background-size: 14px;
        background-repeat: no-repeat;
        background-position: 16px 48%;
      }
      

      完整代碼見:CSS最佳實踐 - 6. 搜索表單 - CodePen

      頂部菜單

      要實現如下圖所示的頂部菜單效果,應該如何實現呢?

      20231017211747

      核心思路

      使用 padding 設置菜單項帶下,使用 flex 布局排列菜單項。

      實現步驟

      首先,寫好 html 結構,使用 a 元素來實現,如下代碼所示。

      <div class="menu">
      <a class="is-active" href="#">首頁</a>
      <a href="#">投資者關系</a>
      <a href="#">企業社會責任</a>
      <a href="#">加入我們</a>
      </div>
      

      接著,設置菜單項的樣式,用 padding 撐開并設置字體大小,如下代碼所示。

      .menu a {
        display: inline-block;
        padding: 20px 30px;
        text-decoration: none;
        color: gray;
      }
      

      接著,設置激活狀態下的菜單項以及鼠標懸浮下的菜單項效果。

      .menu a.is-active,
      .menu a:hover {
        color: black;
        border-bottom: 2px solid black;
      }
      

      最后,在頂層容器設置 flex 布局,這樣每個菜單項之間就不會有間隙。

      .menu {
        display: flex;
        align-items: center;
        flex-shrink: 0;
      }
      

      完整代碼見:CSS最佳實踐 - 7. 頂部菜單 - CodePen

      關于 Flex 布局實戰的分享就到此為止。希望這篇文章也能給你帶來收獲,讓你更好掌握 CSS 布局技能。如果這篇文章對你有幫助,記得一鍵三連支持我!

      參考資料

      posted @ 2023-10-20 09:39  陳樹義  閱讀(2130)  評論(4)    收藏  舉報
      主站蜘蛛池模板: 多伦县| 日韩一区二区三区在线视频 | 国产69精品久久久久99尤物| 国产综合内射日韩久| 天堂va欧美ⅴa亚洲va在线| 色综合五月伊人六月丁香| 国内揄拍国内精品人妻| 凉山| 久久青草国产精品一区| 亚洲欧洲精品日韩av| 国产一区二区在线影院| 无码国产偷倩在线播放| 国产极品精品自在线不卡| 强伦姧人妻免费无码电影| 国产精品普通话国语对白露脸| 亚洲精品一区二区三区蜜臀| 中文亚洲成A人片在线观看| 国产精品一区中文字幕| 亚洲av无码之国产精品网址蜜芽 | 好男人社区神马在线观看www| 福利一区二区在线播放| 香港日本三级亚洲三级| 国产盗摄xxxx视频xxxx| 2021国产精品视频网站| 精品国产乱一区二区三区| 激情内射亚州一区二区三区爱妻 | 老鸭窝| 久久精品免视看国产成人| 亚洲欧洲一区二区三区久久| 成人免费亚洲av在线| 灌南县| 久久精品国产久精国产| 青青草原网站在线观看| 国产日产亚洲系列av| 亚洲av一本二本三本| 国产精品亚洲а∨天堂2021| 国产乱弄免费视频观看| 中文字幕亚洲综合第一页| 伊人久久大香线蕉av色婷婷色| 亚洲av无码一区二区三区网站| 精品国产一区二区三区av性色|