Menu

Cor de fundo no CSS: background-color em páginas e divs

background-color preenche a caixa de um elemento com uma cor. Veja como definir a cor de fundo de uma página inteira, de uma div, de uma linha de tabela ou de uma palavra, como funciona a transparência, por que bgcolor está obsoleto e a diferença entre background-color e o shorthand background.

Esta página tem editores executáveis - edite, execute e veja a saída na hora.

Como definir uma cor de fundo

background-color preenche a caixa de um elemento com uma cor, incluindo o padding e a área embaixo da borda. Ela aceita qualquer cor CSS.

A cor da página é definida no body, o card e o aviso nas respectivas divs, e o destaque em um elemento inline. Elementos inline recebem fundo só atrás do texto, linha por linha.

Cor de fundo da página inteira

Coloque background-color no body. Se o elemento <html> não tem fundo próprio, o navegador pinta o fundo do body na janela inteira, mesmo onde o conteúdo do body termina:

body {
  background-color: #111827;
  color: #f9fafb; /* change the text color too, for contrast */
}

O jeito antigo do HTML era <body bgcolor="black">. O atributo bgcolor está obsoleto em todos os elementos, então use CSS. Os navegadores ainda o respeitam em páginas antigas, e é por isso que ele pode parecer funcionar.

Fundos transparentes

Todo elemento começa com background-color: transparent, então você vê o pai atrás dele. Para tingir uma caixa e ainda enxergar através dela, use uma cor com canal alfa:

opacity: 0.5 também deixaria as listras aparecerem, mas esmaece o texto junto. Para um fundo transparente com texto sólido, use uma cor com alfa. A página de cores lista todas as formas de escrever uma.

Onde a cor é pintada

Por padrão, o fundo vai até a borda externa da borda (por isso ele aparece através de uma borda tracejada ou semitransparente). background-clip muda isso:

Na primeira caixa, o âmbar aparece entre os traços. Na segunda, ele para na borda interna da borda, e na terceira só a área de conteúdo é colorida. A margin nunca é pintada: ela é sempre transparente.

Linhas de tabela listradas

Um fundo em linhas alternadas deixa tabelas largas mais fáceis de percorrer com os olhos:

background-color vs o shorthand background

background define todas as propriedades de fundo de uma vez. Qualquer parte que você deixar de fora volta ao padrão, e isso pega muita gente de surpresa:

.hero {
  background-image: linear-gradient(#2563eb, #1e40af);
  background: #111827;          /* also resets background-image to none */
}

.hero {
  background-image: linear-gradient(#2563eb, #1e40af);
  background-color: #111827;    /* only the color; the gradient stays */
}

Use background-color quando você quer só a cor. Use background quando estiver definindo o fundo inteiro em um lugar só, muitas vezes uma cor mais uma imagem; veja background-image.

Acessibilidade: combine com a cor do texto

Uma cor de fundo só é legível junto com a cor do texto. Sempre que definir uma, confira a outra: a WCAG pede uma razão de contraste de pelo menos 4.5:1 para o texto do corpo. Fundos escuros precisam de texto claro definido explicitamente, porque o texto mantém a cor escura que herda.

Erros comuns

  • Usar bgcolor. Está obsoleto. Use background-color.
  • Usar opacity para um fundo transparente. Ela esmaece o conteúdo também. Use uma cor com alfa.
  • Um shorthand background depois de um background-image. Ele zera a imagem. Escreva background-color.
  • Esperar que a margin mostre a cor. A margin fica fora do fundo. Use padding para um espaço colorido.
  • Um fundo escuro com o texto padrão. Defina também um color claro.

Perguntas frequentes

Como mudar a cor de fundo no HTML?

Use a propriedade CSS background-color. Para a página toda: body { background-color: #f3f4f6; }. Para um elemento: <div style="background-color: #fef3c7;">.

O bgcolor ainda é válido no HTML?

Não. O atributo bgcolor em <body>, <table> e <td> está obsoleto no HTML5. Os navegadores ainda o desenham para páginas antigas, mas o jeito certo é background-color no CSS.

Como deixar uma cor de fundo transparente?

Use uma cor com canal alfa, como background-color: rgb(37 99 235 / 20%);. Ao contrário de opacity, isso mantém o texto de dentro totalmente visível.

Qual a diferença entre background e background-color?

background-color define só a cor. background é um shorthand de todas as propriedades de fundo (cor, imagem, posição, tamanho, repetição, attachment, origin e clip), então background: red; também zera qualquer imagem de fundo para none.

Por que a cor de fundo do body preenche a janela inteira?

Quando o elemento <html> não tem fundo próprio, o navegador pinta o fundo do body na tela inteira, mesmo além da caixa do body. Dê um fundo ao html se você precisar que os dois sejam diferentes.

Ilustração das linguagens de programação do Coddy

Aprenda a programar com o Coddy

COMEÇAR