--- title: background-size slug: Web/CSS/background-size translation_of: Web/CSS/background-size ---
A propriedade background-size
do CSS 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.
/* 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;
<div id="container"> <div class="subcontainer contain">contain</div> <div class="subcontainer cover">cover</div> <div class="subcontainer width">120px</div> <div class="subcontainer width-height">120px 200px</div> </div>
#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; }
{{EmbedLiveSample("background-size", "100%", 300, "", "", "example-outcome-frame")}}
{{cssinfo}}
O tamanho de uma única imagem de fundo pode ser especificado de três maneiras diferentes:
Para especificar usando width e height, você pode fornecer um ou dois valores:
auto
.Cada valor pode ser um <length>
, uma <percentage>
, ou auto
.
Por exemplo:
background-size: contain; background-size: 50%; background-size: 3em; background-size: auto 1em; background-size: 50% 25%;
Para especificar o tamanho de fundo para mais de uma imagem, forneça múltiplos tamanhos separados por vírgula:
background-size: 50% 25%, contain, 3em;
<length>
{{cssxref("<length>")}}
que ajusta a imagem de fundo para o comprimento especificado na dimensão correspondente. Comprimentos negativos não são permitidos.<percentage>
fixed
, 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.auto
contain
cover
contain
. 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,a imagem ultrapassa os limites do container em qualquer direção, para continuar mantendo a proporção.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.
Nota: 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.
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.
O tamanho renderizado da imagem de fundo é então computado da seguinte forma:
background-size
são especificados e não há auto
background-size
é contain
ou cover
:background-size
é auto
ou auto auto
:contain
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.
auto
e um componente não auto
: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.
Essa demonstração do background-size: cover
e essa demonstração do background-size: contain
foram feitas para você abrir em uma nova aba para ver como contain
e cover
se comportam quando as dimensões da área do elemento pai varia. Essa séria de demonstrações de como background-size
funciona e interage com outras propriedades background-*
devem ser suficientes para entender como usar background-size
sozinho e em conjunto com outras propriedades.
Se você estiver especificando um gradient como plano de fundo e tiver especificado um background-size
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, background-size: 50%
). 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 background-size
do CSS3 e com a especificação do CSS3 para valores de gradient.
.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%; }
Observe que, em particular, não é recomendável usar uma dimensão de pixel e uma dimensões auto
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.
Especificação | Status | Comentário |
---|---|---|
{{SpecName('CSS3 Backgrounds', '#the-background-size', 'background-size')}} | {{Spec2('CSS3 Backgrounds')}} | Initial definition |
{{Compat("css.properties.background-size")}}
Como o Internet Explorer 8 não suporta a propriedade background-size
, é possível emular algumas de suas funcionalidades usando a propriedade não padrão -ms-filter
:
-ms-filter: "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='path_relative_to_the_HTML_file', sizingMethod='scale')";
Isso simula o valor cover
.
Enquanto essa propriedade foi adicionada no Firefox 3.6, é possível esticar totalmente a imagem no Firefox 3.5 usando {{cssxref("-moz-border-image")}}.
.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) */ }