Flexbox
佈局(彈性盒模型)模塊的目的在於提供一種更有效的方法在容器中的項之間佈局、對齊和分配空間,即便它們的大小未知或是動態的(所以使用「flex
一詞)。上圖以及術語介紹來自於:http://www.w3.org/html/ig/zh/wiki/Css3-flexbox/zh-hanscss
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Flexbox佈局</title> <style type="text/css"> div{ width: 100px; height: 100px; background-color: red; margin: 10px; } </style> </head> <body> <div></div> <div></div> <div></div> </body> </html>
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Flexbox佈局</title> <style type="text/css"> body{ display: flex; background-color: rosybrown; } div{ width: 100px; height: 100px; background-color: red; margin: 10px; } </style> </head> <body> <div></div> <div></div> <div></div> </body> </html>
說明:容器中剩餘的空間將平均分配給全部子元素。若是其中一個子元素的值爲2,那麼剩餘的空間將會佔用兩倍於其餘元素的空間;html
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Flexbox佈局</title> <style type="text/css"> body{ display: flex; background-color: rosybrown; } div{ width: 100px; height: 100px; background-color: red; margin: 10px; flex-grow: 1; } div:nth-child(2){ background-color: royalblue; flex-grow: 2; } </style> </head> <body> <div></div> <div></div> <div></div> </body> </html>
小窗口:ide
大窗口:佈局
效果和 align-self 同樣,只是這個是寫在父元素上的:flex
例:flexbox
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Flexbox佈局</title> <style type="text/css"> body{ display: flex; background-color: rosybrown; align-items:center; } div{ width: 100px; height: 100px; background-color: red; margin: 10px; } div:nth-child(2){ background-color: royalblue; height: 200px; } </style> </head> <body> <div></div> <div></div> <div></div> </body> </html>
效果圖:spa
效果圖:3d
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Flexbox佈局</title> <style type="text/css"> body{ display: flex; background-color: rosybrown; flex-direction:row-reverse; } div{ width: 100px; height: 100px; background-color: red; margin: 10px; text-align: center; line-height: 100px; font-size: 50px; } </style> </head> <body> <div>A</div> <div>B</div> <div>C</div> </body> </html>
效果圖:代理
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Flexbox佈局</title> <style type="text/css"> body{ display: flex; background-color: rosybrown; flex-direction:column; } div{ width: 100px; height: 100px; background-color: red; margin: 10px; text-align: center; line-height: 100px; font-size: 50px; } </style> </head> <body> <div>A</div> <div>B</div> <div>C</div> </body> </html>
效果圖:code
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Flexbox佈局</title> <style type="text/css"> body{ display: flex; background-color: rosybrown; flex-direction:column-reverse; } div{ width: 100px; height: 100px; background-color: red; margin: 10px; text-align: center; line-height: 100px; font-size: 50px; } </style> </head> <body> <div>A</div> <div>B</div> <div>C</div> </body> </html>
效果圖:
效果圖:
大窗口 :
小窗口:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Flexbox佈局</title> <style type="text/css"> body{ display: flex; background-color: rosybrown; flex-wrap:wrap; } div{ width: 100px; height: 100px; background-color: red; margin: 10px; } </style> </head> <body> <div></div> <div></div> <div></div> <div></div> <div></div> <div></div> <div></div> <div></div> <div></div> <div></div> <div></div> <div></div> </body> </html>
大窗口:
中窗口:
小窗口:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Flexbox佈局</title> <style type="text/css"> body{ display: flex; background-color: rosybrown; flex-wrap:wrap-reverse; } div{ width: 100px; height: 100px; background-color: red; margin: 10px; } </style> </head> <body> <div></div> <div></div> <div></div> <div></div> <div></div> <div></div> <div></div> <div></div> <div></div> <div></div> <div></div> </body> </html>
大窗口:
中窗口:
小窗口:
爲了頁面更美觀,咱們能夠把flex-grow和flex-wrap一塊兒使用
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Flexbox佈局</title> <style type="text/css"> body{ display: flex; background-color: rosybrown; flex-wrap:wrap; } div{ width: 100px; height: 100px; background-color: red; margin: 10px; flex-grow: 1; } </style> </head> <body> <div></div> <div></div> <div></div> <div></div> <div></div> <div></div> <div></div> <div></div> <div></div> <div></div> <div></div> </body> </html>
效果圖:
窗口大小依次減小