blob: 8fa031d0b8e94bf46e9bb589bce8717a95e75410 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
|
---
title: 缩放背景图像
slug: Web/Guide/CSS/Scaling_background_images
tags:
- Advanced
- CSS
- CSS Background
- Graphics
- Guide
- Web
- 背景图片
translation_of: Web/CSS/CSS_Backgrounds_and_Borders/Resizing_background_images
---
<div>{{cssref}}</div>
<p><span style="line-height: 1.5;">CSS 的 </span> {{ cssxref("background-size") }}<span style="line-height: 1.5;"> 属性能调整背景图片的大小,从而替代了用原始大小显示图片的默认行为。你可以随意的缩放背景图。</span></p>
<h2 id="Tiling_a_large_image" name="Tiling_a_large_image">拼一张大图</h2>
<p><span style="line-height: 1.5;">来考虑一张大图,一个1233*1233像素的火狐图标。我们想将这张图的四个副本拼到一个300*300像素的正方形里</span>(出于某种原因,很可能是某个非常糟糕的网站设计)<span style="line-height: 1.5;">,最终的效果如下:</span></p>
<p><img alt="screenshot1.png" class="default internal" src="/@api/deki/files/4001/=screenshot1.png"></p>
<p>用下面的 CSS 可以实现这种效果:</p>
<pre class="brush: css; highlight:[8]">.square {
width: 300px;
height: 300px;
background-image: url(fxlogo.png);
border: solid 2px;
text-shadow: white 0px 0px 2px;
font-size: 16px;
background-size: 150px;
} </pre>
<div>没必要再用带前缀的 background-size 了,<span style="line-height: 1.5;">尽管你可能考虑到要兼容一些非常老的浏览器版本,而用带前缀的写法。</span></div>
<h2 id="Stretching_an_image" name="Stretching_an_image">拉伸图片</h2>
<p>你可以同时指定图片纵向和横向的大小,如下:</p>
<pre class="brush:css">background-size: 300px 150px;
</pre>
<p>结果会是这样的:<br>
<img alt="screenshot3.png" class="default internal" src="/@api/deki/files/4003/=screenshot3.png"></p>
<h2 id="Scaling_an_image_up" name="Scaling_an_image_up">放大图片</h2>
<p>另一方面,你可以在背景里放大一张图片。我们把 16*16px 的图标放大到 300*300px:</p>
<p><img alt="screenshot2.png" class="default internal" src="/@api/deki/files/4002/=screenshot2.png"></p>
<pre class="brush: css; highlight:[5]">.square2 {
width: 300px;
height: 300px;
background-image: url(favicon.png);
background-size: 300px;
border: solid 2px;
text-shadow: white 0px 0px 2px;
font-size: 16px;
}
</pre>
<p>正如你所看到的,CSS 的写法实际上是基本相同的。</p>
<h2 id="Special_values.3A_.22contain.22_and_.22cover.22" name="Special_values.3A_.22contain.22_and_.22cover.22">特殊值: "contain" 和 "cover"</h2>
<p>除了{{cssxref("<length>")}} 值外,{{ cssxref("background-size") }} 还提供了另外两个特殊的尺寸值:contain 和 cover。</p>
<h3 id="contain" name="contain"><code>contain</code></h3>
<p><span style="line-height: 1.5;">contain 值指定可以不用考虑容器的大小,</span><span style="line-height: 1.5;">把图像扩展至最大尺寸,以使其宽度和高度完全适应内容区域</span><span style="line-height: 1.5;">。</span><span style="line-height: 1.5;">在支持背景图缩放的浏览器(比如Firefox 3.6+)中,改变这个窗口的大小,</span><span style="line-height: 1.5;">来看看下方这个例子。</span></p>
<pre class="brush:html"><div class="bgSizeContain">
<p>Try resizing this window.<code>Right-click->This Frame->Open Frame in New Tab</code></p>
</div></pre>
<pre class="brush:css;highlight:[4]">.bgSizeContain {
height: 200px;
background-image: url(https://developer.mozilla.org/files/2917/fxlogo.png);
background-size: contain;
border: 2px solid darkgray;
color: #000; text-shadow: 1px 1px 0 #fff;
}</pre>
<p>{{ EmbedLiveSample("contain", "100%", "220") }}</p>
<h3 id="cover" name="cover"><code>cover</code></h3>
<p><span style="line-height: 1.5;">cover 属性指定背景图可以被调整到任意大小,</span><span style="line-height: 1.5;">以使背景图完全覆盖背景区域</span><span style="line-height: 1.5;">。</span></p>
<pre class="brush:html"><div class="bgSizeCover">
<p>Try resizing this window.Right-click->This Frame->Open Frame in New Tab</p>
</div></pre>
<pre class="brush:css;highlight:[4]">.bgSizeCover {
height: 200px;
background-image: url('/files/2917/fxlogo.png');
background-size: cover;
border: 2px solid darkgray;
color: #000;
text-shadow: 1px 1px 0 #fff;
}</pre>
<p>{{ EmbedLiveSample("cover", "100%", "220") }}</p>
<h2 id="See_also" name="See_also">另请参阅</h2>
<ul>
<li>{{ cssxref("background-size") }}</li>
<li>{{ cssxref("background") }}</li>
</ul>
|