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>
效果图:
窗口大小依次减小