使用flex制作滚动列表
使用flex制作滚动列表
因为自己在做一点小东西,所以就有个需求,一个元素里面需要有两个子元素,两个子元素竖排排列,第二个子元素里面的内容不定长,需要做滚动,但第二个元素的高度需要自适应。
在学习的过程稿发现flex和overflow挺有意思的,特此记录下来。
代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<div class="parent">
<div style="height: 200px; background: #66ccff">标题</div>
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
</ul>
</div>
<style>
* {
padding: 0;
margin: 0;
}
.parent {
display: flex;
flex-direction: column;
height: 500px;
overflow: hidden
}
ul {
overflow: auto;
height: 100%;
}
li {
height: 200px;
border: 1px solid #ccc;
}
</style>
</body>
</html>效果
标题
- 1
- 2
- 3
- 4
- 5
- 6
分析
首先是.parent。将display设置为弹性布局,并且规定了布局方向为竖排,对于溢出元素的处理方式设置为隐藏。这样的情况下,html就会将这个元素里面的布局重置,保证了里面的元素可以自适应高度,不会出现子元素与父元素高度相同的情况,并且对于移除内容进行了隐藏
第二就是ul。对于其中ul其中的溢出元素做了自动处理,实际上是将溢出元素设置为滚动,这样ul里面的元素就可以进行滚动。
第三要注意height。如果要求ul为自适应,则height一定为100%(或者inherit),并且父级元素需要显式的设置高度,不能为auto
使用flex制作滚动列表
https://note.0moe.cn/前端/2019/11/03/使用flex制作滚动列表/