css开始从定义的位置重复背景

ili*_*ica 7 css background repeat

#container{
    background:url(images/bg-main.png) repeat-y;
    width: 903px; 
    background-position: 0px 687px;
    background-position: bottom;
    height: 1200px;
    margin-left: auto;
    margin-right: auto;
    }   
#content{
    background:url(images/bg-wood.png) repeat-y;
    width: 903px; 
    height: 678px;
    margin-left: auto;
    margin-right: auto;
    }
Run Code Online (Sandbox Code Playgroud)

#contentdiv在#containerdiv 里面.我想#container从背面开始以687px从顶部开始重复.可能吗?

编辑:div的前x个像素(从顶部)是否有可能有emtpy空间,x像素背景开始后?

cla*_*uzy 7

据我所知,你不可能如何做到这一点,repeat-x和repeat-y将沿着轴重复两个方向的图像

如果你重复容器背景全长,内容div背景图像无论如何不掩盖第一个678px?

你可以在JSFiddle中提供代码,这样我们就可以看到你想要实现的效果会有一种方法;)


Azi*_*ziz 5

您可以使用伪元素(::before::after)来实现这一点并利用calc()偏移量。

伪元素将为您提供更多控制,不会影响内容,并且不需要额外的 HTML 标记。

这是一个距离顶部 100px 偏移的基本示例:

.background {
  height: 300px;
  border:1px solid;
  position: relative;
}

.background::before {
  content: '';
  position: absolute;
  bottom: 0;
  left: 0;
  height: calc(100% - 100px);
  width: 100%;
  display: block;
  box-sizing: border-box;
  background: url(//placehold.it/100x100);
}
Run Code Online (Sandbox Code Playgroud)
<div class="background"></div>
Run Code Online (Sandbox Code Playgroud)

您还可以使用相同的技术从左侧偏移:

.background {
  height: 300px;
  border:1px solid;
  position: relative;
}

.background::before {
  content: '';
  position: absolute;
  bottom: 0;
  right: 0;
  height: 100%;
  width: calc(100% - 100px);
  display: block;
  box-sizing: border-box;
  background: url(//placehold.it/100x100);
}
Run Code Online (Sandbox Code Playgroud)
<div class="background"></div>
Run Code Online (Sandbox Code Playgroud)

或者甚至从两个方向(也相反!):

.background {
  height: 300px;
  border:1px solid;
  position: relative;
}

.background::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  height: calc(100% - 100px);
  width: calc(100% - 100px);
  display: block;
  box-sizing: border-box;
  background: url(//placehold.it/100x100);
}
Run Code Online (Sandbox Code Playgroud)
<div class="background"></div>
Run Code Online (Sandbox Code Playgroud)


Far*_*ker 1

background : url('image path') 0px 287px repeat-y;
Run Code Online (Sandbox Code Playgroud)

这将从顶部 287 像素处垂直重复您的背景图像。

但另一种方法是将其设置为您的内容 div :

margin-top:287px;
Run Code Online (Sandbox Code Playgroud)

你最好的解决方案是这样做:

#container{
    position:relative;
    }


#background{
    background:url('image url');
    position:absolute;
    top:287px;
    left:0px;
    z-index:100;
    }  

#content{
    position:absolute;
    top:0px;
    left:0px;
    z-index:99999;
    }
Run Code Online (Sandbox Code Playgroud)

  • 第一个解决方案是不正确的,不应保留为答案的一部分。 (3认同)
  • 你的第一个建议确实有效。287px 0px - 这里的第一个值是水平位置,而不是垂直位置。但是,第二个解决方案似乎没问题,我必须使用 jquery 定义它的高度 (2认同)