背景重复:垂直重复;起始位置CSS。

4
我在一个单一的 div 中使用了两个背景。顶部背景具有固定的高度和宽度,并且不重复,但是它具有透明度。底部背景是 1px 高的白线,需要进行 repeat-y。但是,由于 repeat-y 占用了包含 div 的整个高度。它也位于透明的顶部背景图像后面。是否可能使底部图像仅在顶部背景下方开始重复,而不是在左上角开始?
哦,我只允许编辑 Css 文件,所以添加 div 不是选项。
.box_area {
    width:925px;
    background: url(../../images/verloop.png), url(../../images/whiteback.png);
    background-position: 0px 0px, 0px 284px;
    background-repeat: no-repeat, repeat-y;
    padding-left:25px;
    margin-left: 25px;
    padding-right:7px;
    float:left;
}

这是我现在的代码,但背景位置目前没有任何作用。
有人能帮助我吗?

你能为此设置一个 JSfiddle 吗? - James King
检查CSS属性background-size - Pugazh
我可以试试,但是我无法接触HTML文件。而且重建起来相当困难呢 :P - Goos van den Bekerom
@SyncCircles 当CMS创建的页面大于模板时,它需要在高度上保持重复,因此我无法设置静态高度。如果这有意义的话。 - Goos van den Bekerom
background-size CSS 属性指定了背景图片的大小。请参考 https://developer.mozilla.org/zh-CN/docs/Web/CSS/background-size。 - Pugazh
1个回答

6
您可以使用 :before 选择器来添加一个伪元素,并定位和样式化它,以实现您提到的第二个背景。假设第一个背景的高度为518px,则以下是放置第二个背景的示例CSS。
.box_area {
    width:925px;
    background: url(../../images/verloop.png);
    background-position: 0px 0px, 0px 284px;
    background-repeat: no-repeat;
    padding-left:25px;
    margin-left: 25px;
    padding-right:7px;
    float:left;
    position: relative;
}
.box_area:before {
    content: "";
    height: calc(100% - 518px);
    width: 100%;
    background: url(../../images/whiteback.png);
    background-repeat: repeat-y;
    display: block;
    position: absolute;
    top: 518px;
    z-index: -1;
    margin-left:-25px; /* This is to counter the 25px left-padding in .box-container div */
}

稍微改动一下,这个效果还不错,但是100%的高度会占据整个屏幕的高度而非内容的高度。因此,如果我们的CMS创建了更高的内容,背景将停止。有什么想法吗? - Goos van den Bekerom
如果您在伪元素中指定height:100%,它将生成第二个元素,其高度与“. box_area”元素相同(我想这就是为什么当内容较少时会看到它占用整个屏幕的原因)。但是,由于我们正在指定top:518px,即在“. box_area”元素顶部以下518像素处放置此伪元素,因此我指定高度比100%小518像素,height: calc(100% - 518px);。请注意,我已将518像素视为verloop.png的高度。在上面的两个位置替换该数字为该图像的实际高度。 - Rohan Doshi
@GoosvandenBekerom将position: relative设置为父元素。 - Alex78191

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接