弹性盒子模型使用技巧

发布日期:2019-06-20

  很早之前就学过了弹性盒子,就感觉自己什么都学会了,没想到到了实际的运用过程中,其实并不是那么一回事,自己根本想不到会用到哪些属性,该怎么使用。

  这一次就只把我使用过程中遇到的一些坑来总结一下。

  使用弹性盒子的情况还是需要去看布局的,这个属性使用起来非常爽,不需要考虑那么多,直接几行代码就完成了之前浮动布局要完成的情况,而且自适应页面的能力也要强出好多,不需要自己再去调整好久的样式像素。

  直接上布局的样子吧。

    页面一

  

  比如说上面的样式,你们可能有别的更好的布局思路,可以分享一下的哈。 我就说说我猜到的坑,因为之前根本就没有这样去写过,所以有一些细节的部分根本没有考虑过,后来写过一次之后,在看到这种布局就变得容易多了。

  布局思路

    一般我们都会把一个页面分为三部分,我们把最上面的设备监控是头部

    内容部分为中间的那一大堆

    底部就是下面的三个按钮的那一些

  布局思路大概是下面的代码那个样子的,中间的部分肯定是要自适应的了,直接把剩下的高度都占满。

  

#box{ width: 100% height: 100% display: flex flex-direction: column}.header{ height: 100px}.content{ flex-grow: 1 // 这里的这个属性 因为之前用这个用的少,所以没有想到,这个属性是定义项目放大比例,默认是0,将他规定一下,然后就会把剩余的空间都给占掉}.footer{ height: 200px}<div id="box"> <div class="header"></div> <div class="content"></div> <div class="footer"></div></div>

 

  重点的是中间的那一部分,因为中间部分下面的表格部分超出之后要出现滚动条,所以就是表格内容的高度的父元素的高度我拿不准,最开始直接用的是rem给写死了,后来发现有很多弊端,因为是第一次写这样的页面所以讲下面的那个没有考虑到的属性。

  中间的部分分为两部分,黄色的一部分,六个框框,用的弹性盒子,把他们的宽度写成百分比平分,三个分一行,用的33.3%,

  大概代码就是下面的样子的。

  

ul{ display: flex flex-wrap: wrap}ul li{ width: 33.3% height: xxx}<ul> <li></li> <li></li> <li></li> <li></li> <li></li> <li></li></ul>

  下面的那个表格要超出出现滚动条,刚才说了我第一次布局的过程中把他父元素的高度给写死了,然后在自适应的过程中出现了一些问题,可以把中间的部分也写成一个弹性盒子,然后上面的那个八个黄色框框的父元素高度给定住,然后下面的部分用到那个flex-grow属性,直接把下面的那一些东西都给占住。

  大概和最开始头部中间部分底部的布局差不多。

  

 

  页面二

  

 

  还是只看中间的部分吧

  中间的部分是左右划分的,所以也可以使用弹性盒子,左右的宽度用百分比规定好, 30%  70% 然后就可以横排显示,注意写好他们的高度

  右边部分又分为上下两部分

  这里是右边上半部分的布局,写的好多了,所以也就没有考虑其他的东西了,左右部分大概就两种写法了我

  第一种

    左边用rem固定死, 右边使用flex-grow 分配多余的剩余的空间。

  第二种

    两部分都使用百分比

   里面的小东西在使用自己的方式写就好了,右边的绿色的也可以使用弹性盒子。

页面三

  

  也是只介绍一下中间的部分吧。分为左右部分,然后内容超出之后也要出现滚动条。

  这一种的头部,内容部分,底部用到的还是最开始讲的那种,中间部分占掉剩余下来的空间。

  中间的部分分为左右两部分,高度的话因为使用了flex-grow这个东西,所以把黄色盒子应该还有一个父元素和他一样大,不说了,上代码吧

  这里大概模拟一下中间的代码

这个就是中间的所有的东西,大概就是content的高度是中间部分的实际高度, 左部分 div.left部分的东西的高度写成100%,适应到中间部分的所有高度,然后设置超出产生滚动条  overflow:scroll,里面的ul就直接那样就可以了,把ul设置成弹性盒子,然后里面的东西多的话就会超过 div.left的高度,然后就会产生滚动条了,同理 右边的大概也是这样的。

  感觉今天会加班,然后头有点疼就想写点东西,没想到直接可以下班了~~~

  坚持写完了,如果你看了我的文章学到了东西我会非常高兴的,回家咯 嘿嘿

 

1 0 9)