是否可以用CSS设置背景图像的大小?

我想做的事情是:

background: url('bg.gif') top repeat-y;
background-size: 490px;

但这样做似乎是完全错误的……


当前回答

例如: 背景图像将始终适合容器大小(宽度100%,高度100px)。 跨浏览器的CSS:

.app-header {
background: url("themes/default/images/background.jpg") no-repeat;
-moz-background-size: 100% 100px;
-webkit-background-size: 100% 100px;
-o-background-size: 100% 100px;
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src = "themes/default/images/background.jpg", sizingMethod = 'scale');
background-size: 100% 100px;

}

其他回答

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;
}

这将调整图像宽度,使其符合背景定位区域的整个数字。


额外的注意 如果你需要的大小是静态像素大小,它仍然是聪明的物理调整实际图像的大小。这既是为了提高调整大小的质量(考虑到您的图像软件比浏览器做得更好),也是为了在原始图像比要显示的图像大时节省带宽。

不要太难,如果你不怕更深入一点的话:)

有一个被遗忘的论点:

background-size: contain;

这不会像封面那样拉伸你的背景图像。它会一直拉伸,直到较长的一边达到外容器的宽度或高度,从而保存图像。

编辑:还有-webkit-background-size和-moz-background-size。

IE9+、Firefox 4+、Opera、Chrome和Safari 5+支持background-size属性。

-资料来源:W3 Schools

background-size在Chrome 4.1中工作,但到目前为止,我不能使它在Firefox 3.6中工作。

我为按钮使用了背景图像,但即使我设置了宽度和高度,它也只显示了与文本相同大小的图像。相反,我用 字符(非换行空格)。基本上,我在需要的时候插入很多按钮,直到所有的按钮背景都出现。我可能有这样的代码:

样式表中:

#v2menu-home {
    background-image:url(../v2-siteimages/button.png);
    background-repeat:no-repeat;
}

在HTML文档中:

<div id="v2menu">
    <a id="v2menu-home" href="/index.php">home&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</a>
</div><!-- v2menu -->

只需有嵌套的div跨浏览器兼容

   
      <div>
         <div style="background: url('bg.gif') top repeat-y;min-width:490px;">
            Put content here
         </div>
      </div>