如何显示全高度的背景图片?

59

我有一张照片类型(非横向)的背景图片,宽度为979像素,高度为1200像素。我想将其设置为左浮动,并显示100%的全图高度固定,无需上下滚动(无论内容长度如何)。

这是我的CSS代码,但它没有起作用:

img, media {
    max-width: 100%;
}

body {
    background-color: white;
    background-image: url('../images/bg-image.jpg');
    background-size: auto 100%;
    background-repeat: no-repeat;
    background-position: left top;
}

2
像这样吗? - Zach Saucier
1
请定义 "not working"。 - showdev
5个回答

104
你可以使用已有的代码,只需要确保将 htmlbody 的高度设置为100%即可。
示例: http://jsfiddle.net/kevinPHPkevin/a7eGN/
html, body {
    height:100%;
} 

body {
    background-color: white;
    background-image: url('http://www.canvaz.com/portrait/charcoal-1.jpg');
    background-size: auto 100%;
    background-repeat: no-repeat;
    background-position: left top;
}

1
谢谢。我一直想知道为什么这有时候能工作。现在我知道了:D - Alexandre Bourlier
非常不错!需要注意的重要事实是,在设置 background-image 后,所有操作都应该在其后进行。我之前设置了 background-size,但它却没有起作用,这让我感到有些惊讶。 - tech_geek

9
body{
    background-image: url("your_image_src");
    background-repeat: no-repeat;
    background-size: 100% 100%; 
    height: 100vh;
}

它可以完全覆盖高度和宽度。


好的解决方案。100vh很好。 - Reza Taba
这会破坏宽高比。 - Kamran Asgari
“100vh” 在移动设备上不起作用。 - wittgenstein

6

CSS可以通过background-size: cover;实现这一点。

但为了更加详细并支持更多的浏览器...

使用如下的宽高比:

 aspectRatio      = $bg.width() / $bg.height();

FIDDLE


3
 html, body {
    height:100%;
}

body { 
    background: url(images/bg.jpg) no-repeat center center fixed; 
    -webkit-background-size: cover;
    -moz-background-size: cover;
    -o-background-size: cover;
    background-size: cover;
}

0

这对我有用(虽然它是为reactjs和tachyons作为内联CSS而设计的)

<div className="pa2 cf vh-100-ns" style={{backgroundImage: `url(${a6})`}}> 
........
</div>

这将 css 解释为 height: 100vh


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