当前位置: 首页 > 科技观察

容易被忽略的Flex属性是Align-Content

时间:2023-03-21 01:43:54 科技观察

本文转载自微信公众号《微信大学前端技术》,作者严冬。转载本文请联系微一大学前端技术公众号。背景最近在做一个项目,页面的css写的太多了。我基本使用的是flex布局,我用的flex布局里面的属性非常有限。基本上我只用了flex-direction,justify-content,align-items这三个容器属性最多涉及到被挤压的图片。使用flex-shrink:0;的子项目,以防止图像被挤压。就在我输入justify-content:space-between;的时候面无表情地听着音乐,脑子里好像有两个小人在吵架:Jerry:我不能用其他不用的flexproperties哦!汤姆:不是不能用!班车太好玩了!杰瑞:枯木难雕!汤姆:枯木还可以烧!Jerry:...想了想,Tom好像觉得Jerry说的有道理,多种方式,实在是没法写出来给别人琢磨(不懂,<-_<-).flex容器属性的align-content这里不再赘述flex容器属性和项目属性。网上有很多文章解释的很清楚。推荐阮一峰-flex布局很巧妙。汤姆刚刚读了阮先生的文章。当谈到对齐内容时,它会感到困惑。你是什??么意思?虽然画了图,但是不练习,就跟看健身视频以为自己能减肥一样!于是,Tom开始学习align-content。阮老师说:“align-content属性定义了很多根轴的对齐方式。如果item只有一个轴,这个属性没有作用。”Tom想,flex布局有一个主轴和一个交叉轴,这是flex布局默认的两个轴。那么如何定义为多轴呢?经过汤姆的反复练习,他终于发现了规律。原来需要显式定义布局方向,例如:1

1
2
2
334455##横轴:定义容器的布局方向flex-direction:row;.flex-container{height:400px;display:flex;flex-flow:rowwrap;/*一定要定义一个方向,才能形成多轴*/align-content:flex-end;/*改变align-content的值,体验不同的效果*/background:gray;}.flex-item{white-space:nowrap;margin-right:10px;margin-bottom:10px;text-align:end;}.flex-item-1,.flex-item-3{width:60px;height:80px;background:lightcoral;}.flex-item-2,.flex-item-4{width:90px;height:40px;background:lightblue;}.flex-item-5{width:105px;height:20px;background:lightgreen;}align-content:flex-start效果对齐-content:flex-endeffectalign-content:centereffectalign-content:space-aroundeffectalign-content:space-betweeneffectalign-content:stretcheffectTom:WTF?!拉伸不是为了填满容器吗?它不起作用!阮老师画的图也满满的,怎么这么好笑?!文档中没有其他内容!这时候Tom看了一眼align-items的值,也有拉伸,这里阮老师说:“如果项目的高度没有设置或者设置为auto,就会占满整个容器的高度”Tom:align-content的stretch属性应该和这里的意思一样,验证一下!Tom回去看了下子项目的css,发现每个item都设置了高度。删除这些高度或将它们更改为自动。试一试:当子项高度改为auto时,align-content:stretch效果Tom:就是这样!只有item-1和item-3改了高度auto,发现被拉伸了,而其他没有修改高度的孩子还是没有拉伸。汤姆终于发现了其中的奥秘!!Tom又想了想,这是水平布局方向,垂直的表现如何?让我们来看看。垂直横轴:定义容器的布局方向flex-direction:column;align-content:flex-start效果align-content:flex-end效果说明当布局方向设置为column时,体现align-content的表现在水平方向?如果是center,就是水平居中?Try!!align-content:centereffectalign-content:space-aroundeffectalign-content:space-betweeneffectalign-content:stretcheffect总结经过一番实战,Tom也算是找到规律了。对于容器属性align-content,其生效的条件是:必须显式设置布局方向。如果布局方向为横轴:flex-direction:row;1、此时align-content的变化体现在垂直方向2。如果你想要对齐内容:拉伸;要生效,您应该删除子项的高度或将子项的高度设置为自动。如果布局方向是垂直横轴:flex-direction:column;1.这时候,align-content的变化体现在水平方向上2.如果要align-content:stretch;要生效,您应该删除子项的宽度或将子项的宽度设置为自动。这次汤姆看到了杰瑞汤姆:嘿!Jerry,我学到了flex的一个新属性,align-content,你可以去我的博客看看。杰瑞:哦,我明白了!棒极了!坚持下去,找到更多有趣的flex属性。汤姆:好主意!下次我会做的!谢谢你!杰瑞:我的荣幸!