怎样让弹性盒子元素高度不受父元素影响

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎样让弹性盒子元素高度不受父元素影响相关的知识,希望对你有一定的参考价值。

让弹性盒子元素高度不受父元素影响
1. 因为子元素时按照主轴方向排列的,所以我们需要改变主轴方向来改变排列方式 flex-direction(主轴方向): row(默认值):主轴横向,从左向右 row-reverse:主轴
2. 因为子元素在弹性盒模型里默认不换行,需要设置 flex-wrap 来使它换行 flex-wrap: 1.wrap:换行,虽然换行但是会在评分父级高度处换行(flex
3. 在主轴的排列方向 justify-content 主轴起点为mian start,终点为mian end 在不动主轴的情况下justify-content: flex-end:右对齐 flex-start(默认值
参考技术A 怎么是弹性盒子
长久以来,CSS 布局中唯一可靠且跨浏览器兼容的创建工具只有 float 和 position。这两个工具大部分情况下都很好使,但是在某些方面它们具有一定的局限性,让人难以完成任务。

以下简单的布局需求是难以或不可能用这样的工具方便且灵活的实现的:

在父内容里面垂直居中一个块内容。
使容器的所有子项占用等量的可用宽度/高度,而不管有多少宽度/高度可用。
使多列布局中的所有列采用相同的高度,即使它们包含的内容量不同。
这些弹性盒子都可以实现。。。我草

指定元素的布局为弹性盒子
首先,我们需要给父元素设置display:flex

div
display:flex


<style>
.parent
width:500px;
height:200px;
background-color:coral;
display:flex; /*弹性盒子*/

.parent div
width:100px;
height:100px;
background-color:blueviolet;

</style>

<div class="parent">
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
</div>

弹性盒子Flex Box滚动条原理,避免被撑开,永不失效

在HTML中,要实现区域内容的滚动,只需要设定好元素的宽度和高度,然后设置CSS属性overflow 为auto或者scroll:

 

 
技术图片

在Flex box布局中,有时我们内容的宽度和高度是可变的,无法确定下来,这时候设置滚动条,可能会失效。只要记住几个关键要素,就可以解决这个问题。

1、清楚的知道当前元素的flex flow

如果要设置水平滚动条,那么父元素的flex-flow要设置为row,如果要设置纵向滚动条,那么父元素的flex-flow要设置为column。

2、flex设置为1

3、滚动方向的大小(宽度或者高度)设置为0,非滚动方向大小设置为100%或者一个你喜欢的宽度

 

 
技术图片

这样设置,基本就可以愉快的滚动了。

有时嵌套层数太多,可能也会失效,这时候记住另外一个关键点:

4、设置父元素的大小

如果父元素大小不清晰,也会出现滚动条失效的问题,所以需要把父元素的大小设置明白。如果父元素也是可变大小的,那么要保证嵌套的flex-flow全部一直,然后宽度或者高度设置为0,这样就可以正常滚动。像我的这个例子:

 

 
技术图片

5、如何横向和纵向全都跟随flex滚动,这个比较麻烦,一个方向用上述方法,另外一个方向用calc函数来计算吧。

我的github上有个例子:https://github.com/vularsoft/studio-ui

里面的html-demo.html文件是一个完全由flex box实现的布局,感兴趣的可以参考。

以上是关于怎样让弹性盒子元素高度不受父元素影响的主要内容,如果未能解决你的问题,请参考以下文章

弹性盒子详解

弹性盒子笔记总结

C3弹性盒子及弹性布局

4. css弹性盒子模型

盒子属性

弹性布局