是否可以用CSS设置背景图像的大小?
我想做的事情是:
background: url('bg.gif') top repeat-y;
background-size: 490px;
但这样做似乎是完全错误的……
是否可以用CSS设置背景图像的大小?
我想做的事情是:
background: url('bg.gif') top repeat-y;
background-size: 490px;
但这样做似乎是完全错误的……
当前回答
CSS2
如果需要放大图像,则必须在图像编辑器中编辑图像本身。
如果你使用img标签,你可以改变大小,但如果你需要图像作为其他内容的背景,这不会给你想要的结果(它不会像你想要的那样重复自己)…
CSS3释放力量
在CSS3中使用background-size可以做到这一点。
所有现代浏览器都支持这一点,所以除非您需要支持旧的浏览器,否则这就是实现它的方法。 支持的浏览器: Mozilla Firefox 4.0+ (Gecko 2.0+), Microsoft Internet Explorer 9.0+, Opera 10.0+, Safari 4.1+ (webkit 532)和Chrome 3.0+。
.stretch{
/* Will stretch to specified width/height */
background-size: 200px 150px;
}
.stretch-content{
/* Will stretch to width/height of element */
background-size: 100% 100%;
}
.resize-width{
/* width: 150px, height: auto to retain aspect ratio */
background-size: 150px Auto;
}
.resize-height{
/* height: 150px, width: auto to retain aspect ratio */
background-size: Auto 150px;
}
.resize-fill-and-clip{
/* Resize to fill and retain aspect ratio.
Will cause clipping if aspect ratio of box is different from image. */
background-size: cover;
}
.resize-best-fit{
/* Resize to best fit and retain aspect ratio.
Will cause gap if aspect ratio of box is different from image. */
background-size: contain;
}
我特别喜欢封面和包含的值,它给了我们新的控制能力,这是我们以前没有的。
轮
你也可以使用background-size: round,在repeat的组合中有一个含义:
.resize-best-fit-in-repeat{
/* Resize to best fit in a whole number of times in x-direction */
background-size: round auto; /* Height: auto is to keep aspect ratio */
background-repeat: repeat;
}
这将调整图像宽度,使其符合背景定位区域的整个数字。
额外的注意 如果你需要的大小是静态像素大小,它仍然是聪明的物理调整实际图像的大小。这既是为了提高调整大小的质量(考虑到您的图像软件比浏览器做得更好),也是为了在原始图像比要显示的图像大时节省带宽。
其他回答
您无法使用当前版本的CSS(2.1)设置背景图像的大小。
您只能设置:位置,固定,图像-url,重复模式和颜色。
你完全可以用CSS3:
body {
background-image: url(images/bg-body.png);
background-size: 100%; /* size the background image at 100% like any responsive img tag */
background-position: top center;
background-repeat:no-repeat;
}
这将把背景图像的大小调整为主体元素宽度的100%,然后根据较小的分辨率调整主体元素的大小,相应地调整背景的大小。
示例如下:http://www.sccc.premiumdw.com/examples/resize-background-images-with-css/
在CSS3中使用background-size可以做到这一点
.backgroungImage {
background: url('../imageS/background.jpg') no-repeat;
background-size: 32px 32px;
}
为了支持@tetra给出的答案,我想指出,如果图像是SVG,那么调整实际图像的大小是不必要的。
由于SVG文件只是XML,您可以指定希望它在XML中显示的大小。
但是,如果您在不同的地方使用相同的SVG图像,并且需要使用不同的大小,那么使用background-size非常有用。SVG文件本来就比栅格图像小,用CSS调整大小非常有用,而且我知道不会有任何性能损失,当然质量也几乎没有损失。
这里有一个简单的例子:
<div class="hasBackgroundImage">content</div>
.hasBackgroundImage
{
background: transparent url('/image/background.svg') no-repeat 10px 5px;
background-size: 1.4em;
}
(注:这适用于我在OS X 10.7与Firefox 8, Safari 5.1和Chrome 16.0.912.63)
如果你的用户只使用Opera 9.5+, Safari 3+, Internet Explorer 9+和Firefox 3.6+,那么答案是肯定的。否则,没有。
background-size属性是css3的一部分,但它不能在大多数浏览器上工作。
为了您的目的,只需将实际图像放大。