新答案:使用伪元素来帮助
根据您的评论,这是我认为满足您需求的新小提琴。它添加了我标记的额外div
包装,以及以下 css:.columns
.scroller
html {
height: 100%;
}
body {
margin: 0;
padding: 0;
height: 100%;
}
.main {
background: yellow;
overflow: hidden;
width: 100%;
height: 100%;
position: relative;
}
.main:after {
content: '';
position: absolute;
top: 0;
right: 0;
left: 0;
height: 120px; /* match columns */
background: red;
z-index: 0;
}
.scroller {
overflow-y: hidden;
overflow-x: auto;
height: 100%;
position: relative;
z-index: 1;
}
.columns {
-webkit-column-fill: auto;
-webkit-column-width: 300px;
-webkit-column-gap: 40px;
-moz-column-fill: auto;
-moz-column-width: 300px;
-moz-column-gap: 40px;
height: 120px;
padding: 0 20px;
text-align: justify;
width: auto;
}
.columns > p:last-of-type:after {
content: '';
display: block;
width: 20px;
height: 1px;
float: right;
margin-right: -20px;
margin-top: -1px;
}
我使用一个伪元素.main
来将背景.columns
设置为您打算为它们设置的显式高度,然后我还在最后一个伪元素中使用另一个伪元素p
来强制渲染列的最后 20px。无论占用多长时间或占用什么部分,它都应该起作用,并且如果它恰好位于文本列的末尾height: 1px
,margin-top: -1px
则不应生成新列。
原始答案:移动溢出并设置右边距
要获得background
传输,您需要更改一些 CSS,即:
.main {
overflow: hidden;
width: 100%;
}
.columns {
overflow-x: auto;
}
这似乎是因为.column
背景受到原始代码中水平滚动条控制的100%
宽度的限制。.main
通过.main
完全隐藏,然后设置overflow-x: auto
on .columns
,滚动现在由.columns
div 控制,并允许其background
被看到。
为了解决最右侧没有填充的问题,我唯一能想到的就是添加以下内容:
.columns > p:last-of-type {
margin-right: 20px;
}
p
这会在直接子元素的最后一个元素上放置一个右边距.columns
,然后给出我假设你想要的外观。
这是修改后的小提琴(仅在 Firefox 中测试)。