0

我在网上环顾四周并尝试了各种方法来解决这个问题,但还没有找到一种适合我的技术。我希望我的网站的背景图片居中,填满整个浏览器屏幕,并使用响应式设计。

除了 CSS3/background-size: 封面之外,还有什么简单的技术吗?这对我来说根本不起作用(不知道为什么......)。

4

4 回答 4

3

现场演示

body{
  background:url(img.jpg) center center fixed;
  background-size:cover; // CSS3 *
}

注意: CSS3。对于其他浏览器,请使其尽可能丑陋!;)

于 2013-03-25T00:39:24.513 回答
2

如果您不反对除了 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/

于 2013-03-24T23:44:04.200 回答
0

尝试在链接中的标记或 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

于 2014-09-25T09:09:30.613 回答
0

为了在所有浏览器上都能正常工作,我建议使用 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");
});

此解决方案将响应并根据浏览器窗口的大小调整背景图像的大小。

于 2013-03-26T11:07:53.267 回答