aboutsummaryrefslogtreecommitdiff
path: root/files/pt-br/web/css/background-size/index.html
blob: 22fca36d6f0d792fadc7f71487897595bd6a0ebe (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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
---
title: background-size
slug: Web/CSS/background-size
translation_of: Web/CSS/background-size
---
<div>{{CSSRef}}</div>

<p>A propriedade <strong><code>background-size</code></strong> do <a href="/en-US/docs/CSS" title="CSS">CSS</a> especifica o tamanho das imagens de fundo. O tamanho da imagem pode ser totalmente ou apenas parcialmente comprimido com o objetivo de preservar sua proporção.</p>

<pre class="brush: css no-line-numbers">/* Sintaxe */
background-size: cover;
background-size: contain;

/* Sintaxe de um valor */
/* largura da imagem (height é setado como 'auto') */
background-size: 50%;
background-size: 3em;
background-size: 12px;
background-size: auto;

/* Sintaxe de dois valores */
/* Primeiro valor: largura da imagem, segundo valor: altura */
background-size: 50% auto;
background-size: 3em 25%;
background-size: auto 6px;
background-size: auto auto;

/* Múltiplos valores de backgrounds para a imagem de fundo */
/* Não confunda com background-size: auto auto */
background-size: auto, auto;
background-size: 50%, 25%, 25%;
background-size: 6px, auto, contain;

/* Valores globais */
background-size: inherit;
background-size: initial;
background-size: unset;
</pre>

<div class="hidden" id="background-size">
<pre class="brush: html">&lt;div id="container"&gt;
  &lt;div class="subcontainer contain"&gt;contain&lt;/div&gt;
  &lt;div class="subcontainer cover"&gt;cover&lt;/div&gt;
  &lt;div class="subcontainer width"&gt;120px&lt;/div&gt;
  &lt;div class="subcontainer width-height"&gt;120px 200px&lt;/div&gt;
&lt;/div&gt;
</pre>

<pre class="brush: css">#container {
   width: 100%;
   display:flex;
   justify-content: space-around;
   height: 300px;
   overflow: scroll;
   background-color: #EEEEEE;
}

.subcontainer {
  width: 100%;
  max-width: 200px;
  margin: 8px;
  padding: 5px;
  background-color: white;
  background-image: url("https://mdn.mozillademos.org/files/15195/eagle.jpg");
  background-repeat: no-repeat;
  color: white;
  font-family: monospace;
}

.contain {
  background-size: contain;
}

.cover {
  background-size: cover;
}

.width {
  background-size: 120px;
}

.width-height {
  background-size: 120px 200px;
}
</pre>
</div>

<p>{{EmbedLiveSample("background-size", "100%", 300, "", "", "example-outcome-frame")}}</p>

<p>{{cssinfo}}</p>

<h2 id="Sintaxe">Sintaxe</h2>

<p>O tamanho de uma única imagem de fundo pode ser especificado de três maneiras diferentes:</p>

<ul>
 <li>usando a palavra-chave <code><a href="#contain">contain</a></code></li>
 <li>usando a palavra-chave <code><a href="#cover">cover</a></code></li>
 <li>usando valores para <em>width</em> e <em>height</em></li>
</ul>

<p>Para especificar usando <em>width</em> e <em>height</em>, você pode fornecer um ou dois valores:</p>

<ul>
 <li>se apenas um valor for fornecido, ele valerá para a <em>width</em> e height será<code><a href="#auto">auto</a></code>.</li>
 <li>Se dois valores forem fornecidos, o primeiro corresponde a <em>width</em> e o segundo a <em>height</em>.</li>
</ul>

<p>Cada valor pode ser um <code><a href="#length">&lt;length&gt;</a></code>, uma <code><a href="#&lt;percentage>">&lt;percentage&gt;</a></code>, ou <code><a href="#auto">auto</a></code>.<br>
 <br>
 Por exemplo:</p>

<pre class="brush: css">background-size: contain;

background-size: 50%;
background-size: 3em;

background-size: auto 1em;
background-size: 50% 25%;</pre>

<p><br>
 Para especificar o tamanho de fundo para mais de uma imagem, forneça múltiplos tamanhos separados por vírgula:</p>

<pre class="brush: css">background-size: 50% 25%, contain, 3em;</pre>

<h3 id="Valores">Valores</h3>

<dl>
 <dt><a id="length" name="length"><code>&lt;length&gt;</code></a></dt>
 <dd>Um valor <code>{{cssxref("&lt;length&gt;")}}</code> que ajusta a imagem de fundo para o comprimento especificado na dimensão correspondente. Comprimentos negativos não são permitidos.</dd>
 <dt><a id="&lt;percentage>" name="&lt;percentage>"><code>&lt;percentage&gt;</code></a></dt>
 <dd>Um valor {{cssxref("&lt;percentage&gt;")}} que ajusta a imagem de fundo na dimensão correspondente com a porcentagem especificada para a área do elemento pai, que é determinado pelo valor {{cssxref("background-origin")}}. A área correspondente ao elemento pai é, por padrão, a área que engloba o conteúdo da caixa e seu respectivo padding; a área pode também ser alterada para englobar apenas o conteúdo ou para a área contendo as bordas, o padding e o conteúdo. Se o {{cssxref("background-attachment","attachment")}} está <code>fixed</code>, a área do elemento pai é a área inteira do janela do navegador, não incluindo a área coberta pelas barras de rolagem (se estiverem presentes). Valores negativos de porcentagem não são permitidos.</dd>
 <dt><a id="auto" name="auto"><code>auto</code></a></dt>
 <dd>Uma palavra-chave que ajusta a imagem de fundo para tal direção de modo que mantenha a proporção da imagem inalterada.</dd>
 <dt><a id="contain" name="contain"><code>contain</code></a></dt>
 <dd>Uma palavra-chave que aumenta o máximo possível a imagem mantendo a sua proporção (a imagem não fica esticada). A imagem tenta ocupar o espaço inteiro do container. Quando a imagem e o container tem diferentes dimensões, as áreas não preenchidas (tanto top/bottom ou left/right) são preenchidas com a cor de fundo.</dd>
 <dt><a id="cover" name="cover"><code>cover</code></a></dt>
 <dd>Uma palavra-chave que é o inverso de <code>contain</code>. Ajusta a imagem o mais largamente possível e mantém sua proporção (a imagem não fica esticada). A imagem "cobre" o container inteiro, tanto em altura como em largura. Quando a imagem e o container têm diferentes dimensões,<em>a imagem ultrapassa os limites do container</em> em qualquer direção, para continuar mantendo a proporção.</dd>
</dl>

<p>A interpretação dos possíveis valores depende das dimensões intrínsecas da imagem (largura e altura) e da proporção intrínseca (proporção da largura e altura).  Um imagem bitmap sempre tem dimensões intrínsecas e uma proporção intrínseca.  Uma imagem pode conter ambas as dimensões intrínsecas (e portanto deve ter uma proporção intrínseca).  Poderá contar também uma ou nenhuma dimensão intrínseca, e portanto pode ou não pode conter uma proporção intrínseca.  Gradients são tratados como imagens sem dimensões ou proporções intrínsecas.</p>

<div class="note">
<p><strong>Nota: </strong>Esse comportamento mudou no Gecko 8.0 {{geckoRelease("8.0")}}. Antes disso, gradients eram tratados como imagens sem dimensões intrínsecas, porém com uma proporção intrínseca idêntica a da área do elemento pai.</p>
</div>

<p>Imagens geradas por elementos usando {{cssxref("-moz-element")}} (que na realidade casa com um elemento) são atualmente tratadas como imagens com as dimensões do elemento, ou da área de posicionamento de fundo se o elemento é SVG, com a proporção intrínseca correspondente.</p>

<div class="note"><strong>Nota:</strong> Este não é o comportamento atualmente especificado, que é que as dimensões intrínsecas e a proporção devem ser as do elemento em todos os casos.</div>

<p>O tamanho renderizado da imagem de fundo é então computado da seguinte forma:</p>

<dl>
 <dt>Se ambos os componentes do <code>background-size</code> são especificados e não há <code>auto</code></dt>
 <dd>A imagem de fundo é renderizada no tamanho especificado.</dd>
 <dt>Se o <code>background-size</code> é <code>contain</code> ou <code>cover</code>:</dt>
 <dd>A imagem é renderizada, preservando sua proporção intrínseca, com o maior tamanho contido, ou cobrindo a área do elemento pai. Se a imagem não tiver uma proporção intrínseca, então ela é renderizada no tamanho da área do elemento pai.</dd>
 <dt>Se o <code>background-size</code> é <code>auto</code> ou <code>auto auto</code>:</dt>
 <dd>Se a imagem tiver duas dimensões intrínsecas, ela é renderizada nesse tamanho. Se não tiver dimensões intrínsecas e nenhuma proporção intrínseca, ela é renderizada ao tamanho da área do elemento pai. Se não tiver dimensões, mas tiver uma proporção, é processado como se <code>contain</code> tivesse sido especificado. Se a imagem tiver uma dimensão intrínseca e uma proporção, ela é renderizada no tamanho determinado por essa dimensão e a proporção. Se a imagem tiver uma dimensão intrínseca mas nenhuma proporção, ela é processada usando a dimensão intrínseca e a dimensão correspondente da área do elemento pai.
 <div class="note"><strong>Nota:</strong> imagens SVG tem um atributo <a href="/en-US/docs/Web/SVG/Attribute/preserveAspectRatio">preserveAspectRatio</a> que é equivalente ao 'contain'. No Firefox 43, ao contrário do Chrome 52, um background-size especificado explicitamente faz com que <a href="/en-US/docs/Web/SVG/Attribute/preserveAspectRatio">preserveAspectRatio</a> seja ignorado.</div>
 </dd>
 <dt>Se o background-size tem um componente <code>auto</code> e um componente não <code>auto</code>:</dt>
 <dd>Se a imagem tiver uma proporção intrínseca, então use a dimensão especificada. Se a imagem não tiver uma proporção intrínseca, use a dimensão especificada para essa dimensão. Para a outra dimensão, use a dimensão intrínseca correspondente da imagem se houver uma. Se não existe essa dimensão intrínseca, use a dimensão correspondente da área do elemento pai.</dd>
</dl>

<p>Observe que o dimensionamento de fundo para vectors que não possuem dimensões ou proporções intrínsecas ainda não está totalmente implementado em todos os navegadores. Tenha cuidado ao confiar no comportamento descrito acima e teste em vários navegadores (especificamente incluindo versões do Firefox 7 ou anteriores e Firefox 8 ou superior) para ter certeza de que diferentes renderizações são aceitáveis.</p>

<h3 id="Sintaxe_formal">Sintaxe formal</h3>

{{csssyntax}}

<h2 id="Exemplos">Exemplos</h2>

<p><a href="http://whereswalden.com/files/mozilla/background-size/page-cover.html">Essa demonstração do <code>background-size: cover</code></a> e <a href="http://whereswalden.com/files/mozilla/background-size/page-contain.html">essa demonstração do <code>background-size: contain</code></a> foram feitas para você abrir em uma nova aba para ver como <code>contain</code> e <code>cover</code> se comportam quando as dimensões da área do elemento pai varia. <a href="http://whereswalden.com/files/mozilla/background-size/more-examples.html">Essa séria de demonstrações de como <code>background-size</code> funciona e interage com outras propriedades <code>background-*</code> </a>devem ser suficientes para entender como usar <code>background-size</code> sozinho e em conjunto com outras propriedades.</p>

<h2 id="Notas">Notas</h2>

<p>Se você estiver especificando um gradient como plano de fundo e tiver especificado um <code>background-size</code> junto, é melhor não especificar um tamanho que use um único componente setado como auto ou seja especificado usando apenas um valor de largura (por exemplo, <code>background-size: 50%</code>).  A renderização de gradients em tais casos mudou no Firefox 8 e, no momento, geralmente é inconsistente em todos os navegadores, pois nem todos implementam a renderização em total conformidade com a especificação <a href="http://www.w3.org/TR/css3-background/#the-background-size" title="http://www.w3.org/TR/css3-background/#the-background-size"><code>background-size</code> </a>do CSS3 e com a <a href="http://dev.w3.org/csswg/css3-images/#gradients" title="http://dev.w3.org/csswg/css3-images/#gradients">especificação do CSS3 para valores d</a><a href="http://dev.w3.org/csswg/css3-images/#gradients" title="http://dev.w3.org/csswg/css3-images/#gradients">e gradient</a>.</p>

<pre class="brush: css">.bar {
       width: 50px; height: 100px;
       background-image: gradient(...);

       /* NÃO RECOMENDADO */
       background-size: 25px;
       background-size: 50%;
       background-size: auto 50px;
       background-size: auto 50%;

       /* OKAY */
       background-size: 25px 50px;
       background-size: 50% 50%;
}
</pre>

<p>Observe que, em particular, não é recomendável usar uma dimensão de pixel e uma dimensões <code>auto</code> com um gradient, porque é impossível replicar a renderização nas versões do Firefox antes de 8 e nos navegadores que não implementam a renderização do Firefox 8, sem saber o tamanho exato do elemento cujo plano de fundo está sendo especificado.</p>

<h2 id="Specifications" name="Specifications">Especificações</h2>

<table class="standard-table">
 <thead>
  <tr>
   <th scope="col">Especificação</th>
   <th scope="col">Status</th>
   <th scope="col">Comentário</th>
  </tr>
 </thead>
 <tbody>
  <tr>
   <td>{{SpecName('CSS3 Backgrounds', '#the-background-size', 'background-size')}}</td>
   <td>{{Spec2('CSS3 Backgrounds')}}</td>
   <td>Initial definition</td>
  </tr>
 </tbody>
</table>

<h2 id="Browser_compatibility" name="Browser_compatibility">Compatibilidade de navegadores</h2>

<p class="hidden">A tabela de compatibilidade nessa página é gerada por dados estruturados. Se você quer contribuir com os dados, por favor acesse <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> e nos mande um pull request.</p>

<p>{{Compat("css.properties.background-size")}}</p>

<h2 id="Soluções_alternativas">Soluções alternativas</h2>

<h3 id="Para_Internet_Explorer_anterior_ao_IE8">Para Internet Explorer anterior ao IE8</h3>

<p>Como o Internet Explorer 8 não suporta a propriedade <code>background-size</code>, é possível emular algumas de suas funcionalidades usando a propriedade não padrão <code>-ms-filter</code>:</p>

<pre class="brush:css">-ms-filter: "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='path_relative_to_the_HTML_file', sizingMethod='scale')";</pre>

<p>Isso simula o valor <code>cover</code>.</p>

<h3 id="No_Firefox_3.5">No Firefox 3.5</h3>

<p>Enquanto essa propriedade foi adicionada no Firefox 3.6, é possível esticar totalmente a imagem no Firefox 3.5 usando {{cssxref("-moz-border-image")}}.</p>

<pre class="brush:css">.foo {
  background-image: url(bg-image.png);

  -webkit-background-size: 100% 100%;           /* Safari 3.0 */
     -moz-background-size: 100% 100%;           /* Gecko 1.9.2 (Firefox 3.6) */
       -o-background-size: 100% 100%;           /* Opera 9.5 */
          background-size: 100% 100%;           /* Gecko 2.0 (Firefox 4.0) and other CSS3-compliant browsers */

  -moz-border-image: url(bg-image.png) 0;    /* Gecko 1.9.1 (Firefox 3.5) */
}</pre>

<h2 id="Veja_também">Veja também</h2>

<ul>
 <li><a href="/en-US/docs/CSS/CSS_Reference" title="CSS Reference">CSS Reference</a></li>
 <li><a href="/en-US/docs/CSS/Multiple_backgrounds" title="CSS/Multiple backgrounds">Multiple backgrounds</a></li>
 <li><a href="/en-US/docs/CSS/Scaling_background_images" title="CSS/Scaling_background_images">Scaling background images</a></li>
</ul>