01、超级小中
在没有和flex grid之前,垂直居中一直不能很优雅的实现。而现在,可以结合我们grid
和place-items
优雅的实现同时水平居中和垂直居中。
<div class="parent blue" > <div class="box coral" contenteditable> :) </div> .ex1 .parent { display: grid; place-items: center; }
02、可解构的自适应布局(The Deconstructed Pancake)
flex: 0 1 <baseWidth>
这种布局经常出现在电的网站:
- 在视口足够的时候,三个框固定宽度横放
- 在视口不够的时候(宽度在移动上面),宽度仍然固定,,但是自动解构(原谅我的中文水平),不在同一水平面上
<div class="parent white"> <div class="box green">1</div> <div class="box green">2</div> <div class="box green">3</div> </div> .ex2 .parent { display: flex; flex-wrap: wrap; justify-content: center; } .ex2 .box { flex: 1 1 150px; /* flex-grow: 1 ,表示自动延展到最大宽度 */ flex: 0 1 150px; /* No stretching: */ margin: 5px; }
当我们设置flex: 1 1 150px;
时候:
03、经典的侧边栏
grid-template-columns: minmax(<min>, <max>) ...
同样使用grid
布局,结合可以minmax()
实现弹性的的这在你要适应大屏幕的时候很有用)。minmax(<min>, <max>)
就是字面意思。结合<flex>
单位,非常优雅,避免了数学计算宽度等不灵活的手段(的我们设置间隙手段时候)。
<div class="parent"> <div class="section yellow" contenteditable> Min: 150px / Max: 25% </div> <div class="section purple" contenteditable> This element takes the second grid position (1fr), meaning it takes up the rest of the remaining space. </div> </div> .ex3 .parent { display: grid; grid-template-columns: minmax(150px, 25%) 1fr; }