那天,高高兴兴的测试flex属性。大家都知道,当父盒子display:flex的时候,子盒子即使宽高和大于父盒子,也会由于flex的特性进行收缩;然而,在给父盒子加了flex-direction:column之后,居然出现了:

它们没收缩!!!!!!

html:

<div class="father">
<div class="box1">1</div>
<div class="box2">2</div>
<div class="box3">3</div>
<div class="box4">4</div>
</div>

css(没加flex-direction:column):

.father{
width: 300px;
height: 300px;
background-color: pink;
display: flex;
margin: 100px auto;
}
.box1,.box2,.box3,.box4{
width: 100px;
height: 100px;
line-height: 100px;
text-align: center;
}
.box1{
background-color: red;
}
.box2{
background-color: yellow;
}
.box3{
background-color: green;
}
.box4{
background-color: purple;
}

再三测试,发现是行高的影响

又再三测试,总结出来了一些规律

在竖直方向上

  a.当盒子的行高和大于等于父盒子时候,行高最大的盒子的行高

    1.大于等于自身设定的高度,则高度为设定的高度;剩下的父盒子高度则为父盒子原高度减去子盒子的高度;然后再其他盒子进行判断。

    2.小于自身设定的高度,则高度为行高

  b.当盒子的行高和小于父盒子的时候,行高最大的盒子的行高    

    1.大于等于父盒子高/盒子个数且大于盒子设定的高度时,则该盒子高度为设定的高度,剩下的父盒子高度则为父盒子原高度减去子盒子的高度;然后再其他盒子进行判断

    2.大于等于父盒子高/盒子个数且小于盒子设定的高度时,则该盒子的高度为行高,剩下的父盒子高度则为父盒子原高度减去子盒子的高度;然后再其他盒子进行判断。

    3.小于父盒子高/盒子个数且小于盒子设定的高度时,则盒子们均分剩下的高度;

  如1:父盒高为300px,四个子盒子高为100px;行高分别设为120px,100px,45px,45px;总行高为120+100+45+45=310>300

    则:盒子1行高大于等于自身设定的高度(120>100),走a1路线,盒子1高度将为100px;父盒子剩下高度为300-100=200px;

      剩下三个盒子总行高为100+45+45=190<200px,父盒子高度/盒子个数=200/3 = 66px

      则盒子2行高大于等于自身设定的高度(100>=100),走b1路线,盒子2 高度将为100px;父盒子剩下的高度为200-100=100px

        剩下两个盒子总行高为45+45=90<100px 父盒子高度/盒子个数=100/2=50px

          则盒子3,盒子4,均不符合行高小于父盒子高度/盒子个数(45<50),走b3路线,均分剩下的100px;每份50px;

          最终结果将如下

  如2:父盒高为300px,四个子盒子高为100px;行高分别设为80px,80px,80px,70px;总行高为80+80+80+70=310>300px;

    则:盒子1,2,3行高小于自身设定的高度(80<100),走a2路线,盒子1,2,3高度将为80px;父盒子剩下高度为300-240=60px;

      剩下盒子总行高为70px>60px,

        盒子4行高小于自身设定的高度(70<100),走a2路线,盒子4高度将为行高即60px,最候结果如下:

  

  如3:父盒高为300px,四个子盒子高为100px;行高分别设为57px,120px,30px,90px;总行高为57+120+30+90=297<300px;

    则:盒子2行高大于等于自身设定的高度(120>100),走b1路线,盒子1高度将为100px;父盒子剩下高度为300-100=200px;

      剩下三个盒子总行高为57+30+90=177<200px,父盒子高度/盒子个数=200/3 = 66px;

        则盒子4大于等于父盒子高/盒子个数且小于盒子设定的高度(100>90>66),走b2路线,盒子2 高度将为行高90px;父盒子剩下的高度为200-90=110px

          剩下两个盒子总行高为57+30=87<110px,父盒子高/盒子个数=100/2=50px

            则盒子1大于等于父盒子高/盒子个数且小于盒子设定的高度(100>57>50),走b2路线,盒子1 高度将为行高57px;父盒子剩下的高度为110-57=53px

              剩下的盒子30<57/1,走b3路线,53分给盒子3

            最终结果为 57px,100px 53px,90px;如图

    基本验证无误,欢迎大家测试。实际布局中应该尽量避免大数值的行高设置。(其实这个测试很无聊)

flex盒子里面元素linehight对高度的影响的更多相关文章

  1. flex盒子布局

    看过很多对于弹性盒子flex的简介,但还是觉得阮一峰大神的解析和张鑫旭大神(旧版flex)的解析比较容易理解,下面,我以自己的理解来叙述关于flex弹性布局! 1.概念(容器和项目) 在flex中,有 ...

  2. 【css3网页布局】flex盒子模型

    1.0 前言 网页布局(layout)是CSS的一个重点应用. 经典布局类型: 布局的传统解决方案,基于盒状模型,依赖 display属性 + position属性 + float属性.它对于那些特殊 ...

  3. HTML连载39-外边距合并现象、盒子模型以及宽度和高度

    一. 在默认布局的垂直方向上,默认情况下外边距是是不会叠加的,会出现合并现象,谁的外边距较大,就听谁的:但是在水平方向就不会出现这种状况,我们举个例子 span{ display: inline-bl ...

  4. 如何让 height:100%; 起作用---父级元素必须设定高度

    参考: http://www.webhek.com/post/css-100-percent-height.html https://www.cnblogs.com/kunmomo/p/1060066 ...

  5. BUG 图片元素img下 高度超出 出现多余空白

    BUG 图片元素img下 高度超出 出现多余空白 1.将图片转换为块级对象 即,设置img为“display:block;”.   2.设置图片的垂直对齐方式 即设置图片的vertical-align ...

  6. jquery获取元素与屏幕高度距离

    a. onscroll事件 scroll是css样式中overflow的一个值,意思是显示滚动条;当一个元素的实际高度超过他的最大高度是,只要设置了overflow为scroll b. $(..).s ...

  7. CSS中为什么有的元素能够设置高度,而有的元素却不能设置高度与宽度?

    可以使用{display:block}将内联元素变为块级元素,同时使用{display:inline}将块级元素变为内联元素. {display:inline-block}又是怎么回事,根据张鑫旭老师 ...

  8. flex布局 justify-content:space-between; 解决最后一排数量不够自动向两端排列问题和flex布局的元素会有默认间隙(垂直间隙)

    1 .flex 布局两端对齐当最后一排数量不够时,会出现以下布局情况 实现效果: 解决方案:使用after伪类, 解决最后一排数量不够两端分布的情况.宽度就是每张图片的宽度 .list:after { ...

  9. iview Carousel 轮播图自适应宽高;iview 轮播图 图片重叠问题;iview tabs 高度互相影响问题;vue this问题;

    最终效果图: 一.轮播图中图片自适应宽高:  <Carousel loop v-bind:height="imgHeight+'px'" v-model="caro ...

随机推荐

  1. SpringMVC总结的部分教程及使用方法

    注:本文只用注解来实现 SpringMVC各种流程图流程图(其他的各种流程图)jsp.xml.action彼此之间的关系,都如何使用spring-mvc.xml如何配置,放在哪里?action中如何转 ...

  2. 一个Python小白5个小时爬虫经历

    前言 最近业余在做一个基于.NET Core的搜索项目,奈何基层代码写好了,没有看起来很华丽的数据供测试.很巧的也是博客搜索,于是乎想到了博客园.C#也能做做页面数据抓取的,不过在博客园看到的大部分都 ...

  3. Python 接口测试(三)

    四:python接口之http请求 python的强大之处在于提供了很多的标准库以及第三库,本文介绍urllib 和第三库的requests. Urllib 定义了很多函数和类,这些函数和类能够帮助我 ...

  4. IE8上传文件时javascript读取文件的本地路径的问题("C:\fakepath\")的解决方案

    <script type="text/javascript"> function getPath(obj) { if (obj) { ) { obj.select(); ...

  5. Android项目实战(三十一):异步下载apk文件并安装(非静默安装)

    前言: 实现异步下载apk文件 并 安装.(进度条对话框显示下载进度的展现方式) 涉及技术点: 1.ProgressDialog   进度条对话框  用于显示下载进度 2.AsyncTask     ...

  6. 锋利的jQuery中的事件与动画

    奋夜的奋斗  ----  事件与动画 ----  来自地狱的战镰 小小的单词难不倒我们哦!!!!!!!    bind:绑定     unbind:接触绑定    toggle:栓牢   fadeou ...

  7. 一张图看懂 JS 的事件机制

    一.为什么 JavaScript 单线程 假定JavaScript同时有两个线程,一个线程在某个DOM节点上添加内容,另一个线程删除了这个节点,这时浏览器应该以哪个线程为准? 为了避免复杂性, JS ...

  8. 每天一个linux命令(56)--crontab命令

    上一节学习了 at  命令是针对仅运行一次的任务,循环运行的例行性计划任务,Linux 系统则是由 cron(crond)这个系统服务来控制的.Linux 系统上面原本就有非常多的计划性工作,因此这个 ...

  9. JavaScript学习--8.1

    JavaScript学习--8.1(常见的js代码兼容工具总结) 1.取css样式表和非行间样式的属性 function getStyle(obj,attr){ if(obj.currentStyle ...

  10. PCB行业ERP解决方案

    普实PCB管理系统包括PCB企业从接到订单开始,编排生产计划.制作工程指示.生产工具.准备物料.品质保障.工序生产.设备维护等一系列与企业运作密切相关的环节,使得企业的各个部门能够紧密联系.相互协调, ...