简单明了。
将我的布局转换为流动布局,在处理可扩展图片。使用img标签并将max-width设置为100%可以完美解决,但我更愿意使用一个把图片设为背景的div。
我遇到的问题是,图像不会按其所在背景div的大小进行缩放。有什么方法可以在背景代码中添加标记,将其设置为容器的100%宽度?
#one {
background: url('../img/blahblah.jpg') no-repeat;
max-width: 100%;
}
正如thirtydot所说,您可以使用CSS3的background-size
语法:
例如:
-o-background-size:35% auto;
-webkit-background-size:35% auto;
-moz-background-size:35% auto;
background-size:35% auto;
然而,正如 thirtydot 所述,这在 IE6、7 和 8 中不起作用。
有关 background-size
的更多信息,请参见以下链接:
http://www.w3.org/TR/css3-background/#the-background-size
您可以使用 background-size
来实现这个效果:
html {
background: url(images/bg.jpg) no-repeat center center fixed;
background-size: cover;
}
除了cover
之外,您可以将background-size
设置为许多其他值,看看哪一个适合您:https://developer.mozilla.org/en-US/docs/Web/CSS/background-size
规范:https://www.w3.org/TR/css-backgrounds-3/#the-background-size
它在所有现代浏览器中都有效:http://caniuse.com/#feat=background-img-opts
看起来您想要缩放背景图像?在下面的参考文章中,您可以了解如何使用CSS3来实现此目的。
如果我误读了问题,那么我虚心接受投票反对。(不过还是好知道一下)
请考虑以下代码:
#some_div_or_body {
background: url(images/bg.jpg) no-repeat center center fixed;
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
background-size: cover;
}
这将适用于所有主要的浏览器,当然在IE上并不容易。不过有一些解决方法,比如使用微软的滤镜:
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='.myBackground.jpg', sizingMethod='scale');
-ms-filter: "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='myBackground.jpg', sizingMethod='scale')";
有一些替代方案可以使用jQuery来稍微放心一些:
HTML
<img src="images/bg.jpg" id="bg" alt="">
CSS
#bg { position: fixed; top: 0; left: 0; }
.bgwidth { width: 100%; }
.bgheight { height: 100%; }
jQuery:
$(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");
});
希望这可以帮到你!
来源:完美的全屏背景图像
background-size: cover;
就是解决方法。 - Serj Sagan很不幸,CSS中没有min
(或max
) -background-size,您只能使用background-size
。但是,如果您正在寻找响应式背景图像,则可以使用Vmin
和Vmax
单位来设置background-size
属性,以实现类似的效果。
#one {
background:url('../img/blahblah.jpg') no-repeat;
background-size:10vmin 100%;
}
这会将高度设置为您拥有的较小视口大小的10%,无论是垂直还是水平,同时将宽度设置为100%。
了解有关CSS单位的更多信息,请访问:https://www.w3schools.com/cssref/css_units.asp
background-size
声明中,宽度不是在高度之前吗?https://www.w3.org/TR/css3-background/#the-background-size - Kitabackground-size: 100% auto;
使用 :before 或 :after 与 max-height
section {
height: 100vh;
width: 100%;
background-color: #222;
}
section::before {
content: ' ';
display: block;
position: absolute;
left: 50%;
bottom: 0;
width: 50%;
height: 100%;
max-height: 100px;
transform: translateX(-50%);
opacity: 0.8;
background-image: url('https://interactive-examples.mdn.mozilla.net/media/examples/firefox-logo.svg');
background-repeat: no-repeat;
background-position: 50% bottom;
background-size: contain;
}
<section></section>
background-size
实际上不是设置max-width
或max-height
的一种方式。这与img
元素具有max-width
和max-height
属性的意义不同。 - Nojanfixed
的信息 - https://developer.mozilla.org/docs/Web/CSS/background-attachment - Alex78191