2016-04-06 52 views
1

看看下面的代码中响应背景图片: -CSS - 一个div

HTML:

<div id="wrapper"> 
<div id="nottingham-park"> 
</div> 

CSS:

#wrapper { 
    width: 100%; 
    height: auto; 
} 
#nottingham-park { 
    background: url(http://planetbounce.m360.co.uk/wp-content/themes/planetbounce/assets/img/nottingham-park.png); 
    background-size:100% auto; 
    background-repeat: no-repeat; 
    display: block; 
    //height: 700px; 
} 

FIDDLE

如果我没有将高度设置为#nottingham-park,则背景图像不可见,如果我设置了高度,则它不响应。

如何显示图像,使其始终为100%宽度和自动高度?

+0

通常你应该只是将内容添加到诺丁汉公园,使之自然延伸。您希望CSS选择多高? – IceFire

+0

你不会得到一个响应式设计。您的图片始终具有“100%”的宽度以及任何代表的固定高度。也许你正在寻找'background-size:cover'? – somethinghere

+0

@IceFire - div内没有内容,所以是唯一的选择不使用背景图片,只使用? – nsilva

回答

1

您可以强制#诺丁汉公园的大小与填充顶部的背景图像的大小。请参阅CSS中的注释以了解如何计算填充顶部应该是什么。

这样你的图片就会有反应,永远不会超出比例。

希望这是你所要求的。

#wrapper { 
 
    width: 100%; 
 
    height: auto; 
 
} 
 
#nottingham-park { 
 
    background: url(http://planetbounce.m360.co.uk/wp-content/themes/planetbounce/assets/img/nottingham-park.png); 
 
    background-size: contain; 
 
    background-repeat: no-repeat; 
 
    display: block; 
 
    
 
    /* 
 
    width of image/height of image * width 
 
    699px/1200px * 100 = 57.7208918249 
 
    (change the 100 in this formula to whatever you want.) 
 
    */ 
 
    padding-top: 57.7208918249%; 
 
}
<div id="wrapper"> 
 
    <div id="nottingham-park"> 
 
    </div> 
 
</div>

0

编辑

怎么样液padding-bottom

Like this

#nottingham-park { 
    background: url(http://planetbounce.m360.co.uk/wp-content/themes/planetbounce/assets/img/nottingham-park.png); 
    background-size:100% auto; 
    background-repeat: n-repeat; 
    display: block; 
    padding-bottom : 55%; 
} 
+0

问题是,如果您有下面的内容,则必须使用多个媒体查询来更改最小高度,请看这里https: //jsfiddle.net/mfyuf1yb/3/ – nsilva

+0

你是对的,我提出了一个其他的解决方案,用流体填充 –

+0

另外,你的意思是'不重复',这个填充不会作为填充(%)是基于盒子的高度,据我们所知,它没有内容。如果你把它改成'vh',它可能会起作用。 – somethinghere