gpt4 book ai didi

html - div 中垂直对齐的多行元素,溢出时滚动

转载 作者:行者123 更新时间:2023-11-28 01:40:14 24 4
gpt4 key购买 nike

我正在尝试将一组元素(每个元素可能是多行)垂直对齐到 div 的中间,并且还滚动溢出。我可以通过 display:table 和 display:table-cell 垂直对齐多行内容,但这似乎禁用了任何溢出处理。另外,我尝试使用行高技巧(将行高设置为包含的 div 的高度),但垂直对齐方式似乎不适用于多行内容。

是否存在纯 CSS 解决方案?

这是一个说明我正在努力实现的目标的 fiddle :

http://jsfiddle.net/arxoq7oq/1/ (更新)

这是我的 html:

<body>
<p>Goal: Vertically align to middle with scroll upon overflow - Scenarios A and B need to be handled with the same code (unlike currently):</p>
<div class="frame">
Scenario A
<div class="container green">
<div class="item-list1">
<div class="item">Item 1</div>
<div class="item">Item 2 might wrap to multiple lines</div>
</div>
</div>
</div>
<div class="frame">
Scenario B
<div class="container green">
<div class="item-list2">
<div class="item">Item 1</div>
<div class="item">Item 2 might wrap to multiple lines</div>
<div class="item">Item 3</div>
<div class="item">Item 4</div>
<div class="item">Item 5</div>
<div class="item">Item 6</div>
<div class="item">Item 7</div>
</div>
</div>
</div>

<p>Can achieve vertical alignment to middle, but overflow scroll doesn't work:</p>
<div class="frame">
Scenario A
<div class="container green">
<div class="item-list1">
<div class="item">Item 1</div>
<div class="item">Item 2 might wrap to multiple lines</div>
</div>
</div>
</div>
<div class="frame">
Scenario B
<div class="container red">
<div class="item-list1">
<div class="item">Item 1</div>
<div class="item">Item 2 might wrap to multiple lines</div>
<div class="item">Item 3</div>
<div class="item">Item 4</div>
<div class="item">Item 5</div>
<div class="item">Item 6</div>
<div class="item">Item 7</div>
</div>
</div>
</div>

<p>Can achieve overflow scroll, but vertical alignment to middle doesn't work:</p>
<div class="frame">
Scenario A
<div class="container red">
<div class="item-list2">
<div class="item">Item 1</div>
<div class="item">Item 2 might wrap to multiple lines</div>
</div>
</div>
</div>
<div class="frame">
Scenario B
<div class="container green">
<div class="item-list2">
<div class="item">Item 1</div>
<div class="item">Item 2 might wrap to multiple lines</div>
<div class="item">Item 3</div>
<div class="item">Item 4</div>
<div class="item">Item 5</div>
<div class="item">Item 6</div>
<div class="item">Item 7</div>
</div>
</div>
</div>
</body>

这是我的 CSS:

body {
margin:0;
padding:0;
font-family:Arial;
font-size:100%;
}

.green {background:chartreuse;}

.red {background:crimson;}

.frame {display:inline-block;}

.container {
display:table;
width:10em;
height:10em;
}

.item-list1 {
display:table-cell;
width:100%;
height:100%;
vertical-align:middle;
overflow-y:auto; /* Does nothing with table-cell*/
}

.item-list2 {
width:100%;
height:100%;
overflow-y:auto;
vertical-align:middle; /* Does nothing without table-cell */
}

.item {
margin:1em;
}

最佳答案

老实说,我并不完全理解这种技术为何以及如何起作用,但它确实起作用了!!!!!!!它基于 this article 末尾描述的对齐技术。 .

有关结果,请查看此 JSFiddle .请注意场景 A 和 B 的第一个示例如何应用相同的类!!!

这是完成这项工作的 css:

.container {
display:block;
width:10em;
height:10em;
overflow: auto;
}
.container:before{
content: '';
display: inline-block;
height: 100%;
vertical-align: middle;
}
.item-list1 {
display:inline-block;
width: 8em;
vertical-align:middle;
}

关于html - div 中垂直对齐的多行元素,溢出时滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26575720/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com