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.

Coddy programming languages illustration

Aprenda a programar com o Coddy

COMEÇAR