New Answer: Use Pseudo-Elements to Help
Based on your comments, here is new the fiddle that I believe meets your desires. It adds an extra div
wrapping .columns
I labeled .scroller
, and the following css:
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;
}
I use a pseudo-element in .main
to give the background for .columns
set to the explicit height you intend for those, then I also use another pseudo-element in the last p
to force rendering the final 20px of the column. It should work no matter how long or what part it takes up, and at height: 1px
and margin-top: -1px
it should not generate a new column if it falls right at the end of a column of text.
Original Answer: Move Overflow and Set a Right Margin
To get the background
to transfer, you need to change some CSS, namely:
.main {
overflow: hidden;
width: 100%;
}
.columns {
overflow-x: auto;
}
This seems to be because the .column
background is being limited by the 100%
width on the .main
which is in control of the horizontal scroll bar in your original code. By making .main
purely hidden, then setting overflow-x: auto
on .columns
, the scroll is now controlled by the .columns
div, and allows its background
to be seen.
To fix the absence of padding on the far right side, the only think I could come up with was to add the following:
.columns > p:last-of-type {
margin-right: 20px;
}
This puts a right margin on the last p
element of the immediate children of .columns
which then gave the look I assume you are going for.
Here's the fiddle modified (tested only in Firefox).
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…