2017-05-29 54 views
0

我需要一些幫助來理解對我而言是一種意外的行爲。flex容器內部的塊元素不表現出預期的行爲

爲什麼h2保持內聯,即使我設置它的顯示屬性來阻止? 我預計它將作爲標題在div元素之上100%寬。

section{ 
 
     border: 1px solid red; 
 
     display: flex; 
 
     flex-direction: row; 
 
     flex-wrap: nowrap; 
 
     justify-content: space-around; 
 
     align-items: stretch; 
 
    } 
 

 
h2 { 
 
    display: block; 
 
    border: 1px solid red; 
 
}
<section> 
 
       <h2>main title</h2> 
 
     <div> 
 
      <h3>title</h3> 
 
      <ul> 
 
      <li>element 1</li> 
 
      <li>element 2</li> 
 
      <li>element 3</li> 
 
      <li>element 4</li> 
 
      <li>element 5</li> 
 
      </ul> 
 
     </div> 
 
     <div> 
 
      <h3>title</h3> 
 
      <ul> 
 
      <li>element 1</li> 
 
      <li>element 2</li> 
 
      <li>element 3</li> 
 
      <li>element 4</li> 
 
      <li>element 5</li> 
 
      </ul> 
 
     </div> 
 
     <div> 
 
      <h3>title</h3> 
 
      <ul> 
 
      <li>element 1</li> 
 
      <li>element 2</li> 
 
      <li>element 3</li> 
 
      <li>element 4</li> 
 
      <li>element 5</li> 
 
      </ul> 
 
     </div> 
 
</section>

回答

0

因爲這是一個柔性row集到nowrap這意味着父的每一個彎曲子將在一個水平行中的細胞/列。

你要麼需要在h2使用width: 100%flex-basis: 100%並添加flex-wrap: wrapsection,或者你可以只移動h2上述section ...

section { 
 
     border: 1px solid red; 
 
     display: flex; 
 
     flex-direction: row; 
 
     flex-wrap: wrap; 
 
     justify-content: space-around; 
 
     align-items: stretch; 
 
    } 
 

 
h2 { 
 
    display: block; 
 
    border: 1px solid red; 
 
    width: 100%; 
 
}
<section> 
 
       <h2>main title</h2> 
 
     <div> 
 
      <h3>title</h3> 
 
      <ul> 
 
      <li>element 1</li> 
 
      <li>element 2</li> 
 
      <li>element 3</li> 
 
      <li>element 4</li> 
 
      <li>element 5</li> 
 
      </ul> 
 
     </div> 
 
     <div> 
 
      <h3>title</h3> 
 
      <ul> 
 
      <li>element 1</li> 
 
      <li>element 2</li> 
 
      <li>element 3</li> 
 
      <li>element 4</li> 
 
      <li>element 5</li> 
 
      </ul> 
 
     </div> 
 
     <div> 
 
      <h3>title</h3> 
 
      <ul> 
 
      <li>element 1</li> 
 
      <li>element 2</li> 
 
      <li>element 3</li> 
 
      <li>element 4</li> 
 
      <li>element 5</li> 
 
      </ul> 
 
     </div> 
 
</section>

或者刪除來自sectionflex屬性並將3列div包裝到新元素中並在其中應用柔性元素。

.flex { 
 
    border: 1px solid red; 
 
    display: flex; 
 
    flex-direction: row; 
 
    flex-wrap: nowrap; 
 
    justify-content: space-around; 
 
    align-items: stretch; 
 
} 
 

 
h2 { 
 
    display: block; 
 
    border: 1px solid red; 
 
}
<section> 
 
    <h2>main title</h2> 
 
    <div class="flex"> 
 
    <div> 
 
     <h3>title</h3> 
 
     <ul> 
 
     <li>element 1</li> 
 
     <li>element 2</li> 
 
     <li>element 3</li> 
 
     <li>element 4</li> 
 
     <li>element 5</li> 
 
     </ul> 
 
    </div> 
 
    <div> 
 
     <h3>title</h3> 
 
     <ul> 
 
     <li>element 1</li> 
 
     <li>element 2</li> 
 
     <li>element 3</li> 
 
     <li>element 4</li> 
 
     <li>element 5</li> 
 
     </ul> 
 
    </div> 
 
    <div> 
 
     <h3>title</h3> 
 
     <ul> 
 
     <li>element 1</li> 
 
     <li>element 2</li> 
 
     <li>element 3</li> 
 
     <li>element 4</li> 
 
     <li>element 5</li> 
 
     </ul> 
 
    </div> 
 
    </div> 
 
</section>

+0

感謝您的解釋。現在我明白了這種行爲。 我已經解決它作爲你的第二個選項的建議,但我仍然想明白爲什麼它不工作的第一個。 – Amaliodigital

相關問題