我最近在Windows 10的Chrome 69中遇到Bootstrap's card columns 的问题。即,将.card-columns
与.list-group
和.list-group-item
组合在一起时,然后使用overflow: auto
和任意max-height
值在列表组上启用溢出。
它比这更具体。第二张卡必须是第一张卡的兄弟。然后,滚动到第一张卡的底部,使这些项目不可交互/不可点击。
/* obviously not showing Bootstrap styles */
.list-group {
overflow: auto;
max-height: 128px;
}
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" rel="stylesheet"/>
<div class="card-columns">
<!-- Card 1 -->
<div class="card">
<div class="card-header">Overflow Card 1</div>
<div class="list-group list-group-flush">
<a class="list-group-item list-group-item-action" href="#">Item 1</a>
<a class="list-group-item list-group-item-action" href="#">Item 2</a>
<a class="list-group-item list-group-item-action" href="#">Item 3</a>
<a class="list-group-item list-group-item-action" href="#">Item 4</a>
<a class="list-group-item list-group-item-action" href="#">Item 5</a>
<a class="list-group-item list-group-item-action" href="#">Item 6</a>
<a class="list-group-item list-group-item-action" href="#">Item 7</a>
<a class="list-group-item list-group-item-action" href="#">Item 8</a>
<a class="list-group-item list-group-item-action" href="#">Item 9</a>
<a class="list-group-item list-group-item-action" href="#">Item 10</a>
</div>
</div>
<!-- Card 2 -->
<div class="card">
<div class="card-header">Overflow Card 2</div>
<div class="list-group list-group-flush">
<a class="list-group-item list-group-item-action" href="#">Item 1</a>
<a class="list-group-item list-group-item-action" href="#">Item 2</a>
<a class="list-group-item list-group-item-action" href="#">Item 3</a>
<a class="list-group-item list-group-item-action" href="#">Item 4</a>
<a class="list-group-item list-group-item-action" href="#">Item 5</a>
<a class="list-group-item list-group-item-action" href="#">Item 6</a>
<a class="list-group-item list-group-item-action" href="#">Item 7</a>
<a class="list-group-item list-group-item-action" href="#">Item 8</a>
<a class="list-group-item list-group-item-action" href="#">Item 9</a>
<a class="list-group-item list-group-item-action" href="#">Item 10</a>
</div>
</div>
</div>
好吧,还在吗?考虑到所有这些,我决定一一消除Bootstrap样式。排除法。完美,我可能只是在做些愚蠢的事情。
/* stripped down Bootstrap styles, plus styles from earlier */
body { font-family: sans-serif; padding: 1rem; }
.card-columns {
column-count: 3;
}
.list-group {
max-height: 256px;
overflow: auto;
}
.list-group-item {
/* problem style */
position: relative;
/* -------------*/
display: block;
padding: .75rem 1.25rem;
}
.list-group-item:hover {
background-color: #eee;
}
<div class="card-columns">
<!-- Card 1 -->
<div class="card">
<div class="card-header">Overflow Card 1</div>
<div class="list-group list-group-flush">
<a class="list-group-item list-group-item-action" href="#">Item 1</a>
<a class="list-group-item list-group-item-action" href="#">Item 2</a>
<a class="list-group-item list-group-item-action" href="#">Item 3</a>
<a class="list-group-item list-group-item-action" href="#">Item 4</a>
<a class="list-group-item list-group-item-action" href="#">Item 5</a>
<a class="list-group-item list-group-item-action" href="#">Item 6</a>
<a class="list-group-item list-group-item-action" href="#">Item 7</a>
<a class="list-group-item list-group-item-action" href="#">Item 8</a>
<a class="list-group-item list-group-item-action" href="#">Item 9</a>
<a class="list-group-item list-group-item-action" href="#">Item 10</a>
</div>
</div>
<!-- Card 2 -->
<div class="card">
<div class="card-header">Overflow Card 2</div>
<div class="list-group list-group-flush">
<a class="list-group-item list-group-item-action" href="#">Item 1</a>
<a class="list-group-item list-group-item-action" href="#">Item 2</a>
<a class="list-group-item list-group-item-action" href="#">Item 3</a>
<a class="list-group-item list-group-item-action" href="#">Item 4</a>
<a class="list-group-item list-group-item-action" href="#">Item 5</a>
<a class="list-group-item list-group-item-action" href="#">Item 6</a>
<a class="list-group-item list-group-item-action" href="#">Item 7</a>
<a class="list-group-item list-group-item-action" href="#">Item 8</a>
<a class="list-group-item list-group-item-action" href="#">Item 9</a>
<a class="list-group-item list-group-item-action" href="#">Item 10</a>
</div>
</div>
</div>
在这里很有趣。归结为从column-count
中删除.card-columns
或从position
中删除.list-group-item
。如果您在正确的环境中,运行CodePen将防止激活.list-group-item:hover
样式(遵循上述规则)。
我不喜欢这么长的问题。我很少读它们。所以,我是伪君子,我以为我会挖掘你们的大脑。 我相当确定这是一个Chrome错误。此代码在Firefox和Edge中均可正常运行。 (我似乎无法在Chromium Bug跟踪器上进行快速搜索找到任何东西,这似乎是一个非常极端的情况,可能没有意义继续前进。)
哦,调整页面大小或双击选择不可用的列表项必须强制进行某种重绘/布局,因为此后不存在问题。啊。
我希望您可以指出某个地方的现有错误报告,此问题的解决方法,或证明我的计算机只是被困扰。
感谢您阅读本文。期待您的回复!
将column-count
,overflow:auto
和position:relative
结合使用会使Chrome 69在十月份的风格上令人毛骨悚然。发送帮助。
我的问题由社区进行了编辑,以使SO代码段优于CodePen。在SO代码段中,调整页面大小不会导致列表如上所述重新绘制。但是,在the original CodePen上调整预览窗格的大小将重现这些结果。琐碎,但值得一提。
今天上午在macOS Mojave上进行了测试。 Chrome中存在问题,但Firefox 62或Safari 12中没有问题。因此,这不是webkit或Windows所孤立的问题。我决心雕刻南瓜,完全避免使用position属性。
答案 0 :(得分:0)
在macOS上的Chrome 71 Canary中不存在此问题。我将假设此问题已解决,并将最终解决。