背景图像可以大于 div 本身吗?

Posted

技术标签:

【中文标题】背景图像可以大于 div 本身吗?【英文标题】:Can a background image be larger than the div itself? 【发布时间】:2011-05-15 22:02:06 【问题描述】:

我有一个 100% 宽度的页脚 div。它大约 50 像素高,具体取决于其内容。

是否可以给那个#footer 一个背景图片,这种图片会溢出这个div?

图片大小约为 800x600px,我希望它位于页脚的左下角。它应该有点像我网站的背景图片,但我已经在我的身体上设置了背景图片。我需要在我的网站左下角放置另一张图片,#footer div 非常适合。

#footer 
    clear: both;
    width: 100%;
    margin: 0;
    padding: 30px 0 0;
    background:#eee url(images/bodybgbottomleft.png) no-repeat left bottom fixed;

图像设置为页脚,但不会溢出 div。有可能实现吗?

overflow:visible 不能胜任!

【问题讨论】:

【参考方案1】:

您可以使用本文所示的 css3 伪元素(:before 和/或 :after

https://www.exratione.com/2011/09/how-to-overflow-a-background-image-using-css3/

祝你好运……

【讨论】:

我更喜欢这种方法,因为它不会干扰#wrapper 元素的定位(例如,如果您需要将其与margin: 0 auto; 居中)【参考方案2】:

使用 trasform: scale(1.1) 属性使背景图像变大,用 position: relative 向上移动;顶部:-10px;

<div class="home-hero">
    <div class="home-hero__img"></div>
</div>

.home-hero__img
 position:relative;
    top:-10px;
    transform: scale(1.1);
    background: 
        size: contain;
        image: url('image.svg');
    

【讨论】:

【参考方案3】:

使用背景大小的封面对我有用。

#footer 
    background-color: #eee;
    background-image: url(images/bodybgbottomleft.png);
    background-repeat: no-repeat;
    background-size: cover;
    clear: both;
    width: 100%;
    margin: 0;
    padding: 30px 0 0;

显然要注意支持问题,请查看我可以使用:http://caniuse.com/#search=background-size

【讨论】:

【参考方案4】:

不,你不能。

但作为一个可靠的解决方法,我建议将第一个 div 分类为 position:relative 并使用 div::before 创建包含您的图像的底层元素。分类为position:absolute,您可以将其移动到相对于初始 div 的任何位置。

不要忘记向该新元素添加内容。举个例子:

div 
  position: relative;
    

div::before 
  content: ""; /* empty but necessary */
  position: absolute;
  background: ...

注意:如果您希望它位于父 div 的“顶部”,请改用 div::after

【讨论】:

它对您有什么作用? position absolute 使元素位于“before”块的每个未定位的兄弟元素之上,即 div 的全部内容【参考方案5】:

有一个非常简单的技巧。将该 div 的内边距设置为正数,边距设置为负数

#wrapper 
     background: url(xxx.jpeg);
     padding-left: 10px;
     margin-left: -10px;

【讨论】:

谢谢,我认为这应该被接受。【参考方案6】:

您提到body 上已经有背景图片。

可以html 上设置背景图片,在body 上设置新图片。这当然取决于您的布局,但您不需要为此使用页脚。

【讨论】:

【参考方案7】:

This could help。 它要求页脚高度为固定数字。基本上,您在页脚 div 中有一个 div,它是正常内容,position: absolute,然后是带有position: relative 的图像,一个负的z-index,所以它保持“低于”所有内容,一个负的top 值为页脚的高度减去图像高度(在我的示例中,50px - 600px = -550px)。在 Chrome 8、FireFox 3.6 和 IE 9 中测试。

【讨论】:

【参考方案8】:

并非如此 - 背景图像受其应用的元素的限制,溢出属性仅适用于元素内的内容(即标记)。

不过,您可以在页脚 div 中添加另一个 div 并将背景图像应用到该 div 中,然后让其溢出。

【讨论】:

【参考方案9】:

我不相信你可以让背景图片溢出它的 div。放置在 Image 标签中的图像可能会溢出其父 div,但背景图像受其作为背景的 div 的限制。

【讨论】:

以上是关于背景图像可以大于 div 本身吗?的主要内容,如果未能解决你的问题,请参考以下文章

拖动背景图像

CSS3背景大小和背景位置问题

使用背景图像或 CSS3 渐变更好吗? (电话间隙)

我可以只为 div 的背景图像设置不透明度吗?

div可以同时设置背景图片和背景颜色吗?

php 将后缩略图作为背景图像添加到任何div