W3docs

HTML <style> Tag

A tag <style> define a estilização dos elementos de uma página web. Descrição, sintaxe, atributos e exemplos.

A tag <style> incorpora regras de CSS diretamente dentro de um documento HTML. Ela define como os elementos dessa página devem ser exibidos, sem a necessidade de um arquivo de folha de estilos separado. Isso é frequentemente chamado de CSS interno (ou embutido).

Dica

Para carregar CSS a partir de um arquivo separado, use o elemento <link rel="stylesheet">.

Uma página pode conter mais de um elemento <style>, e as regras de todos eles são combinadas.

Por que o <style> pertence ao <head>

O CSS dentro de uma tag <style> é destinado ao navegador, não ao leitor, por isso é colocado dentro do elemento <head>. Existem boas razões para mantê-lo lá:

  • É bloqueante para renderização. O navegador deve ler e aplicar seu CSS antes de poder pintar a página. Colocar os estilos no <head> permite que o navegador saiba como tudo deve parecer antes de desenhar o corpo.
  • Evita o FOUC (Flash Of Unstyled Content). Se os estilos forem definidos tardiamente no documento, o navegador pode exibir brevemente conteúdo sem estilo e depois reaplicar o estilo, causando uma cintilação visível e deslocamento de layout.

O HTML5 tecnicamente permite um elemento <style> dentro do <body> (um navegador ainda aplicará as regras), mas não é recomendado: pode provocar um re-fluxo e o FOUC descrito acima. Mantenha seus estilos no <head>.

Perigo

Nas versões anteriores do HTML e no XHTML, o atributo type="text/css" era obrigatório com a tag <style>. No HTML5, ele é o padrão e pode ser omitido.

Três maneiras de aplicar CSS

A tag <style> é apenas uma das três maneiras de aplicar CSS. Escolher a correta é importante:

MétodoComoMelhor para
Atributo style inline<p style="color: red;">Uma substituição pontual em um único elemento. Difícil de manter e tem a maior especificidade, por isso use com moderação.
<style> internoUm bloco <style> no <head>Estilos necessários para apenas uma página, ou CSS crítico que você deseja incluir inline para evitar uma requisição extra.
<link rel="stylesheet"> externoUm arquivo .css separadoEstilos compartilhados entre muitas páginas. Armazenado em cache pelo navegador e mantém o conteúdo separado da apresentação — a escolha habitual para sites reais.

Veja HTML Styles para uma comparação mais completa.

Sintaxe

A tag <style> vem em pares. O conteúdo é escrito entre as tags de abertura (<style>) e fechamento (</style>).

Exemplo da tag HTML <style>:

Tag HTML <style>

<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
    <style>
      h1 {
        color: #1c87c9;
      }
      p {
        color: #8ebf42;
      }
    </style>
  </head>
  <body>
    <h1>Text heading.</h1>
    <p>First paragraph.</p>
  </body>
</html>

Os seletores (h1, p) dentro do bloco têm como alvo elementos no corpo, e as declarações entre as chaves definem seus estilos.

Resultado

exemplo de style

Aplicando estilos condicionalmente com media

O atributo media permite que um bloco <style> seja aplicado somente quando sua media query corresponder — por exemplo, apenas em telas pequenas, apenas em telas (não impressão), ou apenas na impressão. As regras em um bloco cuja query não corresponde são ignoradas.

<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
    <!-- Always applies -->
    <style>
      p {
        color: #1c87c9;
      }
    </style>
    <!-- Applies only on screens up to 600px wide -->
    <style media="screen and (max-width: 600px)">
      p {
        color: #8ebf42;
        font-size: 20px;
      }
    </style>
  </head>
  <body>
    <p>Resize the window: this text turns green and grows on narrow screens.</p>
  </body>
</html>

Você pode fazer o mesmo no elemento <link> (<link rel="stylesheet" media="..." href="...">).

Atributos

AtributoValorDescrição
mediamedia_queryEspecifica a mídia para a qual os estilos se aplicam, por exemplo, screen and (max-width: 600px). Se omitido, os estilos se aplicam a todas as mídias.
typetext/cssEspecifica o tipo MIME da folha de estilos. Opcional no HTML5, pois text/css é o padrão.

O atributo scoped obsoleto

Você ainda pode encontrar referências a um atributo scoped, que pretendia limitar as regras de um bloco <style> ao elemento pai e seus descendentes. Ele nunca foi amplamente implementado e foi removido do padrão HTML — não o utilize. Para limitar o escopo do CSS hoje, use uma destas abordagens modernas:

  • Shadow DOM (via elementos customizados / web components), onde os estilos são totalmente encapsulados e não vazam para dentro ou fora.
  • Nomes de classe com escopo — um prefixo de classe único por componente, aplicado manualmente ou gerado por ferramentas como CSS Modules.

Prática

Prática
O que é verdadeiro sobre a tag style do HTML?
O que é verdadeiro sobre a tag style do HTML?
Was this page helpful?