空間分配

Frontend SELF TW
等級 17 , 課堂 5
開放

9.1 屬性 flex-grow

在Flexbox裡,有很多工具可以用來管理Flex容器內元素之間的空間分配。 屬性flex-growflex-shrinkflex-basis在控制Flex元素在不同條件下的大小和行為上扮演了關鍵角色。現在我們將詳細探討這些屬性和它們的使用方法。

屬性flex-grow決定了Flex元素增加大小以占據容器中可用空間的能力。flex-grow的值是個係數,指出元素相對於其他Flex元素可以增長的比例。

值:

  • 整數或小數值
  • 預設值: 0 (元素不增長)

使用範例:

CSS
    
      .container {
        display: flex;
        border: 2px solid #000;
        padding: 10px;
        width: 500px;
      }

      .item {
        background-color: #3498db;
        color: white;
        padding: 10px;
        margin: 5px;
      }

      .grow-1 {
        flex-grow: 1;
      }

      .grow-2 {
        flex-grow: 2;
      }
    
  
HTML
    
      <div class="container">
        <div class="item grow-1">元素 1</div>
        <div class="item grow-2">元素 2</div>
        <div class="item grow-1">元素 3</div>
      </div>
    
  

代碼說明:

  • .grow-1: 這些元素有 flex-grow: 1;,允許它們均勻增長
  • .grow-2: 這個元素有flex-grow: 2;,這讓它能夠比具有flex-grow: 1;的元素增長兩倍

9.2 屬性 flex-shrink

屬性flex-shrink決定了Flex元素在容器空間有限時縮小的能力。flex-shrink的值是個係數,指出元素相對於其他Flex元素可以縮小的比例。

值:

  • 整數或小數值
  • 預設值: 1 (元素可以縮小)

使用範例:

CSS
    
      .container {
        display: flex;
        border: 2px solid #000;
        padding: 10px;
        width: 300px;
      }

      .item {
        background-color: #3498db;
        color: white;
        padding: 10px;
        margin: 5px;
        width: 150px;
      }

      .shrink-0 {
        flex-shrink: 0;
      }

      .shrink-1 {
        flex-shrink: 1;
      }
    
  
HTML
    
      <div class="container">
        <div class="item shrink-0">元素 1</div>
        <div class="item shrink-1">元素 2</div>
        <div class="item shrink-1">元素 3</div>
      </div>
    
  

代碼說明:

  • .shrink-0: 這個元素有flex-shrink: 0;,不允許它縮小
  • .shrink-1: 這些元素有flex-shrink: 1;,允許它們在需要時縮小

9.3 屬性 flex-basis

屬性flex-basis決定了Flex元素在分配自由空間之前的初始大小。它可以以不同單位設置,如像素、百分比和其他。

值:

  • 多種單位的長度 (px, %, em 等)
  • 預設值: auto (大小由內容決定)

使用範例:

CSS
    
      .container {
        display: flex;
        border: 2px solid #000;
        padding: 10px;
      }

      .item {
        background-color: #3498db;
        color: white;
        padding: 10px;
        margin: 5px;
      }

      .basis-auto {
        flex-basis: auto;
      }

      .basis-100px {
        flex-basis: 100px;
      }

      .basis-50percent {
        flex-basis: 50%;
      }
    
  
HTML
    
      <div class="container">
        <div class="item basis-auto">元素 1</div>
        <div class="item basis-100px">元素 2</div>
        <div class="item basis-50percent">元素 3</div>
      </div>
    
  

代碼說明:

  • .basis-auto: 這個元素有flex-basis: auto;,意思是它的大小由內容決定
  • .basis-100px: 這個元素有固定的初始大小為100像素
  • .basis-50percent: 這個元素的初始大小是容器寬度的50%

9.4 使用屬性

屬性flex是一個簡寫,可以設置flex-growflex-shrinkflex-basis。 它允許在一個屬性中管理所有三個空間分配的方面。

語法:

    
      .container {
        flex: [flex-grow] [flex-shrink] [flex-basis];
      }
    
  

使用範例:

CSS
    
      .container {
        display: flex;
        border: 2px solid #000;
        padding: 10px;
      }

      .item {
        background-color: #3498db;
        color: white;
        padding: 10px;
        margin: 5px;
      }

      .flex-1 {
        flex: 1 1 auto;
      }

      .flex-2 {
        flex: 2 1 100px;
      }

      .flex-3 {
        flex: 1 0 50%;
      }
    
  
HTML
    
      <div class="container">
        <div class="item flex-1">元素 1</div>
        <div class="item flex-2">元素 2</div>
        <div class="item flex-3">元素 3</div>
      </div>
    
  

代碼說明:

  • .flex-1: 這個元素有flex: 1 1 auto;,意味著它可以均勻的增長和縮小,初始大小由內容決定
  • .flex-2: 這個元素有flex: 2 1 100px;,意味著它能比具有flex-grow: 1;的元素增長兩倍,能夠縮小且有初始大小100像素
  • .flex-3: 這個元素有flex: 1 0 50%;,意味著它能夠增長但不能縮小,初始大小是容器寬度的50%
留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION