当前位置:  开发笔记 > 前端 > 正文

使用CSS在背景图像上设置大小?

如何解决《使用CSS在背景图像上设置大小?》经验,为你挑选了5个好方法。

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

我想做的事情如下:

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

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



1> awe..:
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;
}

特别是,我喜欢covercontain我们以前没有的新控制力的价值观.

回合

您也可以使用background-size: round具有重复意义的含义:

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

这将调整图像宽度,使其在背景定位区域中适合整数次.


附加说明
如果您需要的尺寸是静态像素大小,则实际调整实际图像的大小仍然很明智.这既是为了提高调整大小的质量(假设您的图像软件比浏览器做得更好),也可以在原始图像大于显示的图像时节省带宽.


请注意,还有iPad和iPhone上的视网膜显示器以及可能出现的其他高分辨率设备的问题.这意味着可能值得使用CSS调整大图像,并使用多个CSS文件和其他技巧来提供特定图像.这里有很好的介绍:http://www.webmonkey.com/2012/03/what-the-new-ipads-retina-display-means-for-web-developers/

2> Maertz..:

只有CSS 3支持,

background-size: 200px 50px;

但我会编辑图像本身,以便用户需要加载更少,并且它可能看起来比没有抗锯齿的缩小图像更好.


不幸的是,人们仍然使用ie8
微软因为糟糕的浏览器而感到羞耻

3> Christopher ..:

如果您的用户仅使用Opera 9.5 +,Safari 3 +,Internet Explorer 9+和Firefox 3.6+,那么答案是肯定的.否则,没有.

该背景大小的属性是CSS 3的一部分,但它不会在大多数浏览器.

为了您的目的,只需使实际图像更大.


IE 6,7,8不是"大多数浏览器".
IE 9也支持它.

4> mikl..:

不可能.背景总是尽可能大,但你可以阻止它重复自己background-repeat.

background-repeat: no-repeat;

其次,背景不会进入框的边距区域,因此如果您希望背景仅在框的实际内容上,则可以使用边距而不是填充.

第三,您可以控制背景图像的开始位置.默认情况下,它是一个框的左上角,但你可以控制它background-position,如下所示:

background-position: center top;

也许

background-position: 20px -14px;

CSS sprites使用了负面定位.


看看时间戳.在2009年,背景大小只是WebKit眼中的闪光点.如果您愿意,可以随意更新它,但已经有很多其他答案描述背景大小.

5> kaiser..:

不是太难,如果你不害怕深入一点:)

有一个被遗忘的论点:

background-size: contain;

这不会像你background-image一样伸展你cover.它会伸展直到较长的一侧达到外容器的宽度或高度,从而保留图像.

编辑:还有-webkit-background-size-moz-background-size.

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

- 资料来源:W3学校

推荐阅读
赛亚兔备_393
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有