博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Flex弹性盒模型
阅读量:5101 次
发布时间:2019-06-13

本文共 2022 字,大约阅读时间需要 6 分钟。

说到H5,说到响应式,老牛第一时间想到的第一个rem,第二个就是flex盒模型,这两个属性简直是移动端响应式开发利器..

用到了flex弹性盒模型意味着抛弃了老旧的float甚至是margin的布局进入了完全的响应式布局的时代,听过有个比喻,有的人不愿意尝试新鲜事物,就好像不愿意尝试网上支付的老年人一样


 

1.flex盒模型的声明:

注意该属性是申明给布局元素的父级元素的.
-webkit-display: flex;
-moz-display: flex;
-ms-display: flex;
-o-display: flex;
display: flex;
2.横向对齐:

justify-content : flex-start | flex-end | center | space-between | space-around
| initial | inherit
该属性为横向对齐的模式
一.(两端对齐)的运用:justify-content:space-between
比如我们想要制作一个如下图所示的布局
你是不是要用float:left,然后给margin-left,还要给第一个黑色div加个margin-left:0?好,那么如果页面是响应式或是手机端,我们需要灰色模块大小固定不变,在黄色模块变小时,保持这种方式排列,只能变margin值..怎么办?rem和百分比都搞不定了吧..难道用绝对定位还是js去进行计算?不需要!!
此处只需要给黄色模块加上display:flex;justify-content:space-between;大功告成!!margin都不需要!
二.(右端对齐)的运用:justify-content:flex-end
如果我们要制作<div>1</div><div>2</div><div>3</div>右端对齐的顺序正确的列阵
下图为float:right margin-left:20px的效果(顺序变成3,2,1了):
而使用justify-content:flex-end的结果如下:
这才是我们需要结果吧,如果说你要顺序为321怎么办,如果你想让灰色盒子纵向排列怎么办?
此时给父元素加一个属性
flex-direction: row | row-reverse | column | column-reverse;分别为下图所示

3.纵向对齐:

align-items : flex-start | flex-end | center | baseline | stretch;
其中最好用的,老牛用的最爽的....就是center!!上下对齐一直是让很多开发者头痛的问题,要么用绝对定位写死,但如果是响应式,比如老牛当时写博客的时候这样一个布局.
看上去很简单吧?老牛本来用的是li包p然后用line-height去控制高度保持字体上下居中,但是牛宝宝需要导航条在手机端的时候跟着rem整体变小啊..你会说那不简单,line-height也给个rem一起变不就一直居中了?其实并不是....尽管导航条跟着视口的缩小而缩小,但总不能缩到比里面的字体还小吧....那么问题就来了...导航条要缩小而且还要给min-height最小高宽度的限制,可是line-height没有最小行高啊,那子元素用padding?
那点击时背景不能全蓝啊....最后博主给父元素加了一个display:flex;align-items:center;!!!撒花完结 全部结束,不管你导航条高度怎么变,有没有最小限制,中间p元素将永远上下居中;
本次博客中,老牛还是用了不少flex的盒模型,相当的好用,如下2个模块也是用弹性盒模型做的..
老牛认为在如今移动端以及响应式中,把flex属性玩熟练了,那可以说是如鱼得水啊~

4.折行设置:

 

flex-wrap: nowrap | wrap | wrap-reverse;
这个属性为弹性容器内的子元素排列是否折行显示..reverse依旧为颠倒排列顺序,值得注意的是,nowrap可能会导致子元素溢出整体容器.
5.flex平分属性:
这个属性是加给弹性盒模型的子元素的.比如:
父元素container{display:flex} 其子元素div1{flex:2} div2{flex:1} div3{flex:1}
那么子元素会扣去所有magrin值后用相应的比例进行平分,比如100px的父容器,扣去所有div1 2 3的margin值20px后,div1就为40px,2和3均为20px.
 
原文链接:http://www.web-jackiee.com/a/xiangguanwebwenzhang/2016/0830/155.html

转载于:https://www.cnblogs.com/ifworld/p/7763382.html

你可能感兴趣的文章
Java语言概述
查看>>
关于BOM知识的整理
查看>>
使用word发布博客
查看>>
面向对象的小demo
查看>>
微服务之初了解(一)
查看>>
GDOI DAY1游记
查看>>
收集WebDriver的执行命令和参数信息
查看>>
数据结构与算法(三)-线性表之静态链表
查看>>
mac下的mysql报错:ERROR 1045(28000)和ERROR 2002 (HY000)的解决办法
查看>>
Hmailserver搭建邮件服务器
查看>>
django之多表查询-2
查看>>
快速幂
查看>>
改善C#公共程序类库质量的10种方法
查看>>
AIO 开始不定时的抛异常: java.io.IOException: 指定的网络名不再可用
查看>>
MyBaits动态sql语句
查看>>
HDU4405(期望DP)
查看>>
拉格朗日乘子法 那些年学过的高数
查看>>
vs code 的便捷使用
查看>>
Spring MVC @ResponseBody返回中文字符串乱码问题
查看>>
用户空间与内核空间,进程上下文与中断上下文[总结]
查看>>