我有一个背景图像的div,我想扩展100%宽度并自动缩放div以适应图像所需的高度.目前它没有缩放div高度,除非我将div的高度设置为100%但是它只是伸展到屏幕的整个高度,而我希望它缩放到图像的高度.
这是html:
<div id="mainHeaderWrapper">
</div><!--end mainHeaderWrapper-->
<br class="clear" />;
Run Code Online (Sandbox Code Playgroud)
这是css:
#mainHeaderWrapper{
background: url(http://localhost/site/gallery/bg1.jpg);
width: 100%;
height: auto;
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
background-size: cover;
background-size: 100% 100%;
background-repeat: no-repeat;
background-position: center center;
}
.clear { clear: both; }
Run Code Online (Sandbox Code Playgroud)
感谢您的帮助
Rok*_*jan 25
让透明图像决定您的DIV尺寸.
里面的div放了相同的图像
<div id="mainHeaderWrapper">
<img src="path/to/image.jpg"><!-- I'm invisible! yey!-->
</div>
Run Code Online (Sandbox Code Playgroud)
将该图像设置为
#mainHeaderWrapper{
background: no-repeat url(path/to/image.jpg) 50% / 100%;
}
#mainHeaderWrapper img{
vertical-align: top;
width: 100%; /* max width */
opacity: 0; /* make it transparent */
}
Run Code Online (Sandbox Code Playgroud)
这样,DIV的高度将由包含不可见图像决定,
将background-image设置设为居中,full(50% / 100%)将匹配该图像的比例.
不确定你是想要操纵背景图像的颜色还是什么(使用CSS3 filter),但现在再次阅读我写的内容...
简单地将图像放入DIV中是不是更简单?:)
jsBin demo由于包含图像,你需要一个额外的子元素,它将被设置为position:absolute
并作为覆盖元素
<div id="mainHeaderWrapper">
<img src="path/to/image.jpg"><!-- I'm invisible! yey!-->
<div>
Some content...
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
#mainHeaderWrapper{
position: relative;
background: no-repeat url(path/to/image.jpg) 50% / 100%;
}
#mainHeaderWrapper > img{
vertical-align: top;
width: 100%; /* max width */
opacity: 0; /* make it transparent */
}
#mainHeaderWrapper > div{
position: absolute;
top: 0;
width: 100%;
height: 100%;
}
Run Code Online (Sandbox Code Playgroud)
如果您知道图像的比例,请使用百分比填充来定义容器的高度.设置height:0并将垂直填充设置为宽度的百分比.
这种方法的关键是基于百分比的垂直填充始终与宽度相关.
根据盒子模型(w3.org):
百分比是根据生成的框的包含块的宽度计算的,即使对于"填充顶部"和"填充底部"也是如此.
下图中,图像为400px×200px,因此高宽比为1:2,padding-top设定为50%;
#mainHeaderWrapper {
width: 100%;
height: 0;
padding-top:50%;
background-image: url(//lorempixel.com/400/200/abstract/1/);
background-size: 100% auto;
background-repeat: no-repeat;
}Run Code Online (Sandbox Code Playgroud)
<div id="mainHeaderWrapper"></div>
stuff below the imageRun Code Online (Sandbox Code Playgroud)
在另一个示例中,图像是300px X 100px.高度是宽度的1/3,因此padding-top设置为33.33%:
#mainHeaderWrapper {
width: 100%;
height: 0;
padding-top:33.33%;
background-image: url(//lorempixel.com/300/100/abstract/1/);
background-size: 100% auto;
background-repeat: no-repeat;
}Run Code Online (Sandbox Code Playgroud)
<div id="mainHeaderWrapper"></div>
stuff below the imageRun Code Online (Sandbox Code Playgroud)
根据Paulie_D的提示,div中的其他内容必须绝对定位,如下所示.我建议使用百分比来定位这些元素.
#mainHeaderWrapper {
width: 100%;
height: 0;
padding-top: 33.33%;
background-image: url(//lorempixel.com/300/100/abstract/1/);
background-size: 100% auto;
background-repeat: no-repeat;
}
div#inner_content {
position: absolute;
top:0;
width:100%;
margin-top:10%;
color: #FFF;
text-align: center;
font-size:20px;
}Run Code Online (Sandbox Code Playgroud)
<div id="mainHeaderWrapper">
<div id="inner_content">Hello World</div>
</div>
stuff below the imageRun Code Online (Sandbox Code Playgroud)