如何使用伪元素使背景图像溢出div

时间:2019-04-23 22:58:31

标签: html css

我一直在尝试使用伪元素::before使背景图像从容器中溢出,但是没有达到我想要的效果。

放大或缩小时,我的背景似乎偏向左侧而不是指定的中心。我也尝试过做left:40%,但随后创建了我不想要的水平滚动条。

.hero{
    display:flex;
    justify-content: center;
    align-items: center;
    flex-direction: column;
}

.hero::before{
    content:" ";
    background:url("URL");
    background-size:cover;
    background-repeat: no-repeat;
    background-position:bottom center;
    display:block;
    position: absolute;
    width:100%;
    height: 700px;
    top: -220px;
    z-index: -2;
    padding:100px;
    margin:-100px;
}

有没有一种方法可以使背景图像在居中时溢出屏幕?

1 个答案:

答案 0 :(得分:1)

设置width:100%是一个问题,因为它将宽度定义为与父元素相同,然后您只需将图像的负边距向左移动即可。宽度上也添加了填充。

相反,您可以像下面这样简单地考虑顶部/左侧/右侧/底部:

.hero{
    width:50px;
    height:50px;
    margin:150px;
    border:5px solid red;
    position:relative;
}

.hero::before{
    content:" ";
    background:url("https://picsum.photos/800/1000");
    background-size:cover;
    background-repeat: no-repeat;
    background-position:bottom center;
    position: absolute;
    top: -100px;
    bottom:-100px;
    left:-100px;
    right:-100px;
    z-index: -1;
}
<div class="hero">

</div>

只需使顶部与底部相同,并与右侧相同,即可使背景居中