混合划分
demo1,css:
#demo1{ width: 100%; background: #ccc; display: -webkit-flex;/*表示使用弹性布局*/ } #demo1 .item{ flex: 1;/*占容器的比例*/ text-align: center; background:#00ff00; color: #000; padding: 5px; margin-left: 2px; } #demo1 .item2{ flex: 2;/*占容器的比例*/ text-align: center; background:#0000ff; color: #000; padding: 5px; margin-left: 2px; } #demo1 .item3{ width:100px; text-align: center; background:#ee00ff; color: #000; padding: 5px; margin-left: 2px; }
demo1,html
<div id="demo1"> <div class="item"> flex:1 </div> <div class="item"> flex:1 </div> <div class="item2"> flex:2 </div> <div class="item3"> 我只有100px </div> </div>
实践demo1,看看效果。
不定宽高,水平垂直居中
方法1:可实现屏幕的水平垂直居中
demo2,css(1)
#demo2{ position: absolute; top: 50%; left:50%; z-index: 3; -webkit-transform: translate(-50%,-50%); border-radius: 6px; background:#00ff00; border:1px solid #000; }
demo2,html(1)
<div id="demo2"> <p>不定宽高的水平垂直居中</p><br/>方法1 </div>
方法2:似乎不可实现屏幕的水平垂直居中,只能实现某个容器内的水平垂直居中(容器最好是有宽高)
demo2,css(2)
#demo3{ width:100%; height: 600px; background:#ccc; justify-content: center; align-items: center; display: -webkit-flex;/*表示使用弹性布局*/ } #demo3 .item{ /*设计item是个圆形*/ width:50px; height:50px; border-radius: 50px; background:#000; border:1px solid red; }
demo2,html(2)
<div id="demo3"> <span class="item"></span> </div>
实践demo2,看看效果
!!补充:
兼容性
1,ios可以使用最新flex布局
2,Android4.4以下只能兼容旧版本的flexbox布局
3,Android4.4及以上,可以使用最新的flex布局
所以,建议使用旧版本兼容性的flexbox布局。
属性替换如下:
新flex布局 | 旧flexbox布局 |
display: -webkit-flex; |
display: -webkit-flex-box; |
justify-content: center; |
box-pack: center; |
-webkit-flex:1 | -webkit-flex-box:1 |
align-items: center; |
box-align: center; |