我在网上环顾四周并尝试了各种方法来解决这个问题,但还没有找到一种适合我的技术。我希望我的网站的背景图片居中,填满整个浏览器屏幕,并使用响应式设计。
除了 CSS3/background-size: 封面之外,还有什么简单的技术吗?这对我来说根本不起作用(不知道为什么......)。
我在网上环顾四周并尝试了各种方法来解决这个问题,但还没有找到一种适合我的技术。我希望我的网站的背景图片居中,填满整个浏览器屏幕,并使用响应式设计。
除了 CSS3/background-size: 封面之外,还有什么简单的技术吗?这对我来说根本不起作用(不知道为什么......)。
body{
background:url(img.jpg) center center fixed;
background-size:cover; // CSS3 *
}
注意: CSS3。对于其他旧浏览器,请使其尽可能丑陋!;)
如果您不反对除了 CSS 之外还涉及 HTML 的解决方案,您可以使用标签来模拟background-size: cover
行为。img
HTML:
<body>
<div id="image-matte">
<img src="..."/>
</div>
... Page content below ...
</body>
CSS:
#image-matte {
position: fixed;
top: 0%;
left: -50%;
width: 200%;
height: 200%;
}
#image-matte img {
display: block;
margin: auto;
min-height: 50%;
min-width: 50%;
}
/* Covers the image to prevent pointer interaction */
#image-matte:after {
content: '';
display: block;
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
}
编辑:要获得垂直和水平居中的背景图像,您需要在包装器 div 和包含图像本身的内部 div 之间创建表/表单元格关系...... HTML 和 CSS 看起来像这样:
HTML:
<div id="image-matte">
<div>
<img src="..."/>
</div>
</div>
CSS:
#image-matte {
position: fixed;
display: table;
top: -50%;
left: -50%;
width: 200%;
height: 200%;
text-align: center;
}
#image-matte div {
vertical-align: middle;
display: table-cell;
}
#image-matte img {
position: relative;
text-align: center;
min-height: 50%;
min-width: 50%;
}
/* Covers the image to prevent pointer interaction */
#image-matte:after {
content: '';
display: block;
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
}
工作示例:http: //jsfiddle.net/qkpvb/
尝试在链接中的标记或 css 中添加此 html 标记:
<img src="img/beach.jpg"
style="width:100%;height:100%;position:absolute;top:0;left:0;z-index:-5000;">
http://thewebthought.blogspot.com/2010/10/css-making-background-image-fit-any.htmlg
为了在所有浏览器上都能正常工作,我建议使用 jQuery 这个解决方案:
HTML
<img src='./templates/lights3.jpg' alt="bg" id="bg"/>
CSS
#bg {
position: fixed;
top: 0;
left: 0;
z-index: -5000; // Yes I always overdo ^^ (that's not very clean)
}
.bgwidth {
width: 100%;
}
.bgheight {
height: 100%;
}
查询
$(window).load(function() {
var theWindow = $(window),
$bg = $("#bg"),
aspectRatio = $bg.width() / $bg.height();
function resizeBg() {
if ( (theWindow.width() / theWindow.height()) < aspectRatio ) {
$bg
.removeClass()
.addClass('bgheight');
} else {
$bg
.removeClass()
.addClass('bgwidth');
}
}
theWindow.resize(resizeBg).trigger("resize");
});
此解决方案将响应并根据浏览器窗口的大小调整背景图像的大小。