A versão curta
- A propriedade CSS background pode conter várias camadas separadas por vírgulas, e a primeira camada listada é pintada por cima.
- Uma cor de fundo só pode ser definida uma vez, na última camada, e aparece por baixo de todas as imagens e gradientes.
- Na forma abreviada de background, o background-size tem de vir depois do background-position com uma barra, como em center / cover.
- Pôr uma camada de gradiente acima de uma camada de imagem numa só declaração é a forma mais simples de dar um tom a uma fotografia para o texto se ler.
- As imagens definidas em CSS são descobertas mais tarde do que os elementos img, por isso uma imagem de herói importante pode precisar de uma dica de pré-carregamento.
Nesta página
Um fundo CSS é uma pilha de camadas num só elemento. A propriedade background aceita uma lista de imagens e gradientes separados por vírgulas, pintados com o primeiro por cima, mais uma única cor mesmo no fundo. É tudo o que precisas para uma fotografia de herói com tom, uma luz suave sobre um gradiente ou uma textura sobre uma cor de marca, sem elementos extra nem invólucros. O resto é saber como a forma abreviada lê os valores.
A forma abreviada de background, valor a valor
A forma abreviada define até oito propriedades individuais de uma vez. As que omitires voltam aos valores predefinidos, que é a origem mais comum dos erros do tipo “porque desapareceu o tamanho do meu fundo”.
background-colorO que controla
Valores comuns
#0f0b1e, oklch(20% 0.05 290)background-imageO que controla
Valores comuns
url(photo.webp), linear-gradient(…)background-positionO que controla
Valores comuns
center, top right, 50% 30%background-sizeO que controla
Valores comuns
cover, contain, 200px autobackground-repeatO que controla
Valores comuns
no-repeat, repeat, repeat-xbackground-attachmentO que controla
Valores comuns
scroll, fixed, localbackground-origin e background-clipO que controla
Valores comuns
padding-box, border-box, text.hero {
/* image | position / size | repeat | colour */
background: url("harbour.webp") center 30% / cover no-repeat #0f172a;
}Como se empilham as camadas de fundo
Lista as camadas de cima para baixo, separadas por vírgulas. Cada camada pode ter a sua posição, tamanho e repetição, dados pela mesma ordem em cada propriedade individual. Só a última camada pode incluir uma cor. Pensa nisso como ler através de uma pilha de papel vegetal.
.section {
background:
radial-gradient(circle at 80% 20%, #f472b6 0%, transparent 45%),
radial-gradient(circle at 15% 85%, #38bdf8 0%, transparent 50%),
linear-gradient(160deg, #1e1b4b 0%, #0f0b1e 100%)
#0f0b1e;
}Usa transparent nas paragens exteriores para que as luzes se misturem com o que estiver por baixo. Para as formas em si, vê o gradiente radial em CSS e o gradiente de malha em CSS.
Um gradiente sobre uma imagem de fundo
O fundo em camadas mais útil dá um tom a uma fotografia para que as palavras por cima se leiam. Põe uma camada de gradiente primeiro e a imagem em segundo. Um gradiente que é escuro onde o texto está e transparente no resto conserva muito mais da fotografia do que uma sobreposição escura uniforme.
.hero {
background:
linear-gradient(90deg, rgb(10 12 24 / 0.85) 0%, rgb(10 12 24 / 0.4) 45%, transparent 70%),
url("terrace.webp") center / cover no-repeat
#0a0c18;
color: #f8fafc;
}Uma sobreposição uniforme torna o texto legível escurecendo tudo por igual.
Uma camada direcional escurece só onde estão as palavras e deixa o resto da cena luminoso.
A sobreposição de gradiente tem mais receitas de sobreposição, e o texto sobre imagem explica quando mover as palavras em vez de escurecer a imagem.
background-size, posição e repetição
coverpreenche a caixa e corta o que sobra. Certo para fotografias e heróis de largura total.containencaixa a imagem inteira dentro e deixa espaços. Certo para logótipos e ilustrações que não devem ser cortados.- Combina
covercom umbackground-positiondeliberado como50% 30%, para que o corte mantenha à vista o rosto do sujeito ou o produto. - As texturas em mosaico querem
repeate um tamanho fixo, por exemplo200px 200px, para o grão se manter igual em todas as larguras de ecrã. background-attachment: fixedcria um efeito de paralaxe no ambiente de trabalho, mas muitos navegadores móveis ignoram-no, por isso nunca dependas dele.
.card {
background:
url("grain.png") 0 0 / 200px 200px repeat,
linear-gradient(135deg, #7c2d12 0%, #ea580c 55%, #fdba74 100%);
}Mais uma propriedade individual merece o seu lugar: background-clip: text corta o fundo à forma das letras, que é como se faz letra com gradiente em CSS. Guarda-a para palavras de destaque grandes, define uma color sólida de reserva e vê o texto com gradiente em CSS para o padrão completo.
Erros a evitar
Evita
- Definir
background-sizee depois a forma abreviada, que o repõe - Uma cor em qualquer camada que não a última
- Nenhuma cor de reserva, e por isso texto ilegível enquanto a imagem carrega
- Uma fotografia enorme para uma caixa com 400 píxeis de largura
- Conteúdo importante só numa imagem de fundo, invisível para leitores de ecrã
Faz
- Escreve primeiro a forma abreviada e só depois as substituições individuais
- Uma cor, no fim da lista
- Uma cor de reserva próxima do tom médio da imagem
- Imagens com o tamanho da caixa, servidas em WebP ou AVIF
- Imagens com significado como
imgcom texto alternativo; a decoração como fundos
Imagens de fundo responsivas e rápidas
O image-set() deixa o navegador escolher entre formatos ou resoluções, tal como o srcset num img. E, como as imagens de fundo só são descobertas depois de o CSS ser analisado, um fundo de herói pode chegar tarde; uma dica de pré-carregamento no head resolve isso.
<link rel="preload" as="image" href="/hero-1920.avif" type="image/avif" fetchpriority="high">
<style>
.hero {
background: image-set(
url("/hero-1920.avif") type("image/avif"),
url("/hero-1920.webp") type("image/webp"),
url("/hero-1920.jpg") type("image/jpeg")
) center / cover no-repeat #0f172a;
}
</style>Muitas vezes o fundo mais rápido é nenhuma imagem. Os gradientes em camadas não custam descarga, e um pequeno mosaico de grão acrescenta textura por alguns quilobytes. O desempenho dos gradientes em CSS e o WebP face a PNG e JPG tratam dos compromissos. Se preferires não afinar à mão a luz e o grão, um Mark do Gradiently dá-te um fundo acabado e distintivo ao tamanho de herói de site de 1920×1080, com o mesmo aspeto das tuas publicações sociais.
Perguntas frequentes
Como acrescento uma imagem de fundo em CSS?
Usa background: url("image.webp") center / cover no-repeat; no elemento, com uma cor de reserva no fim para o caso de a imagem demorar a carregar.
Como ponho um gradiente sobre uma imagem de fundo?
Lista o gradiente primeiro e a imagem em segundo, numa só declaração background, separados por uma vírgula. A primeira camada é pintada por cima.
Posso usar vários fundos em CSS?
Sim. Separa as camadas com vírgulas; cada uma pode ter a sua posição, tamanho e repetição, e só a última camada pode incluir uma cor.
Qual é a diferença entre background-size cover e contain?
cover preenche o elemento todo e corta o excedente; contain mostra a imagem inteira e pode deixar espaço vazio à volta.
Porque deixou de funcionar o meu background-size?
A forma abreviada background repõe todas as propriedades individuais que não menciona. Define background-size depois da forma abreviada, ou inclui-o nela a seguir à posição, com uma barra.
Escrito pela Gradiently
A equipa por trás da Gradiently, uma ferramenta de design construída em torno dos Marks: gradientes vivos que fazem tudo o que crias parecer teu.
Ver o nosso perfil