我一直在尝试使用伪元素::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;
}
有没有一种方法可以使背景图像在居中时溢出屏幕?
答案 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>
只需使顶部与底部相同,并与右侧相同,即可使背景居中