日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(lián)網營銷解決方案
如何使用Flexbox和CSSGrid,實現(xiàn)高效布局

CSS 浮動屬性一直是網站上排列元素的主要方法之一,但是當實現(xiàn)復雜布局時,這種方法不總是那么理想。幸運的是,在現(xiàn)代網頁設計時代,使用 Flexbox 和 CSS Grid 來對齊元素,變得相對容易起來。

讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領域值得信任、有價值的長期合作伙伴,公司提供的服務項目有:域名申請、網絡空間、營銷軟件、網站建設、肇東網站維護、網站推廣。

使用 Flexbox 可以使元素對齊變得容易,因此 Flexbox 已經被廣泛使用了。

同時,CSS Grid 布局也為網頁設計行業(yè)帶來了很大的便利。雖然 CSS Grid 布局未被廣泛采用,但是瀏覽器逐漸開始增加對 CSS Grid 布局的支持。

雖然 Flexbox 和 CSS Grid 可以完成類似的布局,但是本次,我們學習的是如何組合使用這兩個工具,而不是只選擇其中的一個。在不久的將來,當 CSS Grid 布局獲得完整的瀏覽器支持時,設計人員就能夠利用每個 CSS 組合的優(yōu)勢,來創(chuàng)建最有效和最有趣的布局設計。

測試 Flexbox 和 CSS Grid 的基本布局

我們從一個很簡單且熟悉的布局類型開始,包括標題,側邊欄,主要內容和頁腳等部分。通過這樣一個簡單的布局,來幫助我們快速找到各種元素的布局方法。

下面是需要創(chuàng)建的內容:

要完成這個基本布局, Flexbox 需要完成的主要任務包括以下方面:

  • 創(chuàng)建完整寬度的 header 和 footer
  • 將側邊欄放置在主內容區(qū)域左側
  • 確保側邊欄和主內容區(qū)域的大小合適
  • 確保導航元素定位準確

基本 HTML 結構

 
 
 
 
  1.     
  2.         
  3.           
    •             
    •             
    •             
    •           
  4.         
  5.         
  6.     
  7.     
  8.         
  9.             

  10.         
  11.         
  12.             

  13.             

  14.         
  15.     
  •     
  •         

  •         

  •     
  •  

    使用 Flexbox 創(chuàng)建布局

    Header 樣式

    我們從外到內,逐層開始設計,首先將 display: flex; 添加到 container,這也是所有 Flexbox 布局的***步。接著,將 flex-direction 設置為 column,確保所有部分彼此相對。

     
     
     
     
    1. .container {
    2.     display: flex;
    3.     flex-direction: column;

    通過 display: flex; 自動創(chuàng)建一個全寬的 header(header 默認情況下是塊級元素)。通過這個聲明,導航元素的放置會變得很容易。

    導航欄的左側有一個 logo 和兩個菜單項,右側有一個登錄按鈕。導航位于 header 中,通過 justify-content: space-between; 可以實現(xiàn)導航和按鈕之間的自動間隔。

    在導航中,使用 align-items: baseline; 能夠實現(xiàn)所有導航項目與文本基線的對齊,這樣也使得導航欄看起來更加統(tǒng)一。

    代碼如下:

     
     
     
     
    1. header{
    2.     padding: 15px;
    3.     margin-bottom: 40px;
    4.     display: flex;
    5.     justify-content: space-between;
    6. }
    7.  
    8. header nav ul {
    9.     display: flex;
    10.     align-items: baseline;
    11.     list-style-type: none;

    頁面內容樣式

    接下來,將側邊欄和主內容區(qū)域使用一個 wrapper 包含起來。具有 .wrapper 類的 div,也需要設置 display: flex; 但是 flex 方向與上述不同。這是因為側邊欄和主內容區(qū)域彼此相鄰而不是堆疊。

     
     
     
     
    1. .wrapper {
    2.     display: flex;
    3.     flex-direction: row;
    4. }

    主內容區(qū)域和側邊欄的大小設置非常重要,因為重要的信息都在這里展示。主內容區(qū)域應該是側邊欄大小的三倍,使用 Flexbox 很容易實現(xiàn)這點。

     
     
     
     
    1. .main {
    2.     flex: 3;
    3.     margin-right: 60px;
    4. }
    5.  
    6. .sidebar {
    7.    flex: 1;

    總的來說,F(xiàn)lexbox 在創(chuàng)建這個簡單的布局時,十分高效。尤其在控制列表元素樣式和設置導航與按鈕之間的間距方面,特別有用。

    使用 CSS Grid 創(chuàng)建布局

    為了測試效率,接下來使用 CSS Grid 創(chuàng)建相同的基本布局。

    Grid 模板區(qū)域

    CSS Grid 的方便之處在于,可以指定模板區(qū)域,這也使得定義布局變得非常直觀。采取這種方法,網格上的區(qū)域可以命名并引用位置項。對于這個基本布局,我們需要命名四個項目:

    • header
    • main content
    • sidebar
    • footer

    基本 HTML 結構

     
     
     
     
    1.     
    2.         
    3.           
      •             
      •             
      •             
      •           
    4.         
    5.         
    6.     
    7.    
    8.     
    9.         

    10.         
      •             
      •             
      •          
      •          
      •          
      •         
    11.     
    12.  
    13.     
    14.         

    15.         

    16.         

       

    17.     
    18.  
    19.     
    20.         

    21.         

    22.     
     

    我們按照順序在 grid container 中定義這些區(qū)域,就像繪制它們一樣。

    grid-template-areas:

    “header header”

    “sidebar main”

    “footer footer”;

    當前側邊欄位于左側,主區(qū)域內容位于右側,如果需要,也可以輕松更改順序。

    有一件事要注意:這些名字需要“連接”到樣式上。所以需要在 header block 中,添加 grid-area: header;。

     
     
     
     
    1. header{
    2.     grid-area: header;
    3.     padding: 20px 0;
    4.     display: grid;
    5.     grid-template-columns: 1fr 1fr;

    HTML 結構與 Flexbox 示例中的相同,但 CSS 與創(chuàng)建網格布局完全不同。

     
     
     
     
    1. .container{
    2.     max-width: 900px;
    3.     background-color: #fff;
    4.     margin: 0 auto;
    5.     padding: 0 60px;
    6.     display: grid;
    7.     grid-template-columns: 1fr 3fr;
    8.     grid-template-areas:
    9.         "header header"
    10.         "sidebar main"
    11.         "footer footer";
    12.     grid-gap: 50px;

    使用 CSS Grid 布局時,在 container 中設置 display: grid; 非常重要。此處聲明 grid-template-columns,是為了確保頁面的整體結構。這里 grid-template-column 已將側邊欄和主內容區(qū)域大小設置為 1fr 和 3fr。fr 是網格的分數單位。

    接下來,需要調整 header 容器中的 fr 單元。將 grid-template-columns 設置為 1fr 和 1fr。這樣 header 中就有兩個相同大小的列,放置導航項和按鈕會很合適。

     
     
     
     
    1. header{
    2.     grid-area: header;
    3.     display: grid;
    4.     grid-template-columns: 1fr 1fr;

    要放置按鈕,我們只需要將 justify-self 設置為 end。

     
     
     
     
    1. header button {
    2.     justify-self: end;

    導航的位置按照以下方式設置:

     
     
     
     
    1. header nav {
    2.     justify-self: start;

    使用 Flexbox 和 CSS Grid 創(chuàng)建布局

    ***,我們通過組合 Flexbox 和 CSS Grid 來創(chuàng)建更復雜的布局。

    基本的布局如下圖所示:

    這種布局需要在行和列兩個方向上保持一致,所以使用 CSS Grid 實現(xiàn)整體布局十分有效。

    規(guī)劃對于布局的實現(xiàn)來說,十分重要。

    接下來看看代碼如何一步步實現(xiàn)。首先 display: grid; 是基本設置,其次內容塊之間的間距,可以通過 grid-column-gap 和 grid-row-gap 實現(xiàn)。

     
     
     
     
    1. .container {
    2.   display: grid;
    3.   grid-template-columns: 0.4fr 0.3fr 0.3fr;
    4.   grid-column-gap: 10px;
    5.   grid-row-gap: 15px;

    列和行布局

    Header 部分橫跨所有的列。

     
     
     
     
    1. .header {
    2.   grid-column-start: 1;
    3.   grid-column-end: 4;
    4.   grid-row-start: 1;
    5.   grid-row-end: 2;
    6.   background-color: #d5c9e2;
    7. }

    也可以使用簡寫,起始值和結束值位于同一行上,并用斜杠分隔。就像這樣:

     
     
     
     
    1. .header {
    2.   grid-column: 1 / 4;
    3.   grid-row: 1 / 2;
    4.   background-color: #55d4eb;

    完成網格布局的構建之后,微調內容就是下一步。

    導航

    Flexbox 非常適合放置 header 元素?;镜?header 布局需要設置 justify-content: space-between。

    上面的 CSS Grid 布局示例中,需要在導航欄設置 justify-self:start;,在按鈕設置 justify-self: end;,但是如果使用 Flexbox,導航的間距會變得很容易設置。

     
     
     
     
    1. .header {
    2.   grid-column: 1 / 4;
    3.   grid-row: 1 / 2;
    4.   color: #9f9c9c;
    5.   text-transform: uppercase;
    6.   border-bottom: 2px solid #b0e0ea;
    7.   padding: 20px 0;
    8.   display: flex;
    9.   justify-content: space-between;
    10.   align-items: center;

    列內容網格

    將所需的元素排列在一個方向上,意味所有元素都處在同一橫向維度,通常Flexbox是實現(xiàn)這種布局的更好選擇。此外,F(xiàn)lexbox 可以動態(tài)調整元素。使用 Flexbox,可以將所有元素連成一條直線,這也確保了所有元素都具有相同的高度。

    帶有文本和按鈕的行內容

    下圖是包含了“額外”文本和按鈕的三個區(qū)域。Flexbox 可以輕松設置三列的寬度。

     
     
     
     
    1. .extra {
    2.   grid-column: 2 / 4;
    3.   grid-row: 4 / 5;
    4.   padding: 1rem;
    5.   display: flex;
    6.   flex-wrap: wrap;
    7.   border: 1px solid #ececec;
    8.   justify-content: space-between;
    9. }

    設計方法總結

    以上的布局設計中,使用了 CSS Grid 來進行整體布局(以及設計中的非線性部分)。對于網格內容區(qū)域的設計,使用 Flexbox 進行樣式的排序和微調會更容易實現(xiàn)。


    當前文章:如何使用Flexbox和CSSGrid,實現(xiàn)高效布局
    分享URL:http://www.5511xx.com/article/cdigpoc.html