简体   繁体   English

CSS Div背景图像固定高度100%宽度

[英]CSS Div Background Image Fixed Height 100% Width

I'm trying to setup a series of div's with a background image that each have their own fixed height, and stretch to fill up the width, even if there is overflow on the top/bottom that is clipped. 我正在尝试使用背景图像设置一系列div,每个div都有自己的固定高度,并且拉伸以填充宽度,即使顶部/底部有被剪裁的溢出。 I just don't want the white space on the edges. 我只是不想要边缘的白色空间。

Currently, I have: http://jsfiddle.net/ndKWN/ 目前,我有: http//jsfiddle.net/ndKWN/

CSS CSS

    #main-container {
        float:left;
        width:100%;
        margin:0;
        padding:0;
        text-align: center;
    }

    .chapter{
        position: relative;
        height: 1400px;
        z-index: 1;
    }

    #chapter1{
    background: url(http://omset.files.wordpress.com/2010/06/homer-simpson-1-264a0.jpg) 50% 0 no-repeat fixed;
        height:1200px;
    }

    #chapter2{
    background: url(http://download.ultradownloads.com.br/wallpaper/94781_Papel-de-Parede-Homer-Simpson--94781_1680x1050.jpg) 50% 0 no-repeat fixed;
        height:1200px;
    }

See my answer to a similar question here . 在此处查看我对类似问题的回答。

It sounds like you want a background-image to keep it's own aspect ratio while expanding to 100% width and getting cropped off on the top and bottom. 听起来你想要一个背景图像来保持它自己的宽高比,同时扩展到100%宽度并在顶部和底部被裁剪掉。 If that's the case, do something like this: 如果是这种情况,请执行以下操作:

.chapter {
    position: relative;
    height: 1200px;
    z-index: 1;
}

#chapter1 {
    background-image: url(http://omset.files.wordpress.com/2010/06/homer-simpson-1-264a0.jpg);
    background-repeat: no-repeat;
    background-size: 100% auto;
    background-position: center top;
    background-attachment: fixed;
}

jsfiddle: http://jsfiddle.net/ndKWN/3/ jsfiddle: http//jsfiddle.net/ndKWN/3/

The problem with this approach is that you have the container elements at a fixed height, so there can be space below if the screen is small enough. 这种方法的问题在于容器元素处于固定高度,因此如果屏幕足够小,则可以在下方留出空间。

If you want the height to keep the image's aspect ratio, you'll have to do something like what I wrote in an edit to the answer I linked to above. 如果你想让高度保持图像的宽高比,你就必须做一些类似于我在上面链接到的答案的编辑中写的东西。 Set the container's height to 0 and set the padding-bottom to the percentage of the width: 将容器的height设置为0,并将padding-bottom设置为宽度的百分比:

.chapter {
    position: relative;
    height: 0;
    padding-bottom: 75%;
    z-index: 1;
}

#chapter1 {
    background-image: url(http://omset.files.wordpress.com/2010/06/homer-simpson-1-264a0.jpg);
    background-repeat: no-repeat;
    background-size: 100% auto;
    background-position: center top;
    background-attachment: fixed;
}

jsfiddle: http://jsfiddle.net/ndKWN/4/ jsfiddle: http//jsfiddle.net/ndKWN/4/

You could also put the padding-bottom percentage into each #chapter style if each image has a different aspect ratio. 如果每个图像具有不同的宽高比,您还可以将padding-bottom百分比放入每个#chapter样式中。 In order to use different aspect ratios, divide the height of the original image by it's own width, and multiply by 100 to get the percentage value. 要使用不同的宽高比,请将原始图像的高度除以其自身的宽度,然后乘以100以获得百分比值。

http://jsfiddle.net/ndKWN/1/ http://jsfiddle.net/ndKWN/1/

You can use background-size: cover; 你可以使用background-size: cover;

But the thing is that the .chapter class is not dynamic you're declaring a height:1200px 但问题是.chapter类不是动态的,你宣称高度:1200px

so it's better to use background:cover and set with media queries specific height's for popular resolutions. 所以最好使用背景:覆盖并设置媒体查询特定高度的流行分辨率。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM