全屏背景图像被拉伸

时间:2013-11-27 22:44:25

标签: css html5 image css3 photoshop

我为我的一个客户制作了全屏背景图片,但问题是当我使用以下css代码使图像适合所有屏幕时:

#bg-image img{
position:fixed;
left:0;
top:0;
width:100%;
max-height: 100%;
}
#bg-image{
height: 100%;
width: 100%;
float: left;
overflow: hidden;
position: relative;
}

一切都很完美,因为图像填满了我主页的所有背景,但问题是现在背景图像似乎被拉伸了,我想知道如何使我的图像大小或比例是正确的,以适应整个屏幕尺寸而不会拉伸(全质量),使背景图像的质量是完美的。

那么,如何让我的图像完全适合我的主页背景。

任何帮助都会非常受到赞赏!

6 个答案:

答案 0 :(得分:11)

您应该真正研究background size属性,而不是使用固定图像。使用'cover'作为背景大小意味着图像应该增长或缩小到足以覆盖整个背景。

如果您知道图像的尺寸。您可以使用媒体查询将背景大小更改为“自动”,否则会超出原始大小。

html, body {
    min-height: 100%;
}
body {
    background-image: url(http://leydenlewis.com/images/LANDING_PAGE.jpg);
    background-repeat: no-repeat;
    background-position: 0 0;
    background-size: cover;
}
@media (min-width: 1120px), (min-height: 630px) {
    body { background-size: auto; }
}

答案 1 :(得分:0)

尝试做这样的事情:

#bg-image {
position:fixed;
left:-50%;
top:-50%;
width:200%;
height: 200%;
}

#bg-image img {
  position: absolute; 
  top: 0; 
  left: 0; 
  right: 0; 
  bottom: 0; 
  margin: auto; 
  min-width: 50%;
  min-height: 50%;
}

这可以为您提供所需的结果,也可以在大多数浏览器中使用。

答案 2 :(得分:0)

这应该使图像保持正确的比例:

#bg-image{
height: auto;
width: auto;
float: left;
overflow: hidden;
position: relative;
}

答案 3 :(得分:0)

<style> 
body {
background: url(http://37.media.tumblr.com/tumblr_lusitdffhf1qj5tnlo1_r1_500.gif);
background-size: 320px 600px;
background-repeat: no-repeat;
padding-top: 40px;
}
</style>

答案 4 :(得分:0)

由于这些问题并没有专门陈述CSS(或者不是Javascript),所以这里有一个jQuery解决方案,我已经解决并且一直在使用。我注意到移动浏览器可能存在问题。

//resize the background image
function resizeImage($selection){
    //get the ratio of the image
    var imageRatio = $selection.width() / $selection.height();

    //get the screen ratio
    var screenRatio = $(window).width() / $(window).height();

    //if the image is wider than the screen
    if(imageRatio > screenRatio){
        $selection.height($(window).height()); //set image height to screen height
        $selection.width($(window).height()*imageRatio); //set the correct width based on image ratio
    }

    //if the screen is wider than the image
    else{
        $selection.width($(window).width()); //set the image width to the screen width
        $selection.height($(window).width()/imageRatio); //set the correct image height based on the image ratio
    }
}

每当您想要调整图像大小时运行此选项,通常是在“onresize”和“onload”上

<body onresize="resizeImage($('#bgImage'))">

答案 5 :(得分:-1)

#bg-image{background: url(https://unsplash.com/photos/P3IJy9JMsiU/download?force=true) no-repeat center center fixed;
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
background-size: cover;}