Explore os capítulos para aprender sobre CSS de forma prática e eficiente.
CSS é importante para fazer algo bonito. Mas html é necessario para poder usar css. Venha aprender!CSS (Cascading Style Sheets) é uma linguagem utilizada para estilizar documentos HTML. Com o CSS, você pode controlar a aparência de elementos na página, como cores, fontes, espaçamento e muito mais.
|
Existem três formas principais de aplicar CSS:
style
de um elemento HTML.<style>
no cabeçalho do documento HTML.Exemplo | Descrição |
---|---|
|
Seleciona todos os elementos <p> e altera a cor para azul. |
|
Seleciona o elemento com id principal e altera o fundo para amarelo. |
|
Seleciona todos os elementos com a classe destaque e deixa o texto em negrito. |
Os seletores são usados para "apontar" para elementos HTML específicos e aplicar estilos a eles. Existem diferentes tipos de seletores no CSS:
Exemplo de seletores básicos:
Código CSS |
---|
|
Seletor | Exemplo | Descrição do Exemplo |
---|---|---|
#id |
#principal |
Seleciona o elemento com id="principal" |
.class |
.destaque |
Seleciona todos os elementos com class="destaque" |
* |
* |
Seleciona todos os elementos |
elemento |
p |
Seleciona todos os elementos <p> |
elemento, elemento,... |
div, p |
Seleciona todos os elementos <div> e <p> |
Você pode especificar cores no CSS de várias maneiras:
red
, blue
, green
, etc.#ff0000
(vermelho), #00ff00
(verde).rgb(255, 0, 0)
(vermelho).hsl(0, 100%, 50%)
(vermelho).Código CSS |
---|
|
Um seletor CSS seleciona o(s) elemento(s) HTML que você deseja estilizar.
Os seletores CSS são usados para "encontrar" (ou selecionar) os elementos HTML que você deseja estilizar.
Podemos dividir os seletores CSS em cinco categorias:
Esta página explicará os seletores CSS mais básicos.
O seletor de elementos seleciona elementos HTML com base no nome do elemento.
Exemplo:
Código CSS |
---|
|
Aqui, todos os elementos <p>
na página serão centralizados, com uma cor de texto vermelha.
O seletor id usa o atributo id
de um elemento HTML para selecionar um elemento específico.
O id de um elemento é único dentro de uma página, então o seletor id é usado para selecionar um elemento único!
Para selecionar um elemento com um id específico, escreva um caractere hash (#
), seguido do id do elemento.
Exemplo:
Código CSS |
---|
|
A regra CSS abaixo será aplicada ao elemento HTML com id="para1"
:
Observação: um nome de ID não pode começar com um número!
O seletor de classe seleciona elementos HTML com um atributo de classe específico.
Para selecionar elementos com uma classe específica, escreva um ponto (.
), seguido do nome da classe.
CSS | Descrição |
---|---|
.center { |
Todos os elementos HTML com class="center" ficarão vermelhos e centralizados. |
Você também pode especificar que apenas elementos HTML específicos devem ser afetados por uma classe.
<p>
):CSS | Descrição |
---|---|
p.center { |
Apenas os elementos <p> com class="center" serão vermelhos e centralizados. |
Os elementos HTML também podem se referir a mais de uma classe.
HTML | Descrição |
---|---|
<p class="center large">Este parágrafo se refere a duas classes.</p> |
O elemento <p> será estilizado de acordo com class="center" e class="large" . |
Observação: um nome de classe não pode começar com um número!
O seletor universal (*
) seleciona todos os elementos HTML na página.
CSS | Descrição |
---|---|
* { |
A regra CSS acima afetará todos os elementos HTML na página. |
O seletor de agrupamento seleciona todos os elementos HTML com as mesmas definições de estilo.
Observe o seguinte código CSS (os elementos h1
, h2
e p
têm as mesmas definições de estilo):
CSS | Descrição |
---|---|
h1 { |
Aplica as mesmas definições de estilo a h1 , h2 e p . |
Será melhor agrupar os seletores para minimizar o código.
Para agrupar seletores, separe cada seletor com uma vírgula.
CSS | Descrição |
---|---|
h1, h2, p { |
Agrupa os seletores, evitando repetição de código. |
Seletor | Exemplo | Descrição do Exemplo |
---|---|---|
#id |
#firstname |
Seleciona o elemento com id="firstname" |
.class |
.intro |
Seleciona todos os elementos com class="intro" |
* |
* |
Seleciona todos os elementos |
elemento |
p |
Seleciona todos os elementos <p> |
elemento,elemento,.. |
div, p |
Seleciona todos os elementos <div> e todos os elementos <p> |
Uma folha de estilo interna pode ser usada se uma única página HTML tiver um estilo único. O estilo interno é definido dentro do elemento <style>
, dentro da seção <head>
.
HTML | Descrição |
---|---|
<!DOCTYPE html>
|
Estilos internos definidos dentro do elemento <style> , dentro da seção <head> , afetando o body e o h1 . |
Um estilo embutido pode ser usado para aplicar um estilo exclusivo para um único elemento. Para usar estilos inline, adicione o atributo style
ao elemento relevante.
HTML | Descrição |
---|---|
<!DOCTYPE html>
|
Estilos embutidos aplicados diretamente nos elementos usando o atributo style . |
Dica: Um estilo inline perde muitas das vantagens de uma folha de estilo (por misturar conteúdo com apresentação). Use esse método com moderação.
Se algumas propriedades tiverem sido definidas para o mesmo seletor (elemento) em folhas de estilo diferentes, o valor da última folha de estilo lida será usado.
HTML | Descrição |
---|---|
<head>
|
O estilo interno será aplicado após o estilo externo, portanto, o elemento h1 ficará "laranja". |
Entretanto, se o estilo interno for definido antes do link para a folha de estilo externa, os elementos h1
serão "navy".
HTML | Descrição |
---|---|
<head>
|
O estilo interno será aplicado antes do estilo externo, fazendo com que o h1 seja "laranja". |
Qual estilo será usado quando houver mais de um estilo especificado para um elemento HTML?
Todos os estilos em uma página serão "em cascata" em uma nova folha de estilo "virtual" pelas seguintes regras, onde o número um tem a maior prioridade:
<head>
)Portanto, um estilo embutido tem a maior prioridade e substituirá os estilos externos e internos, bem como os padrões do navegador.
Existem três maneiras de inserir uma folha de estilo:
Com uma folha de estilo externa, você pode mudar a aparência de um site inteiro alterando apenas um arquivo! Cada página HTML deve incluir uma referência ao arquivo de folha de estilo externo dentro do elemento <link>
, dentro da seção <head>
.
HTML | Descrição |
---|---|
<!DOCTYPE html>
|
Referencia uma folha de estilo externa com o arquivo mystyle.css . |
Uma folha de estilo externa pode ser escrita em qualquer editor de texto e deve ser salva com uma extensão .css. O arquivo .css externo não deve conter nenhuma tag HTML.
Arquivo CSS | Descrição |
---|---|
body {
|
Este é o conteúdo do arquivo CSS externo chamado mystyle.css . |
Nota: Não adicione um espaço entre o valor da propriedade (20) e a unidade (px).
Exemplo incorreto: margin-left: 20 px;
Exemplo correto: margin-left: 20px;
Os comentários CSS não são exibidos no navegador, mas podem ajudar a documentar seu código-fonte.
Comentários CSS são usados para explicar o código e podem ser úteis quando você editar o código-fonte posteriormente. Comentários são ignorados pelos navegadores.
Um comentário CSS é colocado dentro do elemento <style>
e começa com /*
e termina com */
.
HTML | Descrição |
---|---|
/* Este é um comentário de uma linha */
|
Comentário de uma linha. O navegador ignora o comentário. |
HTML | Descrição |
---|---|
p {
|
Comentário no meio de uma linha de código para explicar o estilo aplicado. |
HTML | Descrição |
---|---|
/* Este é um
|
Comentário que abrange várias linhas para explicar em mais detalhes o que está acontecendo. |
No tutorial de HTML, você aprendeu que pode adicionar comentários ao seu código-fonte HTML usando a sintaxe .
HTML | Descrição |
---|---|
<!DOCTYPE html>
|
Usando uma combinação de comentários HTML e CSS. O comentário CSS dentro do elemento <style> e o comentário HTML dentro do corpo da página. |
As cores em CSS podem ser especificadas usando nomes de cores predefinidos ou valores RGB, HEX, HSL, RGBA, HSLA.
Em CSS, uma cor pode ser especificada usando um nome de cor predefinido. Aqui estão 40 cores com seus respectivos nomes:
Red | Green | Blue | Yellow |
Orange | Purple | Pink | Cyan |
Black | White | Gray | Brown |
Magenta | Turquoise | Violet | Beige |
Khaki | Indigo | Lime | Silver |
Você pode definir a cor de fundo para os elementos HTML:
Olá Mundo
Lorem ipsum...
Você pode definir a cor do texto:
Olá Mundo
Lorem ipsum...
Ut wisi enim...
Você pode definir a cor das bordas:
Olá Mundo
Olá Mundo
Olá Mundo
Em CSS, as cores também podem ser especificadas usando valores RGB, HEX, HSL, RGBA e HSLA:
Mesma cor do nome "Tomato", mas 50% transparente:
...
...
...
...
...
As propriedades de fundo CSS são usadas para adicionar efeitos de fundo aos elementos.
Neste capítulo, você aprenderá sobre as seguintes propriedades de fundo CSS:
background-color
background-image
background-repeat
background-attachment
background-position
background
(propriedade abreviada)A propriedade background-color
especifica a cor de fundo de um elemento.
CSS | Descrição |
---|---|
body {
|
Define a cor de fundo do elemento body como lightblue . |
Com CSS, uma cor pode ser geralmente especificada por:
Você pode definir a cor de fundo para qualquer elemento HTML:
CSS | Descrição |
---|---|
h1 {
|
Define diferentes cores de fundo para h1 , div e p . |
A propriedade opacity
especifica a opacidade ou transparência de um elemento. Pode assumir valores entre 0,0 e 1,0, onde 0,0 é totalmente transparente e 1,0 é totalmente opaco.
CSS | Descrição |
---|---|
div {
|
Define a cor de fundo como verde com 30% de opacidade. |
Nota: Ao usar a propriedade opacity
, todos os elementos filhos herdam a mesma transparência.
Se você não quiser aplicar opacidade aos elementos filhos, use valores de cor RGBA. O exemplo a seguir define a opacidade para a cor de fundo, mas não para o texto:
CSS | Descrição |
---|---|
div {
|
Define a cor de fundo usando RGBA, com 30% de opacidade para o fundo. |
Um valor de cor RGBA é especificado com: rgba(red, green, blue, alpha)
, onde o parâmetro alpha
é um número entre 0,0 (totalmente transparente) e 1,0 (totalmente opaco).
background
A propriedade background
é uma forma abreviada para definir todas as propriedades de fundo de uma vez. Isso pode incluir background-color
, background-image
, background-repeat
, background-attachment
, e background-position
.
CSS | Descrição |
---|---|
div {
|
Usa a propriedade abreviada background para definir a cor de fundo, a imagem de fundo, o comportamento de repetição e a posição do fundo. |
A propriedade background-image
especifica uma imagem a ser usada como plano de fundo de um elemento.
Por padrão, a imagem é repetida para cobrir todo o elemento.
CSS | Descrição |
---|---|
body {
|
Define a imagem de fundo para o elemento body usando o arquivo de imagem paper.gif . |
Observação: ao usar uma imagem de fundo, utilize uma que não atrapalhe o texto.
A imagem de fundo também pode ser definida para elementos específicos, como o elemento <p>
:
CSS | Descrição |
---|---|
p {
|
Define a imagem de fundo para o elemento <p> usando o arquivo de imagem paper.gif . |
Propriedade | Descrição |
---|---|
background-image |
Define a imagem de fundo para um elemento. |
Por padrão, a propriedade background-image
repete uma imagem horizontal e verticalmente.
Algumas imagens devem ser repetidas apenas na horizontal ou na vertical, ou ficarão estranhas, como esta:
CSS | Descrição |
---|---|
body {
|
Define a imagem de fundo para o elemento body usando o arquivo de imagem gradient_bg.png , com a repetição padrão da imagem. |
Se a imagem acima for repetida apenas na horizontal, o fundo ficará melhor:
CSS | Descrição |
---|---|
body {
|
Define a imagem de fundo e a repete apenas na horizontal, usando background-repeat: repeat-x . |
Dica: Para repetir a imagem verticalmente, defina background-repeat: repeat-y;
Mostrar a imagem de fundo apenas uma vez também é especificado pela propriedade background-repeat
:
CSS | Descrição |
---|---|
body {
|
Define a imagem de fundo para o elemento body , sem repetição, usando background-repeat: no-repeat . |
No exemplo acima, a imagem de fundo é colocada no mesmo lugar que o texto. Queremos mudar a posição da imagem, para que ela não perturbe muito o texto.
A propriedade background-position
é usada para especificar a posição da imagem de fundo.
CSS | Descrição |
---|---|
body {
|
Posiciona a imagem de fundo no canto superior direito, usando background-position: right top . |
A propriedade background-attachment
especifica se a imagem de fundo deve rolar ou ser fixa (não rolará com o resto da página):
CSS | Descrição |
---|---|
body {
|
Especifica que a imagem de fundo deve ser fixa e não rolar com o conteúdo da página, utilizando background-attachment: fixed . |
CSS | Descrição |
---|---|
body {
|
Especifica que a imagem de fundo deve rolar com o conteúdo da página, utilizando background-attachment: scroll . |
Propriedade | Descrição |
---|---|
background-attachment |
Define se a imagem de fundo é fixa ou rola com o restante da página. |
Contexto CSS - Propriedade Abreviada
Para encurtar o código, também é possível especificar todas as propriedades de fundo em uma única propriedade. Isso é chamado de propriedade abreviada.
CSS | Descrição |
---|---|
body {
|
Usa a propriedade abreviada background para definir várias propriedades de fundo em uma única declaração, incluindo cor, imagem, repetição e posição. |
Ao usar a propriedade abreviada, a ordem dos valores deve ser a seguinte:
background-color
background-image
background-repeat
background-attachment
background-position
Não importa se um dos valores está faltando, desde que os outros estejam nesta ordem. Note que não usamos a propriedade background-attachment
nos exemplos acima, pois ela não tem um valor definido.
Propriedade | Descrição |
---|---|
background |
Define todas as propriedades de fundo em uma única declaração. |
background-attachment |
Define se a imagem de fundo é fixa ou rola com o restante da página. |
background-clip |
Especifica a área de pintura do fundo. |
background-color |
Define a cor de fundo de um elemento. |
background-image |
Define a imagem de fundo para um elemento. |
background-origin |
Especifica onde a imagem de fundo é posicionada. |
background-position |
Define a posição inicial da imagem de fundo. |
background-repeat |
Define como a imagem de fundo será repetida. |
background-size |
Especifica o tamanho da imagem de fundo. |
As propriedades de borda CSS permitem que você especifique o estilo, a largura e a cor da borda de um elemento.
A propriedade border-style
especifica que tipo de borda será exibida.
Os seguintes valores são permitidos:
dotted
- Define uma borda pontilhada.dashed
- Define uma borda tracejada.solid
- Define uma borda sólida.double
- Define uma borda dupla.groove
- Define uma borda ranhurada 3D. O efeito depende do valor border-color
.ridge
- Define uma borda 3D com sulcos. O efeito depende do valor border-color
.inset
- Define uma borda de inserção 3D. O efeito depende do valor border-color
.outset
- Define uma borda de início 3D. O efeito depende do valor border-color
.none
- Não define nenhuma borda.hidden
- Define uma borda oculta.A propriedade border-style
pode ter de um a quatro valores (para a borda superior, borda direita, borda inferior e borda esquerda).
Classe | CSS |
---|---|
.dotted |
border-style: dotted; |
.dashed |
border-style: dashed; |
.solid |
border-style: solid; |
.double |
border-style: double; |
.groove |
border-style: groove; |
.ridge |
border-style: ridge; |
.inset |
border-style: inset; |
.outset |
border-style: outset; |
.none |
border-style: none; |
.hidden |
border-style: hidden; |
.mix |
border-style: dotted dashed solid double; |
Observação: Nenhuma das outras propriedades de borda CSS (sobre as quais você aprenderá mais nos próximos capítulos) terá efeito, a menos que a propriedade border-style
seja definida.
A propriedade border-width
especifica a largura das quatro bordas.
A largura pode ser definida como um tamanho específico (em px, pt, cm, em, etc.) ou usando um dos três valores predefinidos: fino, médio ou grosso.
Classe | CSS |
---|---|
.one |
border-style: solid; border-width: 5px; |
.two |
border-style: solid; border-width: medium; |
.three |
border-style: dotted; border-width: 2px; |
.four |
border-style: dotted; border-width: thick; |
Resultado:
A propriedade border-width
pode ter de um a quatro valores (para a borda superior, borda direita, borda inferior e borda esquerda):
Classe | CSS |
---|---|
.one |
border-style: solid; border-width: 5px 20px; (5px para cima e embaixo, 20px para os lados) |
.two |
border-style: solid; border-width: 20px 5px; (20px para cima e embaixo, 5px para os lados) |
.three |
border-style: solid; border-width: 25px 10px 4px 35px; (25px para cima, 10px para a direita, 4px para baixo e 35px para a esquerda) |
A propriedade border-color
é usada para definir a cor das quatro bordas.
A cor pode ser definida de várias formas:
Nota: Se border-color
não for definido, ele herda a cor do elemento.
Classe | CSS |
---|---|
.one |
border-style: solid; border-color: red; |
.two |
border-style: solid; border-color: green; |
.three |
border-style: dotted; border-color: blue; |
Resultado:
A propriedade border-color
pode ter de um a quatro valores (para a borda superior, borda direita, borda inferior e borda esquerda).
Classe | CSS |
---|---|
.one |
border-style: solid; border-color: red green blue yellow; |
Resultado: Borda superior vermelha, borda direita verde, borda inferior azul e borda esquerda amarela.
Você também pode especificar a cor da borda usando valores HEX, RGB ou HSL.
Classe | CSS |
---|---|
.one |
border-style: solid; border-color: #ff0000; (vermelho) |
Classe | CSS |
---|---|
.one |
border-style: solid; border-color: rgb(255, 0, 0); (vermelho) |
Classe | CSS |
---|---|
.one |
border-style: solid; border-color: hsl(0, 100%, 50%); (vermelho) |
Pelos exemplos das páginas anteriores, você viu que é possível especificar uma borda diferente para cada lado.
Em CSS, também existem propriedades para especificar cada uma das bordas (superior, direita, inferior e esquerda):
Classe | CSS |
---|---|
.one |
border-top-style: dotted; border-right-style: solid; border-bottom-style: dotted; border-left-style: solid; |
Resultado: Bordas com estilos diferentes para cada lado.
border-style
com Vários ValoresA propriedade border-style
pode ter de um a quatro valores:
Classe | CSS |
---|---|
.one |
border-style: dotted solid double dashed; |
Classe | CSS |
---|---|
.two |
border-style: dotted solid double; |
Classe | CSS |
---|---|
.three |
border-style: dotted solid; |
Classe | CSS |
---|---|
.four |
border-style: dotted; |
Esses exemplos mostram como a propriedade border-style
pode ser combinada com diferentes valores para os quatro lados da borda.
Em CSS, você pode especificar uma borda diferente para cada lado de um elemento. Para isso, existem propriedades específicas para cada uma das bordas (superior, direita, inferior e esquerda).
Classe | CSS |
---|---|
.one |
border-top-style: dotted; border-right-style: solid; border-bottom-style: dotted; border-left-style: solid; |
Resultado: Bordas com estilos diferentes para cada lado.
O exemplo acima pode ser escrito de forma mais compacta usando a propriedade border-style
com múltiplos valores.
border-style
com diferentes números de valoresClasse | CSS |
---|---|
.two |
border-style: dotted solid double dashed; |
.three |
border-style: dotted solid double; |
.four |
border-style: dotted solid; |
.five |
border-style: dotted; |
border-style
tiver quatro valores: A borda superior é pontilhada, a borda direita é sólida, a borda inferior é dupla e a borda esquerda é tracejada.border-style
tiver três valores: A borda superior é pontilhada, as bordas direita e esquerda são sólidas, e a borda inferior é dupla.border-style
tiver dois valores: As bordas superior e inferior são pontilhadas, e as bordas direita e esquerda são sólidas.border-style
tiver um valor: Todas as quatro bordas terão o estilo pontilhado.Para encurtar o código, você pode especificar todas as propriedades de borda individuais usando uma única propriedade abreviada chamada border
.
border
abreviadaClasse | CSS |
---|---|
.six |
border: 5px solid red; |
Resultado: Uma borda de 5px, estilo sólido e cor vermelha em todos os lados.
Você também pode especificar todas as propriedades de borda para apenas um lado usando a propriedade abreviada, como border-left
, border-bottom
, etc.
Classe | CSS |
---|---|
.seven |
border-left: 6px solid red; |
Resultado: Borda esquerda de 6px, estilo sólido e cor vermelha.
Classe | CSS |
---|---|
.eight |
border-bottom: 6px solid red; |
Resultado: Borda inferior de 6px, estilo sólido e cor vermelha.
A propriedade border-radius
é usada para adicionar bordas arredondadas a um elemento.
Borda normal
Borda redonda
Borda mais redonda
Borda ainda mais redonda
p { border: 2px solid red; border-radius: 5px; }
Aqui estão alguns exemplos de como definir diferentes propriedades de borda usando propriedades abreviadas.
Classe | CSS |
---|---|
.bordasuperior |
border-top: 5px solid blue; |
Classe | CSS |
---|---|
.bordaInferior |
border-bottom: 5px dashed green; |
Classe | CSS |
---|---|
.bordaEsquerda |
border-left: 5px solid yellow; |
Classe | CSS |
---|---|
.bordasColoridas |
border-color: red green blue yellow; |
Classe | CSS |
---|---|
.bordaDireita |
border-right: 5px solid purple; |
Lista de todas as propriedades relacionadas a bordas em CSS:
Propriedade | Descrição |
---|---|
border |
Define todas as propriedades de borda em uma única declaração. |
border-bottom |
Define todas as propriedades da borda inferior em uma única declaração. |
border-bottom-color |
Define a cor da borda inferior. |
border-bottom-style |
Define o estilo da borda inferior. |
border-bottom-width |
Define a largura da borda inferior. |
border-color |
Define a cor das quatro bordas. |
border-left |
Define todas as propriedades da borda esquerda em uma única declaração. |
border-left-color |
Define a cor da borda esquerda. |
border-left-style |
Define o estilo da borda esquerda. |
border-left-width |
Define a largura da borda esquerda. |
border-radius |
Define todas as propriedades de borda para cantos arredondados. |
border-right |
Define todas as propriedades da borda direita em uma única declaração. |
border-right-color |
Define a cor da borda direita. |
border-right-style |
Define o estilo da borda direita. |
border-right-width |
Define a largura da borda direita. |
border-style |
Define o estilo de todas as quatro bordas. |
border-top |
Define todas as propriedades da borda superior em uma única declaração. |
border-top-color |
Define a cor da borda superior. |
border-top-style |
Define o estilo da borda superior. |
border-top-width |
Define a largura da borda superior. |
border-width |
Define a largura de todas as quatro bordas. |
Margens são usadas para criar espaço ao redor de elementos, fora de quaisquer bordas definidas.
As propriedades CSS margin
são usadas para criar espaço ao redor dos elementos, fora de quaisquer bordas definidas.
Com CSS, você tem controle total sobre as margens. Há propriedades para definir a margem para cada lado de um elemento (superior, direito, inferior e esquerdo).
CSS tem propriedades para especificar a margem de cada lado de um elemento:
margin-top
margin-right
margin-bottom
margin-left
As propriedades de margem podem ter os seguintes valores:
auto
- o navegador calcula a margem.comprimento
- especifica uma margem em px, pt, cm, etc.%
- especifica uma margem em % da largura do elemento que contém.herdar
- especifica que a margem deve ser herdada do elemento pai.Dica: Valores negativos são permitidos.
p { margin-top: 100px; margin-bottom: 100px; margin-right: 150px; margin-left: 80px; }
Para encurtar o código, é possível especificar todas as propriedades de margem em uma única propriedade.
A propriedade margin
é uma propriedade abreviada para as seguintes propriedades de margem individuais:
margin-top
margin-right
margin-bottom
margin-left
Então, é assim que funciona:
margin
tiver quatro valores: margin: 25px 50px 75px 100px;
CSS | Descrição |
---|---|
p {
|
Define margens superiores, direita, inferiores e esquerda com os valores fornecidos: 25px, 50px, 75px e 100px, respectivamente. |
margin
tiver três valores:CSS | Descrição |
---|---|
p {
|
Define margem superior de 25px, margens direita e esquerda de 50px e margem inferior de 75px. |
margin
tiver dois valores:CSS | Descrição |
---|---|
p {
|
Define margens superior e inferior de 25px e margens direita e esquerda de 50px. |
margin
tiver um valor:CSS | Descrição |
---|---|
p {
|
Define todas as quatro margens com o valor de 25px. |
Você pode definir a propriedade margin
para auto
para centralizar horizontalmente o elemento dentro de seu contêiner.
O elemento ocupará a largura especificada e o espaço restante será dividido igualmente entre as margens esquerda e direita.
CSS | Descrição |
---|---|
div {
|
Define a largura do elemento div como 300px e utiliza margin: auto para centralizá-lo horizontalmente. |
Este exemplo permite que a margem esquerda do elemento <p class="ex1">
seja herdada do elemento pai (<div>
).
CSS | Descrição |
---|---|
div {
|
Define uma margem esquerda de 100px no elemento div e faz com que o elemento p.ex1 herde essa margem esquerda. |
Às vezes, duas margens se transformam em uma única margem.
As margens superior e inferior dos elementos às vezes são reduzidas a uma única margem, que é igual à maior das duas margens.
Isso não acontece nas margens esquerda e direita! Só nas margens superior e inferior!
h1 |
{ margin: 0 0 50px 0; } |
h2 |
{ margin: 20px 0 0 0; } |
No exemplo acima, o elemento <h1>
tem uma margem inferior de 50px e o elemento <h2>
tem uma margem superior definida como 20px.
O senso comum sugeriria que a margem vertical entre <h1>
e <h2>
seria de 70px (50px + 20px), mas devido ao colapso da margem, a margem real acaba sendo 50px.
Propriedade | Descrição |
---|---|
margin |
Propriedade abreviada para definir todas as margens em uma declaração. |
margin-bottom |
Define a margem inferior de um elemento. |
margin-left |
Define a margem esquerda de um elemento. |
margin-right |
Define a margem direita de um elemento. |
margin-top |
Define a margem superior de um elemento. |
O preenchimento é usado para criar espaço ao redor do conteúdo de um elemento, dentro de quaisquer bordas definidas.
Este elemento tem um preenchimento de 70px. |
As propriedades CSS padding
são usadas para gerar espaço ao redor do conteúdo de um elemento, dentro de quaisquer bordas definidas.
Com CSS, você tem controle total sobre o padding. Há propriedades para definir o padding para cada lado de um elemento (topo, direita, base e esquerda).
CSS tem propriedades para especificar o preenchimento para cada lado de um elemento:
padding-top
padding-right
padding-bottom
padding-left
As propriedades de preenchimento podem ter os seguintes valores:
comprimento
- especifica um preenchimento em px, pt, cm, etc.%
- especifica um preenchimento em % da largura do elemento que o contém.herdar
- especifica que o preenchimento deve ser herdado do elemento pai.Observação: valores negativos não são permitidos.
div |
{ padding-top: 50px; padding-right: 30px; padding-bottom: 50px; padding-left: 80px; } |
Para encurtar o código, é possível especificar todas as propriedades de preenchimento em uma única propriedade.
A propriedade padding
é uma propriedade abreviada para as seguintes propriedades de preenchimento individuais:
padding-top
padding-right
padding-bottom
padding-left
Então, é assim que funciona:
padding
tiver quatro valores: padding: 25px 50px 75px 100px;
div |
{ padding: 25px 50px 75px 100px; } |
padding
tiver três valores:div |
{ padding: 25px 50px 75px; } |
padding
tiver dois valores:div |
{ padding: 25px 50px; } |
padding
tiver um valor:div |
{ padding: 25px; } |
A propriedade CSS width
especifica a largura da área de conteúdo do elemento. A área de conteúdo é a porção dentro do padding, border e margin de um elemento (o box model).
Então, se um elemento tem uma largura especificada, o padding adicionado a esse elemento será adicionado à largura total do elemento. Esse é frequentemente um resultado indesejável.
div |
{ width: 300px; padding: 25px; } |
No exemplo acima, o elemento <div>
recebe uma largura de 300px. No entanto, a largura real do elemento será 350px (300px + 25px de preenchimento esquerdo + 25px de preenchimento direito).
Para manter a largura em 300px, não importa a quantidade de padding, você pode usar a propriedade box-sizing
. Isso faz com que o elemento mantenha sua largura real, mesmo se o padding aumentar.
div |
{ width: 300px; padding: 25px; box-sizing: border-box; } |
Defina o preenchimento esquerdo:
p |
{ padding-left: 50px; } |
Defina o preenchimento direito:
p |
{ padding-right: 50px; } |
Defina o preenchimento superior:
p |
{ padding-top: 50px; } |
Defina o preenchimento inferior:
p |
{ padding-bottom: 50px; } |
Propriedade | Descrição |
---|---|
padding |
Propriedade abreviada para definir todas as propriedades de preenchimento em uma declaração. |
padding-bottom |
Define o preenchimento inferior de um elemento. |
padding-left |
Define o preenchimento esquerdo de um elemento. |
padding-right |
Define o preenchimento direito de um elemento. |
padding-top |
Define o preenchimento superior de um elemento. |
O CSS height
e width
são propriedades usadas para definir a altura e a largura de um elemento.
A max-width
propriedade CSS é usada para definir a largura máxima de um elemento.
Este elemento tem uma altura de 50 pixels e uma largura de 100%.
As propriedades height
e width
são usadas para definir a altura e a largura de um elemento.
As propriedades height
e width
não incluem padding, bordas ou margens. Elas definem a altura/largura da área dentro do padding, borda e margem do elemento.
As propriedades height
e width
podem ter os seguintes valores:
auto
- Este é o padrão. O navegador calcula a altura e a largura.length
- Define a altura/largura em px, cm, etc.%
- Define a altura/largura em porcentagem do bloco que o contém.initial
- Define a altura/largura para seu valor padrão.inherit
- A altura/largura será herdada do valor pai.Este elemento tem uma altura de 200 pixels e uma largura de 50%:
|
Este elemento tem uma altura de 100 pixels e uma largura de 500 pixels:
|
Nota: Lembre-se de que as propriedades height
e width
não incluem padding, bordas ou margens! Elas definem a altura/largura da área dentro do padding, borda e margem do elemento.
A max-width
propriedade é usada para definir a largura máxima de um elemento.
Pode max-width
ser especificado em valores de comprimento, como px, cm, etc., ou em porcentagem (%) do bloco que o contém, ou definido como nenhum (este é o padrão. Significa que não há largura máxima).
O problema com o <div>
acima ocorre quando a janela do navegador é menor que a largura do elemento (500px). O navegador então adiciona uma barra de rolagem horizontal à página.
Usar max-width
em vez disso, nessa situação, melhorará o manuseio de janelas pequenas pelo navegador.
Dica: Arraste a janela do navegador para uma largura menor que 500px para ver a diferença entre os dois div
s!
Este elemento tem uma altura de 100 pixels e uma largura máxima de 500 pixels:
|
Este exemplo demonstra como definir a altura e a largura de diferentes elementos.
Este exemplo demonstra como definir a altura e a largura de uma imagem usando um valor percentual.
Este exemplo demonstra como definir uma largura mínima e uma largura máxima de um elemento usando um valor de pixel.
Este exemplo demonstra como definir uma altura mínima e uma altura máxima de um elemento usando um valor de pixel.
Propriedade | Descrição |
---|---|
height | Define a altura de um elemento. |
max-height | Define a altura máxima de um elemento. |
max-width | Define a largura máxima de um elemento. |
min-height | Define a altura mínima de um elemento. |
min-width | Define a largura mínima de um elemento. |
width | Define a largura de um elemento. |
Todos os elementos HTML podem ser considerados caixas.
Em CSS, o termo "modelo de caixa" é usado quando se fala em design e layout.
O modelo de caixa CSS é essencialmente uma caixa que envolve cada elemento HTML. Ele consiste em: conteúdo, preenchimento, bordas e margens. A imagem abaixo ilustra o modelo de caixa:
O modelo de caixa nos permite adicionar uma borda ao redor dos elementos e definir o espaço entre eles.
Demonstração do modelo de caixa:
|
Para definir a largura e a altura de um elemento corretamente em todos os navegadores, você precisa saber como o modelo de caixa funciona.
Importante: Quando você define as propriedades width
e height
de um elemento com CSS, você apenas define a largura e altura da área de conteúdo. Para calcular a largura e altura totais de um elemento, você também deve incluir o padding e as bordas.
Este elemento <div>
terá uma largura total de 350px e uma altura total de 80px:
|
Aqui está o cálculo:
A largura total de um elemento deve ser calculada assim:
Largura total do elemento = largura + preenchimento esquerdo + preenchimento direito + borda esquerda + borda direita
A altura total de um elemento deve ser calculada assim:
Altura total do elemento = altura + preenchimento superior + preenchimento inferior + borda superior + borda inferior
A propriedade margin
também afeta o espaço total que a caixa ocupará na página, mas a margem não está incluída no tamanho real da caixa. A largura e a altura totais da caixa param na borda.
Um contorno é uma linha desenhada fora da borda do elemento.
Um contorno é uma linha desenhada ao redor de elementos, FORA das bordas, para fazer o elemento "se destacar".
CSS tem as seguintes propriedades de estrutura:
Nota: O outline
é diferente de borders
! Diferentemente de border
, o outline
é desenhado fora da borda do elemento e pode sobrepor outro conteúdo. Além disso, o outline
NÃO é parte das dimensões do elemento; a largura e altura totais do elemento não são afetadas pela largura do outline
.
A outline-style
propriedade especifica o estilo do contorno e pode ter um dos seguintes valores:
O exemplo a seguir mostra os diferentes valores de outline-style
:
A dotted outline. |
A dashed outline. |
A solid outline. |
A double outline. |
A groove outline. The effect depends on the outline-color value. |
A ridge outline. The effect depends on the outline-color value. |
An inset outline. The effect depends on the outline-color value. |
An outset outline. The effect depends on the outline-color value. |
Observação: Nenhuma das outras propriedades de estrutura de tópicos (sobre as quais você aprenderá mais nos próximos capítulos) terá QUALQUER efeito, a menos que a outline-style
propriedade seja definida!
A outline-width
propriedade especifica a largura do contorno e pode ter um dos seguintes valores:
O exemplo a seguir mostra alguns contornos com larguras diferentes:
Um contorno fino. |
Um contorno médio. |
Um contorno grosso. |
Um contorno de 4px de espessura. |
Veja abaixo o código CSS para os exemplos acima:
|
|
|
|
A outline-color
propriedade é usada para definir a cor do contorno.
A cor pode ser definida por:
O exemplo a seguir mostra alguns contornos diferentes com cores diferentes. Observe também que esses elementos também têm uma borda preta fina dentro do contorno:
Um contorno vermelho sólido. |
Um contorno azul pontilhado. |
Um contorno cinza inicial. |
Veja abaixo o código CSS para os exemplos acima:
|
|
|
A cor do contorno também pode ser especificada usando um valor hexadecimal (HEX):
|
Ou usando valores RGB:
|
Você também pode usar valores HSL:
|
A outline
é uma propriedade abreviada para definir as seguintes propriedades de estrutura individuais:
outline-width
outline-style
(obrigatório)outline-color
A outline
propriedade é especificada como um, dois ou três valores da lista acima. A ordem dos valores não importa.
O exemplo a seguir mostra alguns contornos especificados com a outline
propriedade shorthand:
Um contorno tracejado. |
Um contorno vermelho pontilhado. |
Um contorno amarelo sólido de 5px. |
Um contorno rosa espesso e ondulado. |
Veja abaixo o código CSS para os exemplos acima:
|
|
|
|
A outline-offset
propriedade adiciona espaço entre um contorno e a borda/borda de um elemento. O espaço entre um elemento e seu contorno é transparente.
O exemplo a seguir especifica um contorno de 15px fora da borda:
|
O exemplo a seguir mostra que o espaço entre um elemento e seu contorno é transparente:
|
Propriedade | Descrição |
---|---|
outline |
Propriedade abreviada para definir outline-width , outline-style , e outline-color em uma declaração |
outline-color |
Define a cor de um contorno |
outline-offset |
Especifica o espaço entre um contorno e a borda ou borda de um elemento |
outline-style |
Define o estilo de um contorno |
outline-width |
Define a largura de um contorno |
Este texto é estilizado com algumas das propriedades de formatação de texto. O título usa as propriedades text-align
, text-transform
e color
. O parágrafo é recuado, alinhado e o espaço entre os caracteres é especificado. O sublinhado é removido deste link colorido "Tente você mesmo".
A color
propriedade é usada para definir a cor do texto. A cor pode ser especificada por:
A cor padrão do texto de uma página é definida no seletor do corpo. Exemplo:
|
|
Neste exemplo, definimos as propriedades background-color
e color
:
|
|
|
Importante: Alto contraste é muito importante para pessoas com problemas de visão. Sempre garanta que o contraste entre a cor do texto e a cor de fundo (ou imagem de fundo) seja bom.
Propriedade | Descrição |
---|---|
color |
Especifica a cor do texto |
Neste capítulo, você aprenderá sobre as seguintes propriedades de decoração de texto:
text-decoration-line
text-decoration-color
text-decoration-style
text-decoration-thickness
text-decoration
A text-decoration-line
propriedade é usada para adicionar uma linha de decoração ao texto. Você pode combinar mais de um valor, como sobrelinhado e sublinhado, para exibir linhas sobre e sob um texto.
|
|
|
|
Observação: Não é recomendável sublinhar texto que não seja um link, pois isso geralmente confunde o leitor.
A text-decoration-color
propriedade é usada para definir a cor da linha de decoração:
|
|
|
|
A text-decoration-style
propriedade é usada para definir o estilo da linha de decoração:
|
|
|
|
|
|
A text-decoration-thickness
propriedade é usada para definir a espessura da linha de decoração:
|
|
|
|
A text-decoration
é uma propriedade abreviada para:
text-decoration-line
(obrigatório)text-decoration-color
(opcional)text-decoration-style
(opcional)text-decoration-thickness
(opcional)Exemplo de uso:
|
|
|
|
Todos os links em HTML são sublinhados por padrão. Às vezes, você pode querer estilizar os links sem o sublinhado. Use text-decoration: none;
para remover o sublinhado:
|
Propriedade | Descrição |
---|---|
text-decoration |
Define todas as propriedades de decoração de texto em uma única declaração |
text-decoration-color |
Especifica a cor da decoração de texto |
text-decoration-line |
Especifica o tipo de decoração de texto (sublinhado, sobrelinha, etc.) |
text-decoration-style |
Especifica o estilo da decoração de texto (sólido, pontilhado, etc.) |
text-decoration-thickness |
Especifica a espessura da linha de decoração de texto |
A text-transform
propriedade é usada para especificar letras maiúsculas e minúsculas em um texto.
Ele pode ser usado para transformar todo o texto em letras maiúsculas ou minúsculas, ou colocar a primeira letra de cada palavra em maiúscula:
|
|
|
Propriedade | Descrição |
---|---|
text-transform |
Controla a capitalização do texto |
Neste capítulo você aprenderá sobre as seguintes propriedades de espaçamento de texto:
text-indent
letter-spacing
line-height
word-spacing
white-space
A text-indent
propriedade é usada para especificar o recuo da primeira linha de um texto:
|
A letter-spacing
propriedade é usada para especificar o espaço entre os caracteres em um texto. O exemplo a seguir demonstra como aumentar ou diminuir o espaço entre caracteres:
|
|
A line-height
propriedade é usada para especificar o espaço entre as linhas:
|
|
A word-spacing
propriedade é usada para especificar o espaço entre as palavras em um texto. O exemplo a seguir demonstra como aumentar ou diminuir o espaço entre as palavras:
|
|
A white-space
propriedade especifica como o espaço em branco dentro de um elemento é tratado. Este exemplo demonstra como desabilitar a quebra de texto dentro de um elemento:
|
Propriedade | Descrição |
---|---|
letter-spacing |
Especifica o espaço entre os caracteres em um texto |
line-height |
Especifica a altura da linha |
text-indent |
Especifica o recuo da primeira linha em um bloco de texto |
white-space |
Especifica como o espaço em branco deve ser tratado dentro de um elemento |
word-spacing |
Especifica o espaço entre as palavras em um texto |
A text-shadow
propriedade adiciona sombra ao texto.
Em seu uso mais simples, você especifica apenas a sombra horizontal (2px) e a sombra vertical (2px):
|
Agora, vamos adicionar uma cor (vermelho) à sombra:
|
Em seguida, adicionamos um efeito de desfoque (5px) à sombra:
|
Sombra de texto em um texto branco:
|
Sombra de texto com brilho neon vermelho:
|
Sombra de texto com brilho neon vermelho e azul:
|
Texto com múltiplos efeitos de sombra:
|
Propriedade | Descrição |
---|---|
text-shadow |
Especifica o efeito de sombra adicionado ao texto |
A propriedade font-family
em CSS é usada para especificar a fonte de um texto.
Observação: Se o nome da fonte tiver mais de uma palavra, ele deve estar entre aspas, como: "Times New Roman"
.
A propriedade font-family
deve conter vários nomes de fontes como um sistema "fallback" para garantir compatibilidade máxima entre navegadores/sistemas operacionais. Comece com a fonte que você quer, e termine com uma família genérica (para deixar o navegador escolher uma fonte similar na família genérica, se nenhuma outra fonte estiver disponível). Os nomes das fontes devem ser separados por uma vírgula.
Leia mais sobre fontes fallback no próximo capítulo.
Especifique algumas fontes diferentes para três parágrafos:
|
|
|
Fontes seguras para a web são fontes instaladas universalmente em todos os navegadores e dispositivos.
Não existem fontes 100% seguras para a web. Há sempre uma chance de uma fonte não ser encontrada ou não estar instalada corretamente. Portanto, é muito importante sempre usar fontes alternativas.
Isso significa que você deve adicionar uma lista de "fontes de backup" semelhantes na propriedade font-family
. Se a primeira fonte não funcionar, o navegador tentará a próxima, e assim por diante. Sempre termine a lista com um nome de família de fontes genérico.
Aqui, há três tipos de fonte: Tahoma, Verdana e sans-serif. A segunda e a terceira fontes são backups, caso a primeira não seja encontrada:
|
A lista a seguir contém as melhores fontes seguras para HTML e CSS:
Arial
é a fonte mais amplamente usada para mídia online e impressa. É uma das fontes mais seguras e está disponível em todos os principais sistemas operacionais.
|
Verdana
é uma fonte muito popular. Ela é facilmente legível mesmo para tamanhos de fonte pequenos.
|
Tahoma
tem menos espaço entre os caracteres.
|
Trebuchet MS
foi criada pela Microsoft em 1996. Não é suportada por todos os sistemas operacionais móveis.
|
Times New Roman
é uma das fontes mais reconhecidas do mundo, com aparência profissional e muito utilizada em jornais.
|
Georgia
é uma fonte serifada elegante e legível em diferentes tamanhos de fonte.
|
Garamond
é uma fonte clássica usada em muitos livros impressos, com boa legibilidade.
|
Courier New
é uma fonte monoespaçada, frequentemente usada em displays de codificação.
|
Brush Script MT
foi projetada para imitar a escrita à mão, elegante, mas difícil de ler em textos longos.
|
Comic Sans MS
é uma fonte descontraída e frequentemente criticada por seu uso inadequado em contextos formais.
|
Abaixo estão algumas fontes alternativas comumente usadas, organizadas pelas 5 famílias de fontes genéricas:
font-family | Example text | Código |
"Times New Roman", Times, serif | This is a Heading This is a paragraph. |
|
Georgia, serif | This is a Heading This is a paragraph. |
|
Garamond, serif | This is a Heading This is a paragraph. |
|
font-family | Example text | Código |
Arial, Helvetica, sans-serif | This is a Heading This is a paragraph. |
|
Tahoma, Verdana, sans-serif | This is a Heading This is a paragraph. |
|
"Trebuchet MS", Helvetica, sans-serif | This is a Heading This is a paragraph. |
|
Geneva, Verdana, sans-serif | This is a Heading This is a paragraph. |
|
font-family | Example text | Código |
"Courier New", Courier, monospace | This is a Heading This is a paragraph. |
|
font-family | Example text | Código |
"Brush Script MT", cursive | This is a Heading This is a paragraph. |
|
font-family | Example text | Código |
Copperplate, Papyrus, fantasy | This is a Heading This is a paragraph. |
|
A propriedade font-style
é usada principalmente para especificar texto em itálico. Esta propriedade tem três valores:
|
|
|
A propriedade font-weight
especifica o peso de uma fonte.
|
|
A propriedade font-variant
especifica se um texto deve ou não ser exibido em fonte de caixa baixa.
Em uma fonte small-caps
, todas as letras minúsculas são convertidas em letras maiúsculas, mas com um tamanho de fonte menor do que as letras maiúsculas originais no texto.
|
|
A propriedade font-size
define o tamanho do texto. O valor do tamanho pode ser absoluto ou relativo:
Observação: Se você não especificar um tamanho de fonte, o tamanho padrão para texto normal, como parágrafos, será 16px (16px = 1em).
|
|
|
Para permitir que os usuários redimensionem o texto, muitos desenvolvedores usam em
em vez de pixels.
|
|
|
|
|
|
O tamanho do texto pode ser definido com a unidade vw
, que significa "largura da janela de visualização", ajustando-se ao tamanho da janela do navegador.
<h1 style="font-size:10vw">Hello World</h1>
Se você não quiser usar nenhuma das fontes padrão em HTML, você pode usar o Google Fonts.
O Google Fonts é gratuito e tem mais de 1.000 fontes para você escolher.
Basta adicionar um link de folha de estilo especial na seção <head>
e então consultar a fonte no CSS.
Aqui, queremos usar uma fonte chamada "Sofia" do Google Fonts:
Código HTML | Resultado |
---|---|
|
Sofia Font |
Aqui, queremos usar uma fonte chamada "Trirong" do Google Fonts:
Código HTML | Resultado |
---|---|
|
Trirong Font |
Aqui, queremos usar uma fonte chamada "Audiowide" do Google Fonts:
Código HTML | Resultado |
---|---|
|
Audiowide Font |
Nota: Ao especificar uma fonte em CSS, sempre liste no mínimo uma fonte fallback (para evitar comportamentos inesperados). Então, aqui também você deve adicionar uma família de fontes genérica (como serif
ou sans-serif
) ao final da lista.
Para usar várias fontes do Google, basta separar os nomes das fontes com uma barra vertical (|
), assim:
Código HTML | Resultado |
---|---|
|
Audiowide FontSofia FontTrirong Font |
Nota: Solicitar várias fontes pode deixar suas páginas da web mais lentas! Então, tenha cuidado com isso.
Você pode estilizar o Google Fonts como quiser, com CSS!
Estilize a fonte "Sofia":
Código HTML | Resultado |
---|---|
|
Sofia Font |
O Google também habilitou diferentes efeitos de fonte que você pode usar.
Primeiro, adicione à API do Google, depois adicione um nome de classe especial ao elemento que vai usar o efeito especial. O nome da classe sempre começa com font-effect-
seguido do nome do efeito.
Adicione o efeito de fogo à fonte "Sofia":
Código HTML | Resultado |
---|---|
|
Sofia on Fire |
Para solicitar vários efeitos de fonte, basta separar os nomes dos efeitos com uma barra vertical (|
), assim:
Código HTML | Resultado |
---|---|
|
Neon EffectOutline EffectEmboss EffectMultiple Shadow Effect |
Ótimas combinações de fontes são essenciais para um ótimo design.
Aqui estão algumas regras básicas para criar ótimas combinações de fontes:
Veja como o uso da fonte "Georgia" no título pode estabelecer uma hierarquia:
Código CSS | Resultado |
---|---|
|
Beautiful Norway |
Abaixo, mostramos alguns pares de fontes populares que combinam com muitas marcas e contextos.
Georgia e Verdana é uma combinação clássica e segue os padrões de fontes seguras para a web:
Código HTML | Resultado |
---|---|
|
Beautiful NorwayNorway has a total area of 385,252 square kilometers and a population of 5,438,657 (December 2020). |
Outra combinação clássica de fontes seguras para a web:
Código HTML | Resultado |
---|---|
|
Beautiful NorwayNorway has a total area of 385,252 square kilometers and a population of 5,438,657 (December 2020). |
Se você não quiser usar fontes padrão em HTML, você pode usar o Google Fonts. Aqui estão alguns pares populares de fontes do Google:
Código HTML | Resultado |
---|---|
|
Beautiful NorwayNorway has a total area of 385,252 square kilometers and a population of 5,438,657 (December 2020). |
Código HTML | Resultado |
---|---|
|
Beautiful NorwayNorway has a total area of 385,252 square kilometers and a population of 5,438,657 (December 2020). |
Código HTML | Resultado |
---|---|
|
Beautiful NorwayNorway has a total area of 385,252 square kilometers and a population of 5,438,657 (December 2020). |
A propriedade font
em CSS permite encurtar o código, especificando todas as propriedades individuais de uma fonte em uma única declaração. Ela é uma propriedade abreviada que engloba as seguintes propriedades:
font-style
font-variant
font-weight
font-size/line-height
font-family
Nota: Os valores font-size
e font-family
são obrigatórios. Se um dos outros valores estiver faltando, seus valores padrão serão usados.
Você pode usar a propriedade font
para definir várias propriedades de fonte em uma declaração:
Código CSS | Resultado |
---|---|
|
Texto com fonte 20px Arial Texto com fonte itálica, pequenas maiúsculas, negrito e tamanho 12px/30px Georgia |
Abaixo está uma tabela explicando todas as propriedades da fonte em CSS:
Propriedade | Descrição |
---|---|
font |
Define todas as propriedades da fonte em uma declaração. |
font-family |
Especifica a família de fontes para o texto. |
font-size |
Especifica o tamanho da fonte do texto. |
font-style |
Especifica o estilo da fonte para o texto (ex: normal, itálico, oblíquo). |
font-variant |
Especifica se o texto deve ser exibido em pequenas maiúsculas. |
font-weight |
Especifica o peso da fonte (ex: normal, bold, light). |
A maneira mais simples de adicionar um ícone à sua página HTML é com uma biblioteca de ícones, como o Font Awesome.
Adicione o nome da classe de ícone especificada a qualquer elemento HTML embutido (como <i>
ou <span>
).
Todos os ícones nas bibliotecas de ícones abaixo são vetores escaláveis que podem ser personalizados com CSS (tamanho, cor, sombra, etc.).
Para usar os ícones do Font Awesome, acesse fontawesome.com, faça login e obtenha um código para adicionar na seção <head>
da sua página HTML:
<script src="https://kit.fontawesome.com/yourcode.js" crossorigin="anonymous"></script>
Observação: Não é necessário fazer download ou instalar!
Exemplo de código para ícones do Font Awesome:
Código HTML | Resultado |
---|---|
|
Para usar os ícones do Bootstrap, adicione a seguinte linha dentro da seção <head>
da sua página HTML:
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
Observação: Não é necessário fazer download ou instalar!
Exemplo de código para ícones do Bootstrap:
Código HTML | Resultado |
---|---|
|
Para usar os ícones do Google, adicione a seguinte linha dentro da seção <head>
da sua página HTML:
<link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons">
Observação: Não é necessário fazer download ou instalar!
Exemplo de código para ícones do Google:
Código HTML | Resultado |
---|---|
|
cloud favorite attachment computer traffic |
Com CSS, os links podem ser estilizados de várias maneiras. A propriedade text-decoration
é usada para modificar o estilo do link, como sublinhar ou remover o sublinhado.
Você pode estilizar os links com várias propriedades CSS, como color
, font-family
, background
, etc. Aqui está um exemplo básico de estilização de links:
a { |
color: hotpink; |
} |
Os links podem ter estilos diferentes dependendo do estado em que se encontram. Os quatro estados de links são:
a:link
- Um link normal e não visitadoa:visited
- Um link que o usuário visitoua:hover
- Um link quando o usuário passa o mouse sobre elea:active
- Um link no momento em que é clicado/* Link não visitado */ |
a:link { |
color: red; |
} |
/* Link visitado */ |
a:visited { |
color: green; |
} |
/* Link com o mouse sobre */ |
a:hover { |
color: hotpink; |
} |
/* Link ativo */ |
a:active { |
color: blue; |
} |
Quando você define o estilo para os estados de link, algumas regras de ordem devem ser seguidas:
a:hover
deve vir depois de a:link
e a:visited
a:active
deve vir depois de a:hover
A propriedade text-decoration
é usada principalmente para remover sublinhados de links:
a:link { |
text-decoration: none; |
} |
a:visited { |
text-decoration: none; |
} |
a:hover { |
text-decoration: underline; |
} |
a:active { |
text-decoration: underline; |
} |
A propriedade background-color
pode ser usada para definir uma cor de fundo para os links:
a:link { |
background-color: yellow; |
} |
a:visited { |
background-color: cyan; |
} |
a:hover { |
background-color: lightgreen; |
} |
a:active { |
background-color: hotpink; |
} |
Você pode exibir links como botões estilizados, combinando várias propriedades CSS:
a:link, a:visited { |
background-color: #f44336; |
color: white; |
padding: 14px 25px; |
text-align: center; |
text-decoration: none; |
display: inline-block; |
} |
a:hover, a:active { |
background-color: red; |
} |
Aqui estão outros exemplos de como estilizar links:
a.one:link {color: #ff0000;} |
a.one:visited {color: #0000ff;} |
a.one:hover {color: #ffcc00;} |
a.two:link {color: #ff0000;} |
a.two:visited {color: #0000ff;} |
a.two:hover {font-size: 150%;} |
a.three:link {color: #ff0000;} |
a.three:visited {color: #0000ff;} |
a.three:hover {background: #66ff66;} |
a.four:link {color: #ff0000;} |
a.four:visited {color: #0000ff;} |
a.four:hover {font-family: monospace;} |
a.five:link {color: #ff0000; text-decoration: none;} |
a.five:visited {color: #0000ff; text-decoration: none;} |
a.five:hover {text-decoration: underline;} |
a:link, a:visited { |
background-color: white; |
color: black; |
border: 2px solid green; |
padding: 10px 20px; |
text-align: center; |
text-decoration: none; |
display: inline-block; |
} |
a:hover, a:active { |
background-color: green; |
color: white; |
} |
Este exemplo demonstra os diferentes tipos de cursores que podem ser usados em links:
auto |
crosshair |
default |
e-resize |
help |
move |
n-resize |
ne-resize |
nw-resize |
pointer |
progress |
s-resize |
se-resize |
sw-resize |
text |
w-resize |
wait |
Os cursores em CSS podem ser personalizados para indicar ao usuário o tipo de interação possível com os elementos na página. Existem diversos tipos de cursores, como o pointer
para indicar links clicáveis ou o move
para indicar um item que pode ser arrastado.
Este exemplo demonstra os diferentes tipos de cursores que podem ser usados em links:
Código CSS | Resultado |
---|---|
auto |
auto |
crosshair |
crosshair |
default |
default |
e-resize |
e-resize |
help |
help |
move |
move |
n-resize |
n-resize |
ne-resize |
ne-resize |
nw-resize |
nw-resize |
pointer |
pointer |
progress |
progress |
s-resize |
s-resize |
se-resize |
se-resize |
sw-resize |
sw-resize |
text |
text |
w-resize |
w-resize |
wait |
wait |
Você também pode usar os cursores em botões para melhorar a experiência do usuário. Aqui está um exemplo com o cursor pointer
e move
em botões de ação:
Código HTML | Resultado |
---|---|
|
Além de indicar o tipo de ação, você também pode adicionar estilo a links usando cursores, para indicar interações especiais, como no exemplo a seguir:
Código HTML | Resultado |
---|---|
|
Link de Clique Link de Ajuda Link de Progresso |
Você também pode personalizar os cursores em campos de formulário. Veja o exemplo abaixo, onde o cursor é alterado ao passar sobre o campo de texto e o botão:
Código HTML | Resultado |
---|---|
|
Os cursores são uma maneira eficaz de melhorar a interação do usuário com a sua página. Ao utilizar diferentes tipos de cursores, você pode fornecer pistas visuais sobre a funcionalidade dos elementos. Seja em links, botões, campos de formulário ou qualquer outro elemento HTML, o uso adequado de cursores pode tornar a navegação mais intuitiva.
Este exemplo mostra uma lista não ordenada em HTML:
Código HTML | Resultado |
---|---|
|
|
Este exemplo mostra uma lista ordenada em HTML:
Código HTML | Resultado |
---|---|
|
|
Este exemplo mostra como alterar os marcadores de lista utilizando a propriedade list-style-type
:
Código CSS | Resultado |
---|---|
|
|
A propriedade list-style-image
pode ser usada para definir uma imagem como marcador de lista:
Código CSS | Resultado |
---|---|
|
|
Você pode alterar a posição do marcador usando a propriedade list-style-position
:
Código CSS | Resultado |
---|---|
|
|
Você pode remover os marcadores padrão usando a propriedade list-style-type: none
:
Código CSS | Resultado |
---|---|
|
|
list-style
A propriedade list-style
é uma forma abreviada para definir todas as propriedades de estilo de listas em uma única declaração:
Código CSS | Resultado |
---|---|
|
|
Você pode adicionar cores às listas para torná-las mais interessantes:
Código CSS | Resultado |
---|---|
|
|
As listas CSS oferecem muitas opções de personalização, permitindo que você altere marcadores, posicione itens de lista e adicione cores e imagens para melhorar a aparência das listas em sua página.
A propriedade display
é uma das mais importantes para controlar o layout de elementos em uma página da web.
A propriedade de exibição define como um elemento é mostrado na página. Cada elemento HTML tem um valor de exibição padrão, dependendo do tipo de elemento.
Existem diferentes valores para a propriedade display
, permitindo que você altere o comportamento de exibição de um elemento HTML. A seguir, vamos explorar alguns desses valores e seus exemplos de uso.
Elementos de nível de bloco ocupam toda a largura disponível, começando sempre em uma nova linha:
<div>
<h1> - <h6>
<p>
<form>
<header>
<footer>
<section>
Elementos inline ocupam apenas a largura necessária e não começam em uma nova linha:
<span>
<a>
<img>
Os principais valores para a propriedade display
são:
Valor | Descrição |
---|---|
inline |
Exibe o elemento como um elemento inline. |
block |
Exibe o elemento como um elemento de bloco. |
flex |
Exibe o elemento como um contêiner flexível de nível bloco. |
grid |
Exibe o elemento como um contêiner de grade de nível bloco. |
inline-block |
Exibe o elemento como um contêiner de bloco em nível inline. |
none |
Remove completamente o elemento da exibição. |
table |
Exibe o elemento como uma tabela. |
Veja abaixo alguns exemplos de como usar a propriedade display
:
|
|
|
Você pode substituir o valor de exibição padrão de um elemento para criar layouts mais personalizados.
Por exemplo, para exibir <li>
elementos inline para criar menus horizontais:
|
Você também pode exibir um <span>
como um elemento de bloco:
|
Usar o valor none
remove o elemento da exibição, mas ele ainda estará no DOM:
|
Propriedade | Descrição |
---|---|
display |
Define como um elemento é exibido. |
inline |
Exibe um elemento inline. |
block |
Exibe um elemento como um bloco. |
flex |
Exibe um elemento como um contêiner flexível. |
grid |
Exibe um elemento como um contêiner de grade. |
none |
Remove um elemento da exibição. |
Um dos métodos para ocultar um elemento é definindo a propriedade display
como none
. Isso fará com que o elemento seja completamente oculto, e a página será exibida como se o elemento não estivesse lá, ou seja, ele não ocupará nenhum espaço na página.
O exemplo abaixo oculta um elemento <h1>
usando display: none;
:
|
Outra maneira de esconder um elemento é usando a propriedade visibility
com o valor hidden
. No entanto, ao contrário de display: none;
, o elemento ainda ocupará o mesmo espaço no layout, mas ficará oculto.
O exemplo abaixo usa visibility: hidden;
para ocultar o elemento <h1>
:
|
Enquanto display: none;
remove completamente o elemento da página (não ocupa nenhum espaço), visibility: hidden;
apenas o oculta visualmente, mas o elemento ainda afeta o layout da página, ocupando o mesmo espaço que ocuparia se estivesse visível.
A seguir, um exemplo demonstrando as diferenças entre os dois:
|
|
Além de none
e hidden
, a propriedade display
oferece vários outros valores para controlar a exibição de elementos, como block
, inline
, flex
, entre outros. Cada um desses valores afeta o layout da página de maneira diferente, permitindo criar layouts complexos e interativos.
Veja abaixo alguns tipos de exibição que podem ser aplicados aos elementos:
|
|
|
A propriedade position
especifica o tipo de método de posicionamento usado para um elemento. Existem cinco valores de posição diferentes:
Os elementos são posicionados usando as propriedades top
, bottom
, left
e right
. No entanto, essas propriedades não funcionarão a menos que a propriedade position
seja definida primeiro. Elas também funcionam de forma diferente dependendo do valor da posição.
Os elementos HTML são posicionados como estáticos por padrão.
Elementos posicionados como estáticos não são afetados pelas propriedades top
, bottom
, left
e right
.
Um elemento com position: static;
não é posicionado de nenhuma maneira especial, sendo sempre posicionado de acordo com o fluxo normal da página.
Este exemplo usa position: static;
em um elemento <div>
:
|
Um elemento com position: relative;
é posicionado em relação à sua posição normal.
Definir as propriedades top
, right
, bottom
e left
em um elemento posicionado relativamente fará com que ele seja ajustado para longe de sua posição normal. Outros conteúdos não serão ajustados para caber na lacuna deixada pelo elemento.
Este exemplo usa position: relative;
em um elemento <div>
:
|
Um elemento com position: fixed;
é posicionado em relação à viewport, o que significa que ele sempre ficará no mesmo lugar, mesmo se a página for rolada.
As propriedades top
, right
, bottom
e left
são usadas para posicionar o elemento.
Um elemento fixo não deixa uma lacuna na página onde normalmente estaria localizado.
Este exemplo mostra um elemento fixo no canto inferior direito da página:
|
Um elemento com position: absolute;
é posicionado em relação ao ancestral posicionado mais próximo (ao invés de ser posicionado em relação à janela de visualização, como ocorre com o fixed
).
Se o elemento posicionado de forma absoluta não tiver ancestrais posicionados, ele usará o corpo do documento e se moverá com a rolagem da página.
Elementos posicionados de forma absoluta são removidos do fluxo normal e podem sobrepor outros elementos.
A seguir, um exemplo simples de um elemento com position: relative;
e outro com position: absolute;
:
|
Um elemento com position: sticky;
é posicionado com base na posição de rolagem do usuário.
Um elemento "sticky" alterna entre relative
e fixed
, dependendo da posição de rolagem. Ele é posicionado de forma relativa até que uma dada posição de deslocamento seja encontrada na viewport - nesse momento, ele "gruda" no lugar (como um elemento fixo).
Você deve especificar pelo menos um dos seguintes: top
, right
, bottom
ou left
para que o posicionamento fixo funcione corretamente.
No exemplo a seguir, o elemento fixo fica no topo da página (top: 0
) quando você alcança sua posição de rolagem:
|
Você pode posicionar texto sobre uma imagem utilizando position: absolute;
para o texto, que ficará sobreposto à imagem. O exemplo a seguir mostra como fazer isso:
O código HTML para isso seria o seguinte:
|
Propriedade | Descrição |
---|---|
bottom |
Define a margem inferior para uma caixa posicionada |
clip |
Recorta um elemento posicionado absolutamente |
left |
Define a margem esquerda para uma caixa posicionada |
position |
Especifica o tipo de posicionamento para um elemento |
right |
Define a margem direita para uma caixa posicionada |
top |
Define a margem superior para uma caixa posicionada |
A z-index
propriedade especifica a ordem de empilhamento de um elemento.
Quando os elementos são posicionados, eles podem se sobrepor a outros elementos. A propriedade z-index
define qual elemento ficará na frente ou atrás dos outros, controlando a ordem em que os elementos se empilham.
Um elemento pode ter uma ordem de pilha positiva ou negativa. Quanto maior o valor do z-index
, mais "na frente" o elemento ficará em relação aos outros.
Este é um título. Como a imagem tem um z-index
de -1, ela será colocada atrás do texto:
|
Aqui vemos que um elemento com maior ordem de pilha está sempre acima de um elemento com menor ordem de pilha:
|
Se dois elementos posicionados se sobrepuserem sem uma especificação de z-index
, o último elemento definido no código HTML será mostrado no topo. Veja o exemplo abaixo, onde o z-index
não é especificado:
|
Propriedade | Descrição |
---|---|
z-index |
Define a ordem de empilhamento de um elemento |
A propriedade overflow
controla o que acontece com conteúdo que é muito grande para caber em uma área.
Este texto é muito longo e a altura do seu contêiner é de apenas 100 pixels. Portanto, uma barra de rolagem é adicionada para ajudar o leitor a rolar o conteúdo:
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea comodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Typi non habent claritatem insitam; est usus legentis in iis qui facit eorum claritatem.
A propriedade overflow
especifica se o conteúdo deve ser recortado ou se barras de rolagem devem ser adicionadas quando o conteúdo de um elemento for muito grande para caber na área especificada.
O overflow
possui os seguintes valores:
scroll
, mas adiciona barras de rolagem somente quando necessário.Observação: A propriedade overflow
só funciona para elementos de bloco com uma altura especificada.
Observação: No OS X Lion (no Mac), as barras de rolagem ficam ocultas por padrão e só são exibidas quando são usadas (mesmo que overflow: scroll
esteja definido).
Por padrão, o overflow
é visible, o que significa que ele não é recortado e é renderizado fora da caixa do elemento:
|
Com o valor hidden, o estouro é recortado e o restante do conteúdo é oculto:
|
Definindo o valor para scroll, o overflow é recortado e uma barra de rolagem é adicionada para rolar dentro da caixa. Note que isso adicionará uma barra de rolagem horizontal e verticalmente (mesmo que você não precise dela):
|
O valor auto é semelhante a scroll
, mas adiciona barras de rolagem somente quando necessário:
|
As propriedades overflow-x
e overflow-y
especificam se o estouro de conteúdo deve ser alterado apenas horizontalmente ou verticalmente (ou ambos):
|
Propriedade | Descrição |
---|---|
overflow |
Especifica o que acontece se o conteúdo transbordar da caixa de um elemento |
overflow-anchor |
Permite desativar o ancoramento de rolagem |
overflow-x |
Especifica o que fazer com as bordas esquerda/direita do conteúdo se ele transbordar da área de conteúdo do elemento |
overflow-y |
Especifica o que fazer com as bordas superior/inferior do conteúdo se ele transbordar da área de conteúdo do elemento |
overflow-wrap |
Especifica se o navegador pode quebrar palavras longas, se elas transbordarem do seu contêiner |
Definindo float: none;
para uma imagem:
img {
float: none;
}
Normalmente, os elementos div
serão exibidos um em cima do outro. No entanto, se usarmos float: left
, podemos fazer os elementos flutuarem um ao lado do outro:
div {
float: left;
padding: 15px;
}
.div1 {
background: red;
}
.div2 {
background: yellow;
}
.div3 {
background: green;
}
Definindo float: left;
para uma imagem:
img {
float: left;
}
No exemplo a seguir, a imagem será exibida exatamente onde ocorre no texto, sem flutuar, usando float: none;
:
img {
float: right;
}
A propriedade float
especifica como um elemento deve flutuar.
A propriedade clear
especifica quais elementos podem flutuar ao lado do elemento limpo e em qual lado.
A propriedade float
é usada para posicionar e formatar conteúdo, como deixar uma imagem flutuar à esquerda do texto em um contêiner.
A propriedade float
pode ter um dos seguintes valores:
float
do seu pai.Em seu uso mais simples, a propriedade float
pode ser usada para envolver texto em torno de imagens.
O exemplo a seguir especifica que uma imagem deve flutuar para a direita em um texto:
img {
float: right;
}
Propriedade | Descrição |
---|---|
clear |
Especifica o que deve acontecer com o elemento ao lado de um elemento flutuante. |
float |
Especifica se um elemento deve flutuar à esquerda, direita ou não flutuar. |
Quando usamos a propriedade float
e queremos que o próximo elemento apareça abaixo (não à direita ou à esquerda), precisamos usar a propriedade clear
.
A propriedade clear
especifica o que deve acontecer com o elemento próximo a um elemento flutuante.
A propriedade clear
pode ter os seguintes valores:
clear
do seu pai.Ao limpar floats, você deve combinar clear
com float
: Se um elemento estiver flutuando à esquerda, você deve limpar para a esquerda. O seu elemento flutuado continuará flutuando, mas o elemento limpo aparecerá abaixo dele na página da web.
Este exemplo limpa o float para a esquerda. Aqui, significa que o elemento div2
é empurrado para baixo do elemento div1
, que flutua para a esquerda:
div1 {
float: left;
}
div2 {
clear: left;
}
Se um elemento flutuante for mais alto que o elemento que o contém, ele "transbordará" para fora do seu contêiner. Podemos adicionar um hack clearfix para resolver esse problema:
.clearfix {
overflow: auto;
}
O overflow: auto;
funciona bem, desde que você consiga controlar as margens e o preenchimento (senão você pode ver barras de rolagem). O novo e moderno hack clearfix é mais seguro de usar, e o código a seguir é utilizado na maioria das páginas da web:
.clearfix::after {
content: "";
clear: both;
display: table;
}
Propriedade | Descrição |
---|---|
clear |
Especifica o que deve acontecer com o elemento próximo a um elemento flutuante. |
float |
Especifica se um elemento deve flutuar à esquerda, direita ou não flutuar. |
Com a propriedade float
, é fácil colocar caixas de conteúdo lado a lado:
* {
box-sizing: border-box;
}
.box {
float: left;
width: 33.33%; /* três caixas (use 25% para quatro, e 50% para duas, etc.) */
padding: 50px; /* se você quiser espaço entre as imagens */
}
O que é dimensionamento de caixa?
Você pode facilmente criar três caixas flutuantes lado a lado. No entanto, quando você adiciona algo que aumenta a largura de cada caixa (por exemplo, preenchimento ou bordas), a caixa pode quebrar. A propriedade box-sizing
permite incluir o preenchimento e as bordas na largura total da caixa (e altura), garantindo que o preenchimento fique dentro da caixa e não quebre.
A grade de caixas também pode ser usada para exibir imagens lado a lado:
.img-container {
float: left;
width: 33.33%; /* três contêineres (use 25% para quatro, e 50% para dois, etc.) */
padding: 5px; /* se você quiser espaço entre as imagens */
}
No exemplo anterior, você aprendeu a flutuar caixas lado a lado com uma largura igual. No entanto, não é fácil criar caixas flutuantes com alturas iguais. Uma solução rápida, no entanto, é definir uma altura fixa, como no exemplo abaixo:
.box {
height: 500px;
}
No entanto, isso não é muito flexível. Tudo bem se você puder garantir que as caixas sempre terão a mesma quantidade de conteúdo, mas muitas vezes o conteúdo pode ser diferente. Se você tentar o exemplo acima em um celular, verá que o conteúdo da segunda caixa será exibido fora da caixa. É aqui que o CSS3 Flexbox se torna útil, pois ele pode esticar automaticamente as caixas para que fiquem tão longas quanto a caixa mais longa.
Propriedade | Descrição |
---|---|
box-sizing |
Define como a largura e altura de um elemento são calculadas: devem incluir o preenchimento e as bordas ou não. |
clear |
Especifica o que deve acontecer com o elemento próximo a um elemento flutuante. |
float |
Especifica se um elemento deve flutuar à esquerda, direita ou não flutuar. |
overflow |
Especifica o que acontece se o conteúdo transbordar da caixa do elemento. |
overflow-x |
Especifica o que fazer com as bordas esquerda/direita do conteúdo se ele transbordar na área do elemento. |
overflow-y |
Especifica o que fazer com as bordas superior/inferior do conteúdo se ele transbordar na área do elemento. |
Comparado a display: inline
, a principal diferença é que display: inline-block
permite definir uma largura e altura no elemento.
Além disso, com display: inline-block
, as margens e preenchimentos superior e inferior são respeitados, mas com display: inline
não.
Comparado a display: block
, a principal diferença é que display: inline-block
não adiciona uma quebra de linha após o elemento, então o elemento pode ficar próximo a outros elementos.
span.a {
display: inline; /* o padrão para span */
width: 100px;
height: 100px;
padding: 5px;
border: 1px solid blue;
background-color: yellow;
}
span.b {
display: inline-block;
width: 100px;
height: 100px;
padding: 5px;
border: 1px solid blue;
background-color: yellow;
}
span.c {
display: block;
width: 100px;
height: 100px;
padding: 5px;
border: 1px solid blue;
background-color: yellow;
}
Um uso comum para display: inline-block
é exibir itens de lista horizontalmente, em vez de verticalmente. O exemplo a seguir cria links de navegação horizontais:
.nav {
background-color: yellow;
list-style-type: none;
text-align: center;
padding: 0;
margin: 0;
}
.nav li {
display: inline-block;
font-size: 20px;
padding: 20px;
}
Propriedade | Descrição |
---|---|
display |
Especifica o comportamento de exibição (tipo de caixa de renderização) de um elemento. |
Para centralizar horizontalmente um elemento de bloco (como <div>
), use margin: auto
; Definir a largura do elemento evitará que ele se estique até as bordas do contêiner.
O elemento ocupará então a largura especificada, e o espaço restante será dividido igualmente entre as duas margens:
.center {
margin: auto;
width: 50%;
border: 3px solid green;
padding: 10px;
}
Observação: o alinhamento central não terá efeito se a propriedade width
não estiver definida (ou estiver definida como 100%).
Para centralizar o texto dentro de um elemento, use text-align: center
;
Este texto está centralizado.
.center {
text-align: center;
border: 3px solid green;
}
Há muitas maneiras de centralizar um elemento verticalmente em CSS. Uma solução simples é usar preenchimento superior e inferior:
Estou centralizado verticalmente.
.center {
padding: 70px 0;
border: 3px solid green;
}
Para centralizar vertical e horizontalmente, use padding
e text-align: center
:
Estou centralizado vertical e horizontalmente.
.center {
padding: 70px 0;
border: 3px solid green;
text-align: center;
}
Outro truque é usar a propriedade line-height
com um valor igual à propriedade height
:
Estou centralizado vertical e horizontalmente.
.center {
line-height: 200px;
height: 200px;
border: 3px solid green;
text-align: center;
}
/* Se o texto tiver várias linhas, adicione o seguinte: */
.center p {
line-height: 1.5;
display: inline-block;
vertical-align: middle;
}
Se padding
e line-height
não forem opções, outra solução é usar o posicionamento e a propriedade transform
:
Estou centralizado vertical e horizontalmente.
.center {
height: 200px;
position: relative;
border: 3px solid green;
}
.center p {
margin: 0;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
Dica: Você aprenderá mais sobre a propriedade transform
no nosso Capítulo de Transformações 2D.
Você também pode usar flexbox para centralizar elementos. Apenas observe que flexbox não é suportado no IE10 e versões anteriores:
Estou centralizado vertical e horizontalmente.
.center {
display: flex;
justify-content: center;
align-items: center;
height: 200px;
border: 3px solid green;
}
Um combinador é algo que explica o relacionamento entre os seletores.
Existem quatro combinadores diferentes em CSS:
O combinador descendente corresponde a todos os elementos que são descendentes de um elemento especificado.
Exemplo:
div p {
background-color: yellow;
}
O combinador filho seleciona todos os elementos que são filhos de um elemento especificado.
Exemplo:
div > p {
background-color: yellow;
}
O próximo combinador irmão é usado para selecionar um elemento que está diretamente depois de outro elemento específico.
Elementos irmãos devem ter o mesmo elemento pai, e "adjacente" significa "imediatamente seguinte".
Exemplo:
div + p {
background-color: yellow;
}
O combinador de irmãos subsequentes seleciona todos os elementos que são irmãos próximos de um elemento especificado.
Exemplo:
div ~ p {
background-color: yellow;
}
Uma pseudoclasse é usada para definir um estado especial de um elemento.
Por exemplo, pode ser usado para:
Exemplo de pseudoclass:
a:hover {
color: #FF00FF;
}
A sintaxe das pseudoclasses é:
selector:pseudo-class {
property: value;
}
Os links podem ser exibidos de diferentes maneiras:
/* link não visitado */
a:link {
color: #FF0000;
}
/* link visitado */
a:visited {
color: #00FF00;
}
/* link quando o mouse passa por cima */
a:hover {
color: #FF00FF;
}
/* link ativo */
a:active {
color: #0000FF;
}
Nota: a:hover
DEVE vir depois de a:link
e a:visited
na definição CSS para ser eficaz! a:active
DEVE vir depois de a:hover
na definição CSS para ser eficaz! Nomes de pseudoclasses não diferenciam maiúsculas de minúsculas.
Pseudoclasses podem ser combinadas com classes HTML:
Exemplo:
a.highlight:hover {
color: #ff0000;
}
Passando o mouse sobre o link, ele mudará de cor.
<div>
Um exemplo de uso da pseudoclasse :hover
em um elemento <div>
:
div:hover {
background-color: blue;
}
Passar o mouse sobre um elemento <div>
pode mostrar um elemento <p>
(como uma dica de ferramenta):
p {
display: none;
background-color: yellow;
padding: 20px;
}
div:hover p {
display: block;
}
:first-child
A :first-child
pseudoclasse corresponde a um elemento especificado que é o primeiro filho de outro elemento.
Exemplo:
p:first-child {
color: blue;
}
<i>
em Todos os Elementos <p>
No exemplo a seguir, o seletor corresponde ao primeiro elemento <i>
em todos os elementos <p>
:
p i:first-child {
color: blue;
}
<i>
em Todos os Primeiros Elementos <p>
FilhosNo exemplo a seguir, o seletor corresponde a todos os elementos <i>
em elementos <p>
que são o primeiro filho de outro elemento:
p:first-child i {
color: blue;
}
:lang
A :lang
pseudoclasse permite que você defina regras especiais para diferentes idiomas.
Exemplo:
q:lang(no) {
quotes: "~" "~";
}
Adicionar estilos diferentes aos hiperlinks:
a:focus {
color: #0000FF;
}
Um pseudoelemento CSS é usado para estilizar partes específicas de um elemento.
Por exemplo, pode ser usado para:
A sintaxe dos pseudoelementos é:
selector::pseudo-element {
property: value;
}
::first-line
O ::first-line
pseudoelemento é usado para adicionar um estilo especial à primeira linha de um texto.
Exemplo:
p::first-line {
color: #ff0000;
font-variant: small-caps;
}
Observação: o ::first-line
pseudoelemento só pode ser aplicado a elementos em nível de bloco.
As seguintes propriedades se aplicam ao ::first-line
pseudoelemento:
::first-letter
O ::first-letter
pseudoelemento é usado para adicionar um estilo especial à primeira letra de um texto.
Exemplo:
p::first-letter {
color: #ff0000;
font-size: xx-large;
}
Observação: o ::first-letter
pseudoelemento só pode ser aplicado a elementos em nível de bloco.
As seguintes propriedades se aplicam ao ::first-letter
pseudoelemento:
vertical-align
(somente se "float" for "none")Pseudoelementos podem ser combinados com classes HTML:
p.intro::first-letter {
color: #ff0000;
font-size: 200%;
}
O exemplo acima exibirá a primeira letra dos parágrafos com class="intro", em vermelho e em tamanho maior.
Vários pseudoelementos também podem ser combinados.
Exemplo:
p::first-letter {
color: #ff0000;
font-size: xx-large;
}
p::first-line {
color: #0000ff;
font-variant: small-caps;
}
No exemplo acima, a primeira letra de um parágrafo será vermelha, em um tamanho de fonte xx-large
. O restante da primeira linha será azul e em small-caps
. O restante do parágrafo será o tamanho e a cor de fonte padrão.
::before
O ::before
pseudoelemento pode ser usado para inserir algum conteúdo antes do conteúdo de um elemento.
Exemplo:
h1::before {
content: url(smiley.gif);
}
::after
O ::after
pseudoelemento pode ser usado para inserir algum conteúdo após o conteúdo de um elemento.
Exemplo:
h1::after {
content: url(smiley.gif);
}
::marker
O ::marker
pseudoelemento seleciona os marcadores dos itens da lista.
Exemplo:
::marker {
color: red;
font-size: 23px;
}
::selection
O ::selection
pseudoelemento corresponde à parte de um elemento que é selecionada por um usuário.
As seguintes propriedades CSS podem ser aplicadas a ::selection
: color
, background
, cursor
, e outline
.
Exemplo:
::selection {
color: red;
background: yellow;
}
Um pseudoelemento CSS é usado para estilizar partes específicas de um elemento.
Por exemplo, pode ser usado para:
A sintaxe dos pseudoelementos:
selector::pseudo-element {
property: value;
}
::first-line
O ::first-line
pseudoelemento é usado para adicionar um estilo especial à primeira linha de um texto.
Exemplo:
p::first-line {
color: #ff0000;
font-variant: small-caps;
}
Observação: o ::first-line
pseudoelemento só pode ser aplicado a elementos em nível de bloco.
As seguintes propriedades se aplicam ao ::first-line
pseudoelemento:
Observe a notação de dois pontos duplos - ::first-line
versus :first-line
. Os dois pontos duplos substituíram a notação de dois pontos simples para pseudoelementos no CSS3. Esta foi uma tentativa do W3C de distinguir entre pseudoclasses e pseudoelementos.
::first-letter
O ::first-letter
pseudoelemento é usado para adicionar um estilo especial à primeira letra de um texto.
Exemplo:
p::first-letter {
color: #ff0000;
font-size: xx-large;
}
Observação: o ::first-letter
pseudoelemento só pode ser aplicado a elementos em nível de bloco.
As seguintes propriedades se aplicam ao pseudoelemento ::first-letter
:
Pseudoelementos podem ser combinados com classes HTML:
p.intro::first-letter {
color: #ff0000;
font-size: 200%;
}
O exemplo acima exibirá a primeira letra dos parágrafos com class="intro", em vermelho e em tamanho maior.
Vários pseudoelementos também podem ser combinados.
No exemplo a seguir, a primeira letra de um parágrafo será vermelha, em um tamanho de fonte xx-large. O restante da primeira linha será azul e em small-caps. O restante do parágrafo será o tamanho e a cor de fonte padrão:
p::first-letter {
color: #ff0000;
font-size: xx-large;
}
p::first-line {
color: #0000ff;
font-variant: small-caps;
}
::before
O ::before
pseudoelemento pode ser usado para inserir algum conteúdo antes do conteúdo de um elemento.
Exemplo:
h1::before {
content: url(smiley.gif);
}
::after
O ::after
pseudoelemento pode ser usado para inserir algum conteúdo após o conteúdo de um elemento.
Exemplo:
h1::after {
content: url(smiley.gif);
}
::marker
O ::marker
pseudoelemento seleciona os marcadores dos itens da lista.
Exemplo:
::marker {
color: red;
font-size: 23px;
}
::selection
O ::selection
pseudoelemento corresponde à parte de um elemento que é selecionada por um usuário.
As seguintes propriedades CSS podem ser aplicadas a ::selection
: color, background, cursor e outline.
Exemplo:
::selection {
color: red;
background: yellow;
}
Vertical
Horizontal
Linha única:
Ter uma navegação fácil de usar é importante para qualquer site. Com CSS você pode transformar menus HTML simples em barras de navegação atraentes.
Uma barra de navegação precisa de HTML padrão como base. Em nossos exemplos, construiremos a barra de navegação a partir de uma lista HTML padrão.
Uma barra de navegação é basicamente uma lista de links, então usar os elementos <ul>
e <li>
faz todo o sentido:
<ul>
<li><a href="default.asp">Home</a></li>
<li><a href="news.asp">News</a></li>
<li><a href="contact.asp">Contact</a></li>
<li><a href="about.asp">About</a></li>
</ul>
Agora vamos remover os marcadores, as margens e o preenchimento da lista:
ul {
list-style-type: none;
margin: 0;
padding: 0;
}
Exemplo explicado:
list-style-type: none;
- Remove os marcadores. Uma barra de navegação não precisa de marcadores de lista.margin: 0;
e padding: 0;
- Remove as configurações padrão do navegador.Para criar uma barra de navegação vertical, você pode estilizar os elementos <a>
dentro da lista, além do código da página anterior:
li a {
display: block;
width: 60px;
}
Exemplo explicado:
display: block;
- Exibir os links como elementos de bloco torna toda a área do link clicável (não apenas o texto) e permite especificar a largura (e preenchimento, margem, altura, etc., se desejar).width: 60px;
- Elementos de bloco ocupam a largura total disponível por padrão. Queremos especificar uma largura de 60 pixels.Crie uma barra de navegação vertical básica com uma cor de fundo cinza e altere a cor de fundo dos links quando o usuário passar o mouse sobre eles:
ul {
list-style-type: none;
margin: 0;
padding: 0;
width: 200px;
background-color: #f1f1f1;
}
li a {
display: block;
color: #000;
padding: 8px 16px;
text-decoration: none;
}
li a:hover {
background-color: #555;
color: white;
}
Adicione uma classe "ativa" ao link atual para que o usuário saiba em qual página ele está:
.active {
background-color: #04AA6D;
color: white;
}
Adicione text-align: center
ao <li>
ou <a>
para centralizar os links. Adicione a border
à <ul>
para adicionar uma borda ao redor da barra de navegação. Se você também quiser bordas dentro da barra de navegação, adicione border-bottom
a todos os elementos <li>
, exceto o último:
ul {
border: 1px solid #555;
}
li {
text-align: center;
border-bottom: 1px solid #555;
}
li:last-child {
border-bottom: none;
}
Crie uma navegação lateral fixa e de altura total:
ul {
list-style-type: none;
margin: 0;
padding: 0;
width: 25%;
background-color: #f1f1f1;
height: 100%;
position: fixed;
overflow: auto;
}
Observação: este exemplo pode não funcionar corretamente em dispositivos móveis.
Lar | Notícias | Contato | Sobre
Há duas maneiras de criar uma barra de navegação horizontal: Usando itens de lista inline ou flutuantes.
Uma maneira de criar uma barra de navegação horizontal é especificar os elementos <li>
como inline, além do código "padrão" da página anterior:
li {
display: inline;
}
Exemplo explicado:
display: inline;
- Por padrão, os elementos <li>
são elementos de bloco. Aqui, removemos as quebras de linha antes e depois de cada item da lista para exibi-los em uma linha.Outra maneira de criar uma barra de navegação horizontal é flutuar os elementos <li>
e especificar um layout para os links de navegação:
li {
float: left;
}
a {
display: block;
padding: 8px;
background-color: #dddddd;
}
Exemplo explicado:
float: left;
- Use float
para fazer com que os elementos do bloco flutuem próximos uns dos outros.display: block;
- Permite especificar o preenchimento (e altura, largura, margens, etc., se desejar).padding: 8px;
- Especifique algum preenchimento entre cada elemento <a>
, para que tenham uma boa aparência.background-color: #dddddd;
- Adicione uma cor de fundo cinza a cada elemento <a>
.Crie uma barra de navegação horizontal básica com uma cor de fundo escura e altere a cor de fundo dos links quando o usuário passar o mouse sobre eles:
ul {
list-style-type: none;
margin: 0;
padding: 0;
overflow: hidden;
background-color: #333;
}
li {
float: left;
}
li a {
display: block;
color: white;
text-align: center;
padding: 14px 16px;
text-decoration: none;
}
li a:hover {
background-color: #111;
}
Adicione uma classe "ativa" ao link atual para que o usuário saiba em qual página ele está:
.active {
background-color: #04AA6D;
}
Alinhe os links à direita flutuando os itens da lista para a direita (float:right;
):
<ul>
<li><a href="#home">Home</a></li>
<li><a href="#news">News</a></li>
<li><a href="#contact">Contact</a></li>
<li style="float:right"><a class="active" href="#about">About</a></li>
</ul>
Adicione a propriedade border-right
ao <li>
para criar divisores de links:
li {
border-right: 1px solid #bbb;
}
li:last-child {
border-right: none;
}
Faça com que a barra de navegação permaneça na parte superior ou inferior da página, mesmo quando o usuário rolar a página:
ul {
position: fixed;
top: 0;
width: 100%;
}
ul {
position: fixed;
bottom: 0;
width: 100%;
}
Observação: a posição fixa pode não funcionar corretamente em dispositivos móveis.
Um exemplo de uma barra de navegação horizontal cinza com uma borda cinza fina:
ul {
border: 1px solid #e7e7e7;
background-color: #f3f3f3;
}
li a {
color: #666;
}
position: sticky
Adicione position: sticky;
a <ul>
para criar uma barra de navegação fixa. Um elemento sticky alterna entre relativo e fixo, dependendo da posição de rolagem. Ele é posicionado relativo até que uma dada posição de deslocamento seja encontrada na viewport, então ele "fixa" no lugar (como position:fixed
).
ul {
position: -webkit-sticky; /* Safari */
position: sticky;
top: 0;
}
Nota: O Internet Explorer não suporta posicionamento fixo. O Safari requer um prefixo -webkit-
(veja o exemplo acima). Você também deve especificar pelo menos um de top
, right
, bottom
ou left
para que o posicionamento fixo funcione.
Já ouviu falar do W3Schools Spaces? Aqui você pode criar seu site do zero ou usar um modelo e hospedá-lo gratuitamente. Não é necessário cartão de crédito.
Exemplos de menu suspenso. Passe o mouse sobre os exemplos abaixo:
Crie uma caixa suspensa que apareça quando o usuário mover o mouse sobre um elemento.
<!DOCTYPE html>
<html>
<head>
<style>
.dropdown {
position: relative;
display: inline-block;
}
.dropdown-content {
display: none;
position: absolute;
background-color: #f9f9f9;
min-width: 160px;
box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);
padding: 12px 16px;
z-index: 1;
}
.dropdown:hover .dropdown-content {
display: block;
}
</style>
</head>
<body>
<h2>Hoverable Dropdown</h2>
<p>Move the mouse over the text below to open the dropdown content.</p>
<div class="dropdown">
<span>Mouse over me</span>
<div class="dropdown-content">
<p>Hello World!</p>
</div>
</div>
</body>
</html>
<span>
ou <button>
..dropdown
usa position: relative;
para garantir que o conteúdo do menu suspenso seja colocado logo abaixo do botão suspenso, usando position: absolute;
..dropdown-content
contém o conteúdo do menu suspenso, que fica oculto por padrão e será exibido ao passar o mouse.:hover
é usado para mostrar o menu suspenso quando o usuário move o mouse sobre o botão.Este exemplo é semelhante ao anterior, mas adicionamos links dentro da caixa suspensa e os estilizamos para caber em um botão suspenso estilizado:
<style>
/* Style The Dropdown Button */
.dropbtn {
background-color: #4CAF50;
color: white;
padding: 16px;
font-size: 16px;
border: none;
cursor: pointer;
}
/* The container <div> - needed to position the dropdown content */
.dropdown {
position: relative;
display: inline-block;
}
/* Dropdown Content (Hidden by Default) */
.dropdown-content {
display: none;
position: absolute;
background-color: #f9f9f9;
min-width: 160px;
box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);
z-index: 1;
}
/* Links inside the dropdown */
.dropdown-content a {
color: black;
padding: 12px 16px;
text-decoration: none;
display: block;
}
/* Change color of dropdown links on hover */
.dropdown-content a:hover {background-color: #f1f1f1}
/* Show the dropdown menu on hover */
.dropdown:hover .dropdown-content {
display: block;
}
/* Change the background color of the dropdown button when the dropdown content is shown */
.dropdown:hover .dropbtn {
background-color: #3e8e41;
}
</style>
<div class="dropdown">
<button class="dropbtn">Dropdown</button>
<div class="dropdown-content">
<a href="#">Link 1</a>
<a href="#">Link 2</a>
<a href="#">Link 3</a>
</div>
</div>
Se você quiser que o menu suspenso vá da direita para a esquerda, em vez da esquerda para a direita, adicione:
.dropdown-content {
right: 0;
}
Passo a passo para criar um menu suspenso dentro de uma barra de navegação.
<!DOCTYPE html>
<html>
<head>
<style>
ul {
list-style-type: none;
margin: 0;
padding: 0;
overflow: hidden;
background-color: #333;
}
li {
float: left;
}
li a, .dropbtn {
display: inline-block;
color: white;
text-align: center;
padding: 14px 16px;
text-decoration: none;
}
li a:hover, .dropdown:hover .dropbtn {
background-color: red;
}
li.dropdown {
display: inline-block;
}
.dropdown-content {
display: none;
position: absolute;
background-color: #f9f9f9;
min-width: 160px;
box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);
z-index: 1;
}
.dropdown-content a {
color: black;
padding: 12px 16px;
text-decoration: none;
display: block;
text-align: left;
}
.dropdown-content a:hover {background-color: #f1f1f1;}
.dropdown:hover .dropdown-content {
display: block;
}
</style>
</head>
<body>
<ul>
<li><a href="#home">Home</a></li>
<li><a href="#news">News</a></li>
<li class="dropdown">
<a href="javascript:void(0)" class="dropbtn">Dropdown</a>
<div class="dropdown-content">
<a href="#">Link 1</a>
<a href="#">Link 2</a>
<a href="#">Link 3</a>
</div>
</li>
</ul>
<h3>Dropdown Menu inside a Navigation Bar</h3>
<p>Hover over the "Dropdown" link to see the dropdown menu.</p>
</body>
</html>
CSS pode ser usado para criar uma galeria de imagens de forma simples e eficiente. Aqui está um exemplo básico:
A seguinte galeria de imagens foi criada com CSS:
<html>
<head>
<style>
div.gallery {
margin: 5px;
border: 1px solid #ccc;
float: left;
width: 180px;
}
div.gallery:hover {
border: 1px solid #777;
}
div.gallery img {
width: 100%;
height: auto;
}
div.desc {
padding: 15px;
text-align: center;
}
</style>
</head>
<body>
<div class="gallery">
<a target="_blank" href="img_5terre.jpg">
<img src="img_5terre.jpg" alt="Cinque Terre" width="600" height="400">
</a>
<div class="desc">Add a description of the image here</div>
</div>
<div class="gallery">
<a target="_blank" href="img_forest.jpg">
<img src="img_forest.jpg" alt="Forest" width="600" height="400">
</a>
<div class="desc">Add a description of the image here</div>
</div>
<div class="gallery">
<a target="_blank" href="img_lights.jpg">
<img src="img_lights.jpg" alt="Northern Lights" width="600" height="400">
</a>
<div class="desc">Add a description of the image here</div>
</div>
<div class="gallery">
<a target="_blank" href="img_mountains.jpg">
<img src="img_mountains.jpg" alt="Mountains" width="600" height="400">
</a>
<div class="desc">Add a description of the image here</div>
</div>
</body>
</html>
<div>
com a classe .gallery
. As imagens ficam clicáveis através do <a>
, abrindo em uma nova aba..desc
é usada para adicionar uma descrição de cada imagem abaixo delas.Você pode usar consultas de mídia CSS para criar uma galeria de imagens responsiva que ficará bem em desktops, tablets e smartphones. A seguir, um exemplo básico de como fazer isso:
<style>
@media screen and (max-width: 600px) {
.gallery {
width: 100%;
}
}
</style>
Sprites de imagem são uma coleção de imagens combinadas em uma única imagem. Eles ajudam a reduzir o número de solicitações do servidor, melhorando a velocidade de carregamento da página.
Ao invés de carregar várias imagens, usamos uma única imagem ("img_navsprites.gif") e especificamos qual parte da imagem deve ser exibida com CSS:
#home {
width: 46px;
height: 44px;
background: url(img_navsprites.gif) 0 0;
}
#home
define o tamanho do item (46px x 44px) e mostra a parte específica da imagem de fundo.background
define a imagem de fundo e sua posição.Vamos usar sprites para criar uma lista de navegação.
#navlist {
position: relative;
}
#navlist li {
margin: 0;
padding: 0;
list-style: none;
position: absolute;
top: 0;
}
#navlist li, #navlist a {
height: 44px;
display: block;
}
#home {
left: 0px;
width: 46px;
background: url('img_navsprites.gif') 0 0;
}
#prev {
left: 63px;
width: 43px;
background: url('img_navsprites.gif') -47px 0;
}
#next {
left: 129px;
width: 43px;
background: url('img_navsprites.gif') -91px 0;
}
Você pode adicionar um efeito de hover à sua navegação com sprites, usando uma imagem de sprite diferente para o estado hover:
#home a:hover {
background: url('img_navsprites_hover.gif') 0 -45px;
}
#prev a:hover {
background: url('img_navsprites_hover.gif') -47px -45px;
}
#next a:hover {
background: url('img_navsprites_hover.gif') -91px -45px;
}
É possível estilizar elementos HTML com base em atributos ou valores específicos usando seletores de atributos CSS. Aqui estão alguns dos seletores mais comuns:
O seletor [attribute]
é usado para selecionar elementos com um atributo especificado.
Exemplo:
a[target] {
background-color: yellow;
}
O seletor [attribute="value"]
é usado para selecionar elementos com um atributo e valor especificados.
Exemplo:
a[target="_blank"] {
background-color: yellow;
}
O seletor [attribute~="value"]
é usado para selecionar elementos com um valor de atributo que contém uma palavra específica.
Exemplo:
[title~="flower"] {
border: 5px solid yellow;
}
Este exemplo seleciona elementos com o atributo title
que contenham a palavra "flower" (exemplo: title="summer flower"
, title="flower new"
, mas não title="my-flower"
).
O seletor [attribute|="value"]
é usado para selecionar elementos com o atributo especificado, cujo valor pode ser exatamente o valor especificado, ou o valor seguido por um hífen (-).
Exemplo:
[class|="top"] {
background: yellow;
}
O seletor [attribute^="value"]
é usado para selecionar elementos com o atributo especificado, cujo valor começa com o valor especificado.
Exemplo:
[class^="top"] {
background: yellow;
}
O seletor [attribute$="value"]
é usado para selecionar elementos cujo valor de atributo termina com um valor especificado.
Exemplo:
[class$="test"] {
background: yellow;
}
O seletor [attribute*="value"]
é usado para selecionar elementos cujo valor de atributo contém um valor especificado.
Exemplo:
[class*="te"] {
background: yellow;
}
Os seletores de atributos são úteis para estilizar formulários que não possuem classe ou ID específicos.
Exemplo:
input[type="text"] {
width: 150px;
display: block;
margin-bottom: 10px;
background-color: yellow;
}
input[type="button"] {
width: 120px;
margin-left: 35px;
display: block;
}
Seletor | Exemplo | Descrição |
---|---|---|
[attribute] |
[target] |
Seleciona todos os elementos com o atributo target |
[attribute="value"] |
[target="_blank"] |
Seleciona todos os elementos com o atributo target igual a "_blank" |
[attribute~="value"] |
[title~="flower"] |
Seleciona todos os elementos com o atributo title que contém a palavra "flower" |
[attribute|="value"] |
[lang|="en"] |
Seleciona todos os elementos com o atributo lang que começa com "en" |
[attribute^="value"] |
a[href^="https"] |
Seleciona todos os elementos <a> com o atributo href que começa com "https" |
[attribute$="value"] |
a[href$=".pdf"] |
Seleciona todos os elementos <a> com o atributo href que termina com ".pdf" |
[attribute*=value] |
a[href*="w3schools"] |
Seleciona todos os elementos <a> com o atributo href que contém o substring "w3schools" |
A aparência de um formulário HTML pode ser bastante melhorada com CSS. Aqui estão algumas maneiras de estilizar os campos de entrada e botões em um formulário:
Use a propriedade width
para determinar a largura do campo de entrada:
input {
width: 100%;
}
O exemplo acima se aplica a todos os elementos <input>
. Se você quiser estilizar apenas um tipo de entrada específico, pode usar seletores de atributos, como:
Tipo de Entrada | Exemplo |
---|---|
input[type="text"] |
Seleciona apenas campos de texto |
input[type="password"] |
Seleciona apenas campos de senha |
input[type="number"] |
Seleciona apenas campos numéricos |
Use a propriedade padding
para adicionar espaço dentro do campo de texto. Se você tem muitas entradas uma após a outra, use a propriedade margin
para adicionar mais espaço fora delas:
input[type="text"] {
width: 100%;
padding: 12px 20px;
margin: 8px 0;
box-sizing: border-box;
}
Note que a propriedade box-sizing
foi definida como border-box
, o que garante que o preenchimento e as bordas sejam incluídos nas dimensões totais dos elementos.
Use a propriedade border
para alterar o tamanho e a cor da borda, e a propriedade border-radius
para adicionar cantos arredondados:
input[type="text"] {
border: 2px solid red;
border-radius: 4px;
}
Se você quiser apenas uma borda inferior, use a propriedade border-bottom
:
input[type="text"] {
border: none;
border-bottom: 2px solid red;
}
Use a propriedade background-color
para adicionar uma cor de fundo à entrada e a propriedade color
para alterar a cor do texto:
input[type="text"] {
background-color: #3CBC8D;
color: white;
}
Por padrão, alguns navegadores adicionam um contorno azul ao redor da entrada quando ela recebe foco. Você pode remover esse comportamento adicionando outline: none;
.
Use o seletor :focus
para estilizar o campo de entrada quando ele receber foco:
input[type="text"]:focus {
background-color: lightblue;
}
Ou para mudar a borda:
input[type="text"]:focus {
border: 3px solid #555;
}
Se você quiser adicionar um ícone dentro da entrada, use a propriedade background-image
e posicione-o com a propriedade background-position
. Adicione também um padding esquerdo para reservar espaço para o ícone:
input[type="text"] {
background-color: white;
background-image: url('searchicon.png');
background-position: 10px 10px;
background-repeat: no-repeat;
padding-left: 40px;
}
Use a propriedade transition
para animar a largura da entrada de pesquisa quando ela recebe foco:
input[type="text"] {
transition: width 0.4s ease-in-out;
}
input[type="text"]:focus {
width: 100%;
}
Use a propriedade resize
para evitar que áreas de texto sejam redimensionadas (desativando o "grabber" no canto inferior direito):
textarea {
width: 100%;
height: 150px;
padding: 12px 20px;
box-sizing: border-box;
border: 2px solid #ccc;
border-radius: 4px;
background-color: #f8f8f8;
resize: none;
}
Estilize menus de seleção com a propriedade select
:
select {
width: 100%;
padding: 16px 20px;
border: none;
border-radius: 4px;
background-color: #f1f1f1;
}
Estilize botões de entrada com as propriedades background-color
, border
, e outras. Exemplo para botões de submit:
input[type=button], input[type=submit], input[type=reset] {
background-color: #04AA6D;
border: none;
color: white;
padding: 16px 32px;
text-decoration: none;
margin: 4px 2px;
cursor: pointer;
}
input[type=submit]:hover {
background-color: #45a049;
}
Redimensione a janela do navegador para ver o efeito. Quando a tela for menor que 600px, as colunas do formulário se empilharão.
@media screen and (max-width: 600px) {
.col-25, .col-75, input[type=submit] {
width: 100%;
margin-top: 0;
}
}
<!DOCTYPE html>
<html>
<head>
<style>
/* Estilo CSS aqui */
</style>
</head>
<body>
<h2>Formulário Responsivo</h2>
<p>Redimensione a janela do navegador para ver o efeito. Quando a tela for menor que 600px, as duas colunas se empilham em vez de ficarem lado a lado.</p>
<div class="container">
<form action="/action_page.php">
<div class="row">
<div class="col-25">
<label for="fname">Primeiro Nome</label>
</div>
<div class="col-75">
<input type="text" id="fname" name="firstname" placeholder="Seu nome..">
</div>
</div>
<!-- Restante do código do formulário -->
</form>
</div>
</body>
</html>
Os atributos action
e target
são essenciais para definir o comportamento de envio e o destino de um formulário HTML. Vamos explorar como utilizá-los.
O atributo action
especifica a URL do servidor para onde os dados do formulário serão enviados quando o formulário for submetido. Este atributo é obrigatório em formulários HTML.
Exemplo:
<form action="https://www.exemplo.com/processar-formulario" method="post">
No exemplo acima, os dados do formulário serão enviados para a URL https://www.exemplo.com/processar-formulario
.
O atributo target
define onde o resultado do formulário será exibido. Ele pode ter vários valores, como _blank
, _self
, _parent
, ou _top
.
Exemplo com target="_blank"
:
<form action="https://www.exemplo.com/processar-formulario" target="_blank">
O valor _blank
fará com que o resultado do formulário seja aberto em uma nova aba ou janela do navegador.
Você pode combinar os atributos action
e target
para definir o destino e o comportamento do envio de um formulário. Aqui está um exemplo onde o formulário envia dados para uma página e exibe o resultado em uma nova aba:
<form action="https://www.exemplo.com/processar-formulario" target="_blank" method="post">
Veja um exemplo de como esses atributos podem ser usados em um formulário real:
<form action="https://www.exemplo.com/processar-formulario" target="_blank" method="post">
<label for="nome">Nome:</label>
<input type="text" id="nome" name="nome" required>
<input type="submit" value="Enviar">
</form>
post
ou get
).O formulário abaixo envia dados para uma página externa e abre o resultado em uma nova janela:
<form action="https://www.exemplo.com/processar-formulario" target="_blank" method="post">
<label for="email">E-mail:</label>
<input type="email" id="email" name="email" required>
<input type="submit" value="Enviar">
</form>
O uso dos atributos action
e target
em formulários HTML permite maior controle sobre o envio de dados e como o resultado será apresentado ao usuário. Estes atributos são fundamentais para a interação entre o cliente e o servidor em formulários.
Contadores CSS funcionam como "variáveis" mantidas pelo CSS, cujo valor pode ser incrementado por regras CSS, permitindo rastrear quantas vezes algo foi usado. Eles são úteis para ajustar a aparência do conteúdo com base na ordem ou na colocação no documento.
counter-reset
: Cria ou zera um contador.counter-increment
: Incrementa um valor de contador.content
: Insere conteúdo gerado com o valor de um contador.counter()
ou counters()
: Retorna o valor atual do contador ou valores de contadores aninhados.O exemplo a seguir cria um contador para a página (no seletor de corpo), então incrementa o valor do contador para cada elemento <h2>
e adiciona "Seção < valor do contador >:" ao início de cada elemento <h2>
:
body {
counter-reset: section;
}
h2::before {
counter-increment: section;
content: "Section " counter(section) ": ";
}
O exemplo a seguir cria um contador para a página (seção) e um contador para cada elemento <h1>
(subseção). O contador "seção" será contado para cada elemento <h1>
com "Seção < valor do contador da seção >.", e o contador "subseção" será contado para cada elemento <h2>
com "< valor do contador da seção >.< valor do contador da subseção >":
body {
counter-reset: section;
}
h1 {
counter-reset: subsection;
}
h1::before {
counter-increment: section;
content: "Section " counter(section) ". ";
}
h2::before {
counter-increment: subsection;
content: counter(section) "." counter(subsection) " ";
}
Um contador também pode ser útil para criar listas numeradas. Aqui usamos a função counters()
para inserir uma string entre diferentes níveis de contadores aninhados:
ol {
counter-reset: section;
list-style-type: none;
}
li::before {
counter-increment: section;
content: counters(section, ".") " ";
}
Propriedade | Descrição |
---|---|
content |
Usada com os pseudo-elementos ::before e ::after para inserir conteúdo gerado. |
counter-increment |
Incrementa um ou mais valores de contador. |
counter-reset |
Cria ou reinicia um ou mais contadores. |
counter() |
Retorna o valor atual do contador nomeado. |
counters() |
Retorna os valores atuais dos contadores nomeados e aninhados. |
Um site geralmente é dividido em cabeçalhos, menus, conteúdo e rodapé:
Cabeçalho |
Menu de Navegação |
Conteúdo Principal |
Rodapé |
Há diversos designs de layout diferentes para escolher. No entanto, a estrutura acima é uma das mais comuns, e vamos dar uma olhada mais de perto nela neste tutorial.
Um cabeçalho geralmente fica localizado no topo do site (ou logo abaixo de um menu de navegação superior). Ele geralmente contém um logotipo ou o nome do site:
.header {
background-color: #F1F1F1;
text-align: center;
padding: 20px;
}
Este código cria um cabeçalho com fundo cinza claro, texto centralizado e algum espaçamento ao redor do conteúdo.
Uma barra de navegação contém uma lista de links para ajudar os visitantes a navegar pelo seu site:
/* O container da navbar */
.topnav {
overflow: hidden;
background-color: #333;
}
/* Links da Navbar */
.topnav a {
float: left;
display: block;
color: #f2f2f2;
text-align: center;
padding: 14px 16px;
text-decoration: none;
}
/* Links - muda a cor ao passar o mouse */
.topnav a:hover {
background-color: #ddd;
color: black;
}
Este código cria uma barra de navegação com links que mudam de cor quando o mouse passa sobre eles.
O layout nesta seção frequentemente depende dos usuários-alvo. O layout mais comum é um (ou uma combinação deles) dos seguintes:
1 Coluna (geralmente usada em navegadores móveis) |
2 Colunas (geralmente usada para tablets e laptops) |
Layout de 3 Colunas (usado somente para desktops) |
Criamos um layout de 3 colunas e o alteramos para um layout de 1 coluna em telas menores:
/* Cria três colunas iguais que ficam ao lado uma da outra */
.column {
float: left;
width: 33.33%;
}
/* Limpar floats após as colunas */
.row:after {
content: "";
display: table;
clear: both;
}
/* Layout responsivo - faz as três colunas empilharem uma sobre a outra em telas menores (600px ou menos) */
@media screen and (max-width: 600px) {
.column {
width: 100%;
}
}
Este layout exibirá três colunas de igual tamanho, mas em telas pequenas, elas serão empilhadas verticalmente.
Coluna |
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas sit amet pretium urna. Vivamus venenatis velit nec neque ultricies, eget elementum magna tristique. |
Coluna |
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas sit amet pretium urna. Vivamus venenatis velit nec neque ultricies, eget elementum magna tristique. |
Coluna |
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas sit amet pretium urna. Vivamus venenatis velit nec neque ultricies, eget elementum magna tristique. |
Para criar um layout de 2 colunas, altere a largura para 50%. Para criar um layout de 4 colunas, use 25%, etc.
Quer saber como a regra @media funciona? Leia mais sobre isso em nosso capítulo sobre Consultas de Mídia CSS.
Uma maneira mais moderna de criar layouts de coluna é usar o CSS Flexbox. No entanto, ele não é suportado no Internet Explorer 10 e versões anteriores. Se você precisar de suporte ao IE6-10, use floats (como mostrado acima).
Para saber mais sobre o módulo de Layout Flexível, leia nosso capítulo sobre CSS Flexbox.
O conteúdo principal é a parte maior e mais importante do seu site. É comum usar larguras de coluna desiguais, de modo que a maior parte do espaço seja reservada para o conteúdo principal. O conteúdo lateral (se houver) é frequentemente usado como navegação alternativa ou para fornecer informações relevantes ao conteúdo principal.
Alterando as larguras como quiser, mas lembre-se de que a soma total deve ser 100%:
.column {
float: left;
}
/* Coluna lateral */
.column.side {
width: 25%;
}
/* Coluna central */
.column.middle {
width: 50%;
}
/* Layout responsivo - faz as colunas empilharem uma sobre a outra */
@media screen and (max-width: 600px) {
.column.side, .column.middle {
width: 100%;
}
}
Lateral |
Lorem ipsum dolor sit amet, consectetur adipiscing elit... |
Conteúdo Principal |
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas sit amet pretium urna. Vivamus venenatis velit nec neque ultricies, eget elementum magna tristique. Quisque vehicula, risus eget aliquam placerat, purus leo tincidunt eros, eget luctus quam orci in velit. Praesent scelerisque tortor sed accumsan convallis. |
Lateral |
Lorem ipsum dolor sit amet, consectetur adipiscing elit... |
O rodapé é colocado na parte inferior da sua página. Ele geralmente contém informações como direitos autorais e informações de contato:
.footer {
background-color: #F1F1F1;
text-align: center;
padding: 10px;
}
O rodapé será exibido na parte inferior da página com o conteúdo centralizado.
Usando parte do código CSS acima, criamos um layout de site responsivo, que varia entre duas colunas e colunas de largura total, dependendo da largura da tela.
O CSS tem várias unidades diferentes para expressar um comprimento.
Muitas propriedades CSS aceitam valores de "comprimento", como largura (width), margem (margin), preenchimento (padding), tamanho da fonte (font-size), etc.
Um comprimento é representado por um número seguido por uma unidade de medida, como 10px, 2em, etc.
h1 {
font-size: 60px;
}
p {
font-size: 25px;
line-height: 50px;
}
Nota: Um espaço em branco não pode aparecer entre o número e a unidade. No entanto, se o valor for 0, a unidade pode ser omitida.
Para algumas propriedades CSS, valores de comprimento negativos são permitidos.
Existem dois tipos principais de unidades de comprimento:
As unidades de comprimento absoluto são fixas. Um comprimento expresso em qualquer uma delas será exibido exatamente no tamanho especificado.
As unidades absolutas não são recomendadas para uso em telas devido à grande variedade de tamanhos. No entanto, são úteis para layouts de impressão, onde o meio de saída é conhecido.
Unidade | Descrição |
---|---|
cm | Centímetros |
mm | Milímetros |
in | Polegadas (1in = 96px = 2,54cm) |
px | Pixels (1px = 1/96 de 1 polegada) |
pt | Pontos (1pt = 1/72 de 1 polegada) |
pc | Picas (1pc = 12pt) |
Nota: Os pixels (px) são relativos ao dispositivo de exibição. Em dispositivos de baixa densidade de pixels, 1px corresponde a 1 ponto na tela. Em dispositivos de alta resolução, 1px pode incluir vários pixels de dispositivo.
As unidades de comprimento relativo especificam um comprimento em relação a outra propriedade. Elas são mais adequadas para escalabilidade entre diferentes dispositivos e mídias.
Unidade | Descrição |
---|---|
em | Relativo ao tamanho da fonte do elemento atual (2em significa 2 vezes o tamanho da fonte atual). |
ex | Relativo à altura da letra "x" da fonte atual (raramente usado). |
ch | Relativo à largura do caractere "0" (zero). |
rem | Relativo ao tamanho da fonte do elemento raiz. |
vw | Relativo a 1% da largura da janela de visualização (viewport). |
vh | Relativo a 1% da altura da janela de visualização (viewport). |
vmin | Relativo a 1% da menor dimensão da janela de visualização (viewport). |
vmax | Relativo a 1% da maior dimensão da janela de visualização (viewport). |
% | Relativo ao tamanho do elemento pai. |
Dica: As unidades em e rem são úteis para criar layouts escaláveis!
Viewport: É o tamanho da janela do navegador. Por exemplo, se a largura da viewport for 50cm, 1vw = 0,5cm.
A tabela a seguir mostra as versões mínimas dos navegadores que suportam totalmente as unidades de comprimento:
Unidade de Comprimento | Chrome | Firefox | Safari | Opera | Edge |
---|---|---|---|---|---|
em, ex, %, px, cm, mm, in, pt, pc | 1.0 | 3.0 | 1.0 | 1.0 | 3.5 |
ch | 27.0 | 9.0 | 1.0 | 7.0 | 20.0 |
rem | 4.0 | 9.0 | 3.6 | 4.1 | 11.6 |
vh, vw | 20.0 | 9.0 | 19.0 | 6.0 | 20.0 |
vmin | 20.0 | 12.0 | 19.0 | 6.0 | 20.0 |
vmax | 26.0 | 16.0 | 19.0 | 7.0 | 20.0 |
Se houver duas ou mais regras CSS que apontam para o mesmo elemento, o seletor com a maior especificidade "vencerá", e sua declaração de estilo será aplicada a esse elemento HTML. A especificidade é uma hierarquia que determina qual declaração de estilo será aplicada.
O seletor de elemento possui baixa especificidade. Aqui, o texto ficará vermelho:
<html>
<head>
<style>
p { color: red; }
</style>
</head>
<body>
<p>Hello World!</p>
</body>
</html>
O seletor de classe tem prioridade mais alta que o seletor de elemento. O texto será verde:
<html>
<head>
<style>
.test { color: green; }
p { color: red; }
</style>
</head>
<body>
<p class="test">Hello World!</p>
</body>
</html>
O seletor de ID tem prioridade mais alta que o seletor de classe. O texto será azul:
<html>
<head>
<style>
#demo { color: blue; }
.test { color: green; }
p { color: red; }
</style>
</head>
<body>
<p id="demo" class="test">Hello World!</p>
</body>
</html>
O estilo inline tem a maior prioridade. O texto será rosa:
<html>
<head>
<style>
#demo { color: blue; }
.test { color: green; }
p { color: red; }
</style>
</head>
<body>
<p id="demo" class="test" style="color: pink;">Hello World!</p>
</body>
</html>
Abaixo está uma tabela que mostra a hierarquia de especificidade em CSS:
Prioridade | Exemplo | Descrição |
---|---|---|
Estilo Inline | <h1 style="color: pink;"> | Maior prioridade, diretamente aplicado com o atributo style . |
Seletor de ID | #navbar | Segunda maior prioridade, identifica um elemento único. |
Seletor de Classe | .test | Terceira maior prioridade, aplica-se a elementos com a classe especificada. |
Seletor de Atributo | [type="text"] | Aplica-se a elementos com atributos específicos. |
Seletor de Elemento | p | Menor prioridade, aplica-se a elementos HTML. |
Se duas regras com a mesma especificidade forem aplicadas, a última regra prevalece.
h1 { background-color: yellow; }
h1 { background-color: red; }
No exemplo acima, o fundo do h1
será vermelho.
Veja como a especificidade funciona em situações diferentes:
div#myDiv { background-color: green; } /* Mais específica */
#myDiv { background-color: yellow; }
div[id=myDiv] { background-color: blue; }
No exemplo acima, o fundo será verde porque a primeira regra é a mais específica.
A especificidade é uma ferramenta essencial no CSS para resolver conflitos entre regras de estilo. Compreender a hierarquia ajuda a aplicar os estilos corretamente e evitar surpresas no design.
A regra !important
em CSS é usada para adicionar mais importância a uma propriedade/valor do que o normal.
Na verdade, se você usar a regra !important
, ela substituirá TODAS as regras de estilo anteriores para aquela propriedade específica naquele elemento!
#myid {
background-color: blue;
}
.myclass {
background-color: gray;
}
p {
background-color: red !important;
}
No exemplo acima, todos os três parágrafos receberão uma cor de fundo vermelha, mesmo que o seletor de ID e o seletor de classe tenham uma especificidade maior. A regra !important
substitui a propriedade background-color
em ambos os casos.
A única maneira de substituir uma regra !important
é incluir outra regra !important
em uma declaração com a mesma (ou maior) especificidade no código-fonte – e aqui o problema começa! Isso torna o código CSS confuso e a depuração será difícil, especialmente se você tiver uma folha de estilo grande!
Aqui criamos um exemplo simples. Não fica muito claro, quando você olha o código-fonte CSS, qual cor é considerada mais importante:
#myid {
background-color: blue !important;
}
.myclass {
background-color: gray !important;
}
p {
background-color: red !important;
}
É bom saber sobre a regra !important
, pois você pode vê-la em algum código-fonte CSS. No entanto, não a use a menos que seja absolutamente necessário.
Uma maneira de usar !important
é se você tiver que substituir um estilo que não pode ser substituído de nenhuma outra forma. Isso pode ser se você estiver trabalhando em um Sistema de Gerenciamento de Conteúdo (CMS) e não puder editar o código CSS. Então você pode definir alguns estilos personalizados para substituir alguns dos estilos do CMS.
Outra maneira de usar !important
é: Suponha que você queira uma aparência especial para todos os botões em uma página. Aqui, os botões são estilizados com uma cor de fundo cinza, texto branco e algum preenchimento e borda:
.button {
background-color: #8c8c8c;
color: white;
padding: 5px;
border: 1px solid black;
}
A aparência de um botão pode mudar algumas vezes se o colocarmos dentro de outro elemento com maior especificidade, e as propriedades entram em conflito. Aqui está um exemplo disso:
.button {
background-color: #8c8c8c;
color: white;
padding: 5px;
border: 1px solid black;
}
#myDiv a {
color: red;
background-color: yellow;
}
Para "forçar" todos os botões a terem a mesma aparência, não importa o que aconteça, podemos adicionar a regra !important
às propriedades do botão, assim:
.button {
background-color: #8c8c8c !important;
color: white !important;
padding: 5px !important;
border: 1px solid black !important;
}
#myDiv a {
color: red;
background-color: yellow;
}
As funções matemáticas CSS permitem que expressões matemáticas sejam usadas como valores de propriedade. Aqui, explicaremos as funções calc()
, max()
e min()
.
calc()
A função calc()
executa um cálculo a ser usado como valor da propriedade.
Valor | Descrição |
---|---|
expression |
Obrigatório. Uma expressão matemática. O resultado será usado como valor. |
Operadores | Os seguintes operadores podem ser usados: + - * / |
Use calc()
para calcular a largura de um elemento <div>
:
|
max()
A função max()
usa o maior valor de uma lista de valores separados por vírgulas, como o valor da propriedade.
Valor | Descrição |
---|---|
value1, value2, ... |
Obrigatório. Uma lista de valores separados por vírgulas - onde o maior valor é escolhido. |
Use max()
para definir a largura de #div1
para o valor que for maior, 50% ou 300px:
|
min()
A função min()
usa o menor valor de uma lista de valores separados por vírgulas, como o valor da propriedade.
Valor | Descrição |
---|---|
value1, value2, ... |
Obrigatório. Uma lista de valores separados por vírgulas - onde o menor valor é escolhido. |
Use min()
para definir a largura de #div1
para o menor valor, 50% ou 300px:
|
Com a propriedade border-radius
CSS, você pode dar a qualquer elemento "cantos arredondados".
border-radius
A propriedade border-radius
define o raio dos cantos de um elemento.
Dica: Esta propriedade permite que você adicione cantos arredondados aos elementos!
|
Cantos arredondados com fundo verde |
|
Cantos arredondados com borda verde |
|
Cantos arredondados com imagem de fundo |
border-radius
- Especificando Cada CantoA propriedade border-radius
pode ter de um a quatro valores. Aqui estão as regras:
Valores | Descrição |
---|---|
border-radius: 15px 50px 30px 5px; |
Primeiro valor: superior esquerdo; segundo valor: superior direito; terceiro valor: inferior direito; quarto valor: inferior esquerdo. |
border-radius: 15px 50px 30px; |
Primeiro valor: superior esquerdo; segundo valor: superior direito e inferior esquerdo; terceiro valor: inferior direito. |
border-radius: 15px 50px; |
Primeiro valor: superior esquerdo e inferior direito; segundo valor: superior direito e inferior esquerdo. |
border-radius: 15px; |
Aplica-se igualmente a todos os quatro cantos. |
|
Cantos com diferentes valores para cada canto |
|
Cantos com dois valores comuns |
|
Cantos com dois valores |
|
Cantos arredondados iguais |
Você também pode criar cantos elípticos com a sintaxe:
|
Cantos elípticos com maior raio horizontal |
|
Cantos elípticos com maior raio vertical |
|
Cantos elípticos com 50% de raio (circular) |
Propriedade | Descrição |
---|---|
border-radius |
Uma abreviação para definir todas as propriedades de border-*-radius |
border-top-left-radius |
Define a forma do canto superior esquerdo |
border-top-right-radius |
Define a forma do canto superior direito |
border-bottom-right-radius |
Define a forma do canto inferior direito |
border-bottom-left-radius |
Define a forma do canto inferior esquerdo |
border-left-radius |
Define a forma do canto esquerdo (combinando os cantos superior e inferior esquerdo) |
border-right-radius |
Define a forma do canto direito (combinando os cantos superior e inferior direito) |
Com a propriedade CSS background
, você pode adicionar múltiplos fundos a um único elemento. Essa propriedade permite a combinação de diferentes imagens e cores de fundo.
background
A propriedade background
é usada para definir uma ou mais imagens de fundo, cores e posicionamentos em um único elemento.
Com o CSS moderno, você pode usar várias imagens de fundo, separadas por vírgulas.
|
Três fundos: duas imagens e uma cor de fundo |
|
Dois fundos com imagens em diferentes posições |
|
Imagem 1 com tamanho fixo e imagem 2 repetida horizontalmente |
Você pode especificar a posição e o tamanho de cada imagem de fundo, assim como o comportamento de repetição.
|
Imagem 1 com tamanho fixo e imagem 2 cobrindo o fundo |
Este é um exemplo de como usar múltiplos fundos CSS com diferentes imagens e propriedades de repetição e posicionamento.
|
Propriedade | Descrição |
---|---|
background-image |
Especifica uma ou mais imagens de fundo para o elemento. |
background-repeat |
Controla a repetição das imagens de fundo. |
background-position |
Define a posição inicial das imagens de fundo. |
background-size |
Define o tamanho das imagens de fundo. |
background-attachment |
Define se a imagem de fundo rola com o conteúdo ou permanece fixa. |
background-origin |
Define a área de origem da imagem de fundo. |
background-clip |
Define a área onde a imagem de fundo será desenhada. |
Escolha abaixo diferentes combinações de fundos para ver o efeito diretamente!
O CSS oferece várias formas de definir cores para os elementos. Isso inclui nomes de cores, valores HEX, RGB, RGBA, HSL e HSLA.
Os valores de cor RGBA são uma extensão dos valores de cor RGB com um canal alfa, que especifica a opacidade de uma cor.
Um valor de cor RGBA é especificado com: rgba(red, green, blue, alpha)
, onde o parâmetro alpha
é um número entre 0.0 (totalmente transparente) e 1.0 (totalmente opaco).
|
Cores RGBA com diferentes valores de opacidade |
|
Cores RGBA com diferentes valores de opacidade |
|
Cores RGBA com diferentes valores de opacidade |
HSL significa Matiz, Saturação e Luminosidade. Um valor de cor HSL é especificado com: hsl(hue, saturation, lightness)
.
|
Cores HSL com diferentes valores de saturação e luminosidade |
|
Cores HSL com diferentes valores de saturação e luminosidade |
|
Cores HSL com diferentes valores de saturação e luminosidade |
Os valores de cor HSLA são uma extensão dos valores de cor HSL com um canal alfa, que especifica a opacidade da cor.
Um valor de cor HSLA é especificado com: hsla(hue, saturation, lightness, alpha)
, onde o parâmetro alpha
define a opacidade.
|
Cores HSLA com diferentes valores de opacidade |
|
Cores HSLA com diferentes valores de opacidade |
|
Cores HSLA com diferentes valores de opacidade |
A propriedade opacity
no CSS define a opacidade de todo o elemento. Isso inclui tanto a cor de fundo quanto o texto do elemento.
O valor da propriedade opacity
deve ser um número entre 0,0 (totalmente transparente) e 1,0 (totalmente opaco).
|
Cor de fundo com opacidade aplicada |
|
Cor de fundo com opacidade aplicada |
|
Cor de fundo com opacidade aplicada |
Escolha abaixo diferentes combinações de cores para ver o efeito diretamente!
Esta página explicará as palavras-chave transparent
, currentcolor
e inherit
.
transparent
A palavra-chave transparent
é usada para tornar uma cor transparente. Isso é frequentemente usado para tornar uma cor de fundo transparente para um elemento.
|
A cor de fundo do elemento <div> será totalmente transparente, permitindo que a imagem de fundo seja visível. |
currentcolor
A palavra-chave currentcolor
é como uma variável que contém o valor atual da propriedade de cor de um elemento.
currentcolor
para borda
|
A cor da borda do elemento <div> será azul, pois a cor do texto do elemento <div> é azul. |
currentcolor
para cor de fundo
|
A cor de fundo do <div> é definida como o valor de cor atual do elemento body (roxo). |
currentcolor
para borda e sombra
|
A cor da borda e a cor da sombra do <div> são definidas como o valor de cor atual do elemento body (verde). |
inherit
A palavra-chave inherit
especifica que uma propriedade deve herdar seu valor de seu elemento pai.
|
As configurações de borda do <span> serão herdadas do elemento pai <div> . |
Escolha diferentes valores para as palavras-chave e veja como elas afetam o estilo!
Fundos Gradientes permitem que você crie transições suaves entre várias cores. O CSS oferece três tipos principais de gradientes: lineares, radiais e cônicos.
Para criar um gradiente linear, você deve definir pelo menos duas paradas de cor. As paradas de cor determinam as cores entre as quais o gradiente transitará.
|
O gradiente começa em vermelho e transita suavemente para amarelo de cima para baixo. |
|
O gradiente começa na esquerda, com vermelho, e transita suavemente para amarelo à direita. |
|
O gradiente começa no canto superior esquerdo e vai até o canto inferior direito. |
|
Gradiente com um ângulo de 180 graus, indo de cima para baixo, do vermelho para o amarelo. |
|
Um gradiente com várias paradas de cor (vermelho, amarelo, e verde). |
|
Um gradiente linear com cores do arco-íris, da esquerda para a direita. |
|
Gradiente linear com a cor começando transparente e transitando para o vermelho completo. |
|
Gradiente linear repetido, criando uma sequência de cores de vermelho, amarelo e verde. |
Escolha as cores e direções para ver como os gradientes se comportam!
Um gradiente radial é um gradiente que se espalha a partir de um ponto central e pode ter diferentes formas e tamanhos.
A sintaxe básica para criar um gradiente radial é a seguinte:
background-image: radial-gradient(shape size at position, start-color, ..., last-color);
Por padrão, a forma é ellipse, o tamanho é farthest-corner, e a posição é o centro.
|
O gradiente começa com vermelho no centro e transita suavemente para amarelo e verde, com as paradas de cor uniformemente espaçadas. |
|
Este exemplo mostra um gradiente radial com espaçamento desigual entre as cores, começando com vermelho e transitando para amarelo e verde. |
|
Este gradiente tem o formato de um círculo, começando no centro com vermelho e transita suavemente para amarelo e verde. |
|
Exemplo com diferentes tamanhos de gradientes: closest-side e farthest-side . |
|
Um gradiente radial repetido, criando uma sequência de cores com vermelho, amarelo e verde. |
Escolha as cores e parâmetros para ver como o gradiente radial se comporta!
Os gradientes cônicos CSS permitem transições de cores giradas em torno de um ponto central. Para criar um gradiente cônico, defina pelo menos duas cores.
|
Exemplo de um gradiente cônico com três cores: vermelho, amarelo e verde. |
|
Exemplo de um gradiente cônico com cinco cores. |
|
Exemplo de um gradiente cônico com três cores e graus definidos. |
Adicione border-radius: 50%
para criar gráficos de pizza.
|
Exemplo de gráfico de pizza com um gradiente cônico. |
|
Exemplo de gradiente cônico com um ângulo de 90 graus. |
|
Exemplo de gradiente cônico com uma posição central especificada. |
|
Exemplo de gradiente cônico repetitivo. |
A tabela a seguir lista as funções de gradiente CSS:
Função | Descrição |
---|---|
conic-gradient() |
Criar um gradiente cônico (define pelo menos duas cores em torno de um ponto central). |
linear-gradient() |
Criar um gradiente linear (define pelo menos duas cores de cima para baixo ou de outra direção). |
radial-gradient() |
Criar um gradiente radial (define pelo menos duas cores do centro para as bordas). |
repeating-conic-gradient() |
Repete um gradiente cônico. |
repeating-linear-gradient() |
Repete um gradiente linear. |
repeating-radial-gradient() |
Repete um gradiente radial. |
Com CSS você pode criar efeitos de sombra em textos e elementos. Vamos explorar algumas formas de adicionar sombra usando as propriedades text-shadow
e box-shadow
.
A propriedade text-shadow
aplica sombra ao texto. Aqui estão alguns exemplos de efeitos de sombra em texto:
|
Exemplo básico de sombra com 2px horizontal e 2px vertical. |
|
Exemplo com a sombra colorida (vermelho). |
|
Exemplo com desfoque de 5px na sombra. |
|
Texto branco com sombra preta. |
|
Texto com uma sombra vermelha brilhante estilo neon. |
Para adicionar mais de uma sombra ao texto, basta separar as sombras com vírgulas. Aqui estão alguns exemplos:
|
Texto com duas sombras: vermelha e azul. |
|
Texto com sombra preta, azul e azul escuro. |
Você pode usar a propriedade text-shadow
para criar uma borda ao redor do texto (sem sombras):
|
Borda preta ao redor do texto (sem sombra). |
A propriedade box-shadow
é usada para adicionar uma ou mais sombras a um elemento.
|
Especifica uma sombra horizontal e vertical. |
|
Especifica uma cor para a sombra. |
|
Adiciona um efeito de desfoque à sombra. |
|
Define o raio de dispersão da sombra. |
|
Altera a sombra externa para uma sombra interna. |
|
Adiciona várias sombras a um elemento. |
|
Criar um cartão com sombras. |
A tabela a seguir lista as propriedades de sombra CSS:
Propriedade | Descrição |
---|---|
box-shadow |
Adiciona uma ou mais sombras a um elemento. |
text-shadow |
Adiciona uma ou mais sombras a um texto. |
CSS Text Overflow, quebra de linha, regras de quebra de linha e modos de escrita. Neste capítulo você aprenderá sobre as seguintes propriedades:
text-overflow
word-wrap
word-break
writing-mode
A propriedade text-overflow
especifica como o conteúdo excedente que não é exibido deve ser sinalizado ao usuário.
|
Exibe o texto recortado quando ultrapassa a largura do container. |
|
Exibe reticências (...) quando o texto ultrapassa o limite do container. |
A propriedade word-wrap
permite que palavras longas sejam quebradas e colocadas na próxima linha.
|
Força a quebra de palavras longas e coloca na próxima linha. |
A propriedade word-break
especifica regras de quebra de linha para palavras.
|
As palavras não serão quebradas ao meio. |
|
As palavras serão quebradas em qualquer ponto. |
A propriedade writing-mode
especifica se as linhas de texto são dispostas horizontalmente ou verticalmente.
|
O texto é exibido horizontalmente (de cima para baixo). |
|
O texto é exibido verticalmente (da direita para a esquerda). |
|
Outro exemplo de texto exibido verticalmente. |
A tabela a seguir lista as propriedades do efeito de texto CSS:
Propriedade | Descrição |
---|---|
text-justify |
Especifica como o texto justificado deve ser alinhado e espaçado. |
text-overflow |
Especifica como o conteúdo excedente que não é exibido deve ser sinalizado ao usuário. |
word-break |
Especifica regras de quebra de linha para scripts não CJK. |
word-wrap |
Permite que palavras longas sejam quebradas e colocadas na próxima linha. |
writing-mode |
Especifica se as linhas de texto são dispostas horizontalmente ou verticalmente. |
Este é um texto longo que não cabe na caixa e precisa ser testado para verificar os efeitos.
A regra @font-face
do CSS permite que os designers da Web usem fontes que não estão instaladas no computador do usuário.
Quando você encontrar/comprar a fonte que deseja usar, basta incluir o arquivo da fonte no seu servidor web, e ele será baixado automaticamente para o usuário quando necessário.
Formato de Fonte | Chrome | Firefox | Safari | IE | Opera |
---|---|---|---|---|---|
TTF/OTF | 9.0* | 4.0 | 3.5 | 3.1 | 10.0 |
WOFF | 9.0 | 5.0 | 3.6 | 5.1 | 11.1 |
WOFF2 | 14.0 | 36.0 | 39.0 | 10.0 | 26.0 |
SVG | No | No | No | 3.2 | No |
EOT | 6.0 | No | No | No | No |
Na regra @font-face
, defina um nome para a fonte e aponte para o arquivo da fonte. Em seguida, use a propriedade font-family
para aplicar a fonte aos elementos HTML.
Usando Texto em NegritoVocê pode adicionar outro
|
---|
A tabela a seguir lista todos os descritores de fonte que podem ser definidos dentro da regra @font-face
:
Descritor | Valores | Descrição |
---|---|---|
font-family | nome | Define o nome da fonte |
src | URL | Define a URL do arquivo da fonte |
font-stretch | normal, condensed, extra-condensed, etc. | Define como a fonte deve ser esticada. O padrão é "normal" |
font-style | normal, italic, oblique | Define como a fonte deve ser estilizada. O padrão é "normal" |
font-weight | normal, bold, 100, 200, 300, etc. | Define o peso da fonte. O padrão é "normal" |
unicode-range | unicode-range | Define o intervalo de caracteres UNICODE que a fonte suporta |
Este é um exemplo de texto para testar a fonte.
Com a propriedade CSS transform
, você pode mover, girar, dimensionar e inclinar elementos na página. As transformações 2D permitem criar efeitos visuais dinâmicos.
transform
A propriedade transform
permite aplicar várias transformações em um elemento, como translação, rotação, escalonamento e inclinação. As funções que podemos usar incluem:
translate()
- Move o elementorotate()
- Gira o elementoscale()
- Ajusta o tamanho do elementoskew()
- Inclina o elementomatrix()
- Aplica várias transformações simultaneamenteFunção | Descrição |
---|---|
matrix() |
Define uma transformação 2D, utilizando uma matriz de seis valores. |
translate() |
Define uma translação 2D, movendo o elemento ao longo dos eixos X e Y. |
translateX() |
Define uma translação 2D, movendo o elemento ao longo do eixo X. |
translateY() |
Define uma translação 2D, movendo o elemento ao longo do eixo Y. |
scale() |
Define uma transformação de escala 2D, ajustando a largura e a altura do elemento. |
scaleX() |
Define uma transformação de escala 2D, ajustando a largura do elemento. |
scaleY() |
Define uma transformação de escala 2D, ajustando a altura do elemento. |
rotate() |
Define uma rotação 2D, o ângulo é especificado no parâmetro. |
skew() |
Define uma transformação de inclinação 2D, ao longo dos eixos X e Y. |
skewX() |
Define uma transformação de inclinação 2D, ao longo do eixo X. |
skewY() |
Define uma transformação de inclinação 2D, ao longo do eixo Y. |
|
Move o elemento 50px para a direita e 100px para baixo. |
|
Gira o elemento 45 graus no sentido horário. |
|
Redimensiona o elemento, dobrando sua largura e aumentando 1.5 vezes sua altura. |
|
Inclina o elemento 20 graus ao longo do eixo X e 10 graus ao longo do eixo Y. |
|
Combina translação, rotação e escalonamento em uma única transformação. |
Propriedade | Descrição |
---|---|
transform |
Aplica a transformação ao elemento |
transform-origin |
Define a posição do ponto de origem da transformação (como a rotação ou escalonamento) |
Experimente as diferentes transformações para ver os efeitos diretamente!
CSS também suporta transformações 3D. Passe o mouse sobre os elementos abaixo para ver a diferença entre uma transformação 2D e 3D:
Com a propriedade CSS transform
, você pode usar as seguintes funções de transformação 3D:
Função | Descrição |
---|---|
rotateX() |
Gira o elemento em torno de seu eixo X em um determinado grau. |
rotateY() |
Gira o elemento em torno de seu eixo Y em um determinado grau. |
rotateZ() |
Gira o elemento em torno de seu eixo Z em um determinado grau. |
|
Gira o elemento em torno de seu eixo X em 150 graus. |
|
Gira o elemento em torno de seu eixo Y em 150 graus. |
|
Gira o elemento em torno de seu eixo Z em 90 graus. |
Propriedade | Descrição |
---|---|
transform |
Aplica uma transformação 2D ou 3D a um elemento. |
transform-origin |
Permite alterar a posição dos elementos transformados. |
transform-style |
Especifica como os elementos aninhados são renderizados no espaço 3D. |
perspective |
Especifica a perspectiva de como os elementos 3D são visualizados. |
perspective-origin |
Especifica a posição inferior dos elementos 3D. |
backface-visibility |
Define se um elemento será visível quando não estiver voltado para a tela. |
Função | Descrição |
---|---|
matrix3d() |
Define uma transformação 3D, utilizando uma matriz 4x4 de 16 valores. |
translate3d() |
Define uma translação 3D. |
translateZ() |
Define uma translação 3D, utilizando apenas o valor para o eixo Z. |
scale3d() |
Define uma transformação de escala 3D. |
scaleZ() |
Define uma transformação de escala 3D, aplicando um valor para o eixo Z. |
rotate3d() |
Define uma rotação 3D. |
rotateX() |
Define uma rotação 3D ao longo do eixo X. |
rotateY() |
Define uma rotação 3D ao longo do eixo Y. |
rotateZ() |
Define uma rotação 3D ao longo do eixo Z. |
perspective() |
Define a perspectiva para um elemento transformado em 3D. |
Experimente as transformações 3D para ver os efeitos diretamente!
As transições CSS permitem que você altere valores de propriedades suavemente, ao longo de um determinado período.
Passe o mouse sobre o elemento abaixo para ver um efeito de transição CSS:
Para criar um efeito de transição, você deve especificar duas coisas:
Observação: se a parte da duração não for especificada, a transição não terá efeito, porque o valor padrão é 0.
|
O efeito de transição começa quando a propriedade width muda de valor (ao passar o mouse). |
|
Quando o cursor passa sobre o div , a largura aumenta para 300px. |
|
Adiciona um efeito de transição para as propriedades width e height , com durações diferentes. |
A propriedade transition-timing-function
especifica a curva de velocidade do efeito de transição. Aqui estão os valores possíveis:
ease
- um efeito de transição com um início lento, depois rápido e, por fim, lentamente (padrão);linear
- uma transição com a mesma velocidade do início ao fim;ease-in
- um início lento;ease-out
- um final lento;ease-in-out
- início e fim lentos;cubic-bezier(n,n,n,n)
- permite definir seus próprios valores em uma função cúbica-bezier.
|
linear |
|
ease |
|
ease-in |
|
ease-out |
|
ease-in-out |
A propriedade transition-delay
especifica um atraso (em segundos) para o efeito de transição.
|
A transição começa após 1 segundo de atraso. |
Você também pode adicionar um efeito de transição à transformação de um elemento:
|
Aplica a transição a width , height e transform . |
|
Propriedades de transição especificadas uma por uma. |
|
Propriedade abreviada para transição. |
Experimente a transição de largura ao passar o mouse sobre o quadrado abaixo:
As animações CSS permitem que você crie efeitos dinâmicos em seus elementos. Abaixo, você verá a tabela com as propriedades utilizadas para trabalhar com animações:
Propriedade | Descrição |
---|---|
@keyframes |
Especifica o código de animação, que define o comportamento da animação em diferentes pontos do tempo. |
animation |
Uma propriedade abreviada para definir todas as propriedades de animação. |
animation-delay |
Especifica um atraso para o início da animação. |
animation-direction |
Especifica se a animação deve ser executada para frente, para trás ou em ciclos alternados. |
animation-duration |
Especifica o tempo necessário para que a animação complete um ciclo. |
animation-fill-mode |
Especifica o estilo do elemento quando a animação não está em execução (antes de começar, depois de terminar, ou ambos). |
animation-iteration-count |
Especifica quantas vezes a animação deve ser executada. |
animation-name |
Especifica o nome da animação definida com @keyframes . |
animation-play-state |
Especifica se a animação está em execução ou pausada. |
animation-timing-function |
Especifica a curva de velocidade da animação. |
|
Este exemplo move um elemento da posição inicial para 300px à direita, com uma duração de 2 segundos e uma curva de velocidade "ease-in-out", repetindo infinitamente.
|
A animação começa após um atraso de 1 segundo, tornando o elemento visível com a transição de opacidade de 0 para 1.
|
A animação gira o elemento de 0 a 360 graus, com uma duração de 2 segundos, em ciclos alternados.
|
Esta animação muda a cor de fundo de um elemento entre amarelo e verde em ciclos infinitos com duração de 4 segundos.
|
A animação aumenta o tamanho do elemento para 1,5x e depois o retorna ao seu tamanho original em 3 segundos.
|
Esta animação gira o elemento ao longo do tempo, mas só começa a rodar quando o elemento é hoverizado (passando o mouse sobre ele).
Experimente as animações CSS abaixo:
Exemplo 1 Exemplo 1
|
---|
Exemplo 2 Exemplo 2
|
---|
Exemplo 3 Exemplo 3
|
---|
Exemplo 4 Exemplo 4
|
---|
Exemplo 5 Exemplo 5
|
---|
Exemplo 6 Exemplo 6
|
---|
As dicas de ferramenta são frequentemente usadas para fornecer informações adicionais quando o usuário passa o mouse sobre um elemento. Abaixo estão exemplos de como criar dicas de ferramenta utilizando CSS.
Este é um exemplo simples de como criar uma dica de ferramenta que aparece quando o usuário passa o mouse sobre um elemento:
|
Esse código cria um elemento com a classe "tooltip", e quando o usuário passar o mouse sobre ele, a dica de ferramenta (com a classe "tooltiptext") aparece.
Abaixo estão exemplos de como posicionar a dica de ferramenta em diferentes direções:
|
Esta dica de ferramenta é posicionada à direita do elemento.
|
Esta dica de ferramenta é posicionada à esquerda do elemento.
|
Este exemplo posiciona a dica de ferramenta acima do elemento, centralizando-a.
|
Este exemplo posiciona a dica de ferramenta abaixo do elemento, também centralizada.
Você pode adicionar setas nas dicas de ferramenta para indicar a direção. Aqui está um exemplo de como adicionar uma seta abaixo da dica de ferramenta:
|
Este código adiciona uma seta na parte inferior da dica de ferramenta, criando um balão de fala.
Aqui está o código completo de um exemplo de dica de ferramenta com uma seta:
|
Experimente o exemplo abaixo para visualizar a dica de ferramenta:
Aprenda a estilizar imagens usando CSS. A seguir, você verá vários exemplos de como manipular imagens e aplicar efeitos.
Você pode usar a propriedade border-radius
para criar imagens arredondadas:
Este código cria uma imagem com bordas arredondadas (8px) ou circulares (50%).
CSS | Resultado |
---|---|
|
![]() |
|
![]() |
Propriedade border-radius
: Essa propriedade arredonda as bordas da imagem. Se você usar um valor de 50%, ela se torna uma forma circular.
As imagens responsivas serão ajustadas automaticamente para caber no tamanho da tela:
CSS | Resultado |
---|---|
|
![]() |
Propriedade max-width
: Garante que a imagem nunca ultrapasse a largura do contêiner. A propriedade height: auto
mantém a proporção da imagem.
Cinque Terre
CSS | Resultado |
---|---|
|
![]() Cinque Terre |
Propriedade box-shadow
: Adiciona sombra ao redor da imagem, criando a sensação de profundidade.
Como posicionar texto em uma imagem:
CSS | Resultado |
---|---|
|
![]() |
Propriedade opacity
: Controla a transparência da sobreposição de texto. Ao passar o mouse, a opacidade aumenta, tornando a sobreposição visível.
CSS | Resultado |
---|---|
|
![]() John
|
Propriedade position: absolute
: Posiciona o nome sobre a imagem. A propriedade transform
centraliza o nome e controla o efeito de animação.
Aprenda a centralizar uma imagem horizontal e verticalmente com CSS.
Para centralizar uma imagem horizontalmente, podemos usar dois métodos: usando margin: auto
ou display: flex
.
margin: auto
Uma maneira de centralizar uma imagem horizontalmente em uma página é usar margin: auto
.
Como o elemento <img>
é um elemento inline (e margin: auto
não tem nenhum efeito em elementos inline), também devemos converter a imagem em um elemento de bloco, com display: block
.
Aqui está uma imagem centralizada horizontalmente usando margin: auto
:
Exemplo 1: Centralizar Horizontalmente com margin: auto |
---|
|
Este exemplo centraliza uma imagem na horizontal utilizando a propriedade margin: auto
junto com display: block
.
display: flex
Outra maneira de centralizar uma imagem horizontalmente é usar display: flex
.
Aqui, colocamos o elemento <img>
dentro de um contêiner <div>
. A seguir, adicionamos o seguinte CSS ao contêiner <div>
:
display: flex
justify-content: center
(centraliza a imagem horizontalmente no contêiner)Aqui está uma imagem centralizada horizontalmente usando display: flex
:
Exemplo 2: Centralizar Horizontalmente com display: flex |
---|
|
Este exemplo usa o modelo de layout flexível para centralizar a imagem horizontalmente dentro de um contêiner <div>
.
Agora, para centralizar uma imagem verticalmente, também podemos usar display: flex
.
Suponha que temos um contêiner <div>
com altura de 600px, e queremos centralizar a imagem verticalmente dentro desse contêiner. Usamos as seguintes propriedades no contêiner:
display: flex
justify-content: center
(centraliza a imagem horizontalmente)align-items: center
(centraliza a imagem verticalmente)height: 600px
(altura do contêiner)Aqui está uma imagem centralizada verticalmente:
Exemplo 3: Centralizar Verticalmente com display: flex |
---|
|
Este exemplo centraliza uma imagem dentro de um contêiner <div>
com altura definida, utilizando as propriedades justify-content
e align-items
no modelo de layout flexível.
A propriedade de filtro CSS é usada para adicionar efeitos visuais aos elementos.
A propriedade CSS filter
é usada para adicionar efeitos visuais (como desfoque e saturação) aos elementos.
Dentro da propriedade filter
, você pode usar as seguintes funções CSS:
|
blur()
(Desfoque)O filtro blur()
aplica um efeito de desfoque a um elemento. Quanto maior o valor, maior será o desfoque.
brightness()
(Brilho)O filtro brightness()
ajusta o brilho de uma imagem. Valores acima de 100% tornam a imagem mais clara, abaixo de 100% a tornam mais escura.
contrast()
(Contraste)O filtro contrast()
ajusta o contraste de uma imagem. Valores acima de 100% aumentam o contraste e abaixo de 100% diminuem o contraste.
drop-shadow()
(Sombra Projetada)O filtro drop-shadow()
aplica um efeito de sombra projetada a uma imagem.
grayscale()
(Escala de Cinza)O filtro grayscale()
converte a imagem para tons de cinza. 100% ou 1 a deixará completamente em tons de cinza, enquanto 0% terá nenhum efeito.
hue-rotate()
(Rotação de Cor)O filtro hue-rotate()
aplica uma rotação de matiz a uma imagem. Valores positivos aumentam o valor de matiz, e negativos diminuem.
invert()
(Inverter Cores)O filtro invert()
inverte as cores de uma imagem. 100% (ou 1) fará a imagem completamente invertida.
opacity()
(Opacidade)O filtro opacity()
ajusta a opacidade de uma imagem. 100% (ou 1) não terá efeito, enquanto valores mais baixos tornam a imagem mais transparente.
Com CSS, é fácil moldar (recortar) imagens em diferentes formas, como círculos, elipses e polígonos.
clip-path
A propriedade clip-path
permite que você recorte um elemento em uma forma básica, como círculo, elipse ou polígono.
clip-path: circle()
A função circle()
define um círculo com um raio e uma posição. O valor padrão para a posição é o centro.
Aqui está um exemplo de como recortar uma imagem em um círculo:
Exemplo 1: Recortar em Círculo |
---|
|
Este exemplo recorta a imagem em um círculo com raio de 50%.
clip-path: ellipse()
A função ellipse()
define uma elipse com dois raios (x e y). O valor padrão para o centro é o centro da imagem.
Aqui está um exemplo de como recortar uma imagem em uma elipse:
Exemplo 2: Recortar em Elipse |
---|
|
Este exemplo recorta a imagem em uma elipse com raio x de 50% e raio y de 35%.
clip-path: polygon()
A função polygon()
define um polígono com pontos que formam as coordenadas do polígono.
Aqui está um exemplo de como recortar uma imagem em um polígono:
Exemplo 3: Recortar em Polígono |
---|
|
Este exemplo recorta a imagem em um polígono de 4 lados (forma de diamante).
shape-outside
A propriedade shape-outside
permite que você defina uma forma para o envolvimento do conteúdo, usando a mesma sintaxe das funções clip-path
.
shape-outside
com CírculoAqui, vamos definir uma forma de círculo para que o texto envolva a imagem recortada:
Exemplo 4: shape-outside com Círculo |
---|
|
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla ac laoreet quam, id aliquet nisl.
shape-outside
com ElipseAqui, vamos definir uma forma de elipse para o texto envolver a imagem:
Exemplo 5: shape-outside com Elipse |
---|
|
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla ac laoreet quam, id aliquet nisl.
shape-outside
com PolígonoAqui, vamos definir uma forma de polígono para o texto envolver a imagem:
Exemplo 6: shape-outside com Polígono |
---|
|
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla ac laoreet quam, id aliquet nisl.
A propriedade CSS object-fit
é usada para especificar como uma imagem (<img>
) ou um vídeo (<video>
) deve ser redimensionado para caber em seu contêiner.
object-fit
?A propriedade object-fit
informa ao conteúdo para preencher o contêiner de várias maneiras, como "preservar a proporção" ou "esticar e ocupar o máximo de espaço possível".
Veja a seguinte imagem de Paris. Esta imagem tem 400 pixels de largura e 300 pixels de altura:
Entretanto, se estilizarmos a imagem acima para que tenha metade da largura (200 pixels) e a mesma altura (300 pixels), ela ficará assim:
object-fit
A propriedade object-fit
pode assumir um dos seguintes valores:
fill
- A imagem é redimensionada para preencher a dimensão fornecida. Se necessário, a imagem será esticada ou comprimida para caber.contain
- A imagem mantém sua proporção, mas é redimensionada para caber na dimensão fornecida.cover
- A imagem mantém sua proporção e preenche a dimensão fornecida. A imagem será recortada para caber.none
- A imagem não é redimensionada.scale-down
- A imagem é reduzida para a menor versão entre none
e contain
.object-fit: cover;
Se usarmos object-fit: cover;
, a imagem mantém sua proporção de aspecto e preenche a dimensão dada. A imagem será recortada para caber:
Exemplo 1: Usando object-fit: cover; |
---|
|
object-fit: contain;
Se usarmos object-fit: contain;
, a imagem mantém sua proporção, mas é redimensionada para caber dentro da dimensão fornecida:
Exemplo 2: Usando object-fit: contain; |
---|
|
object-fit: fill;
Se usarmos object-fit: fill;
, a imagem será redimensionada para preencher a dimensão dada. Se necessário, a imagem será esticada ou comprimida para caber:
Exemplo 3: Usando object-fit: fill; |
---|
|
object-fit: none;
Se usarmos object-fit: none;
, a imagem não será redimensionada:
Exemplo 4: Usando object-fit: none; |
---|
|
object-fit: scale-down;
Se usarmos object-fit: scale-down;
, a imagem será reduzida para a menor versão de none
ou contain
:
Exemplo 5: Usando object-fit: scale-down; |
---|
|
Aqui temos duas imagens e queremos que elas preencham 50% da largura da janela do navegador e 100% da altura. No exemplo a seguir, NÃO usamos object-fit
, então, quando redimensionamos a janela do navegador, a proporção das imagens será destruída:
No próximo exemplo, usamos object-fit: cover;
, então, quando redimensionamos a janela do navegador, a proporção das imagens é preservada:
O exemplo a seguir demonstra todos os valores possíveis da propriedade object-fit
em um único exemplo:
Exemplo 6: Todos os valores do object-fit |
---|
|
Propriedade | Descrição |
---|---|
object-fit |
Especifica como uma <img> ou <video> deve ser redimensionado para se ajustar ao seu contêiner. |
object-position |
Especifica como uma <img> ou <video> deve ser posicionado com coordenadas x/y dentro de sua "caixa de conteúdo". |
A propriedade CSS object-position
é usada para especificar como uma imagem (<img>
) ou um vídeo (<video>
) deve ser posicionado dentro de seu contêiner.
object-position
?A propriedade object-position
permite que você posicione uma imagem ou vídeo dentro de seu contêiner, usando coordenadas x
e y
. Ela funciona em conjunto com a propriedade object-fit
.
object-position
Aqui está uma imagem da Torre Eiffel em Paris. Vamos usar a propriedade object-position
para posicionar a imagem.
Este exemplo mostra a imagem com a Torre Eiffel centralizada. A coordenada 50% 50%
posiciona a imagem no centro de seu contêiner.
object-position
para Posicionar a ImagemPodemos ajustar o valor de object-position
para mover a imagem. Aqui estão alguns exemplos de como você pode usar a propriedade:
Com o valor 50% 50%
, a imagem será centralizada:
Exemplo 1: Usando object-position: 50% 50%; |
---|
|
Usando object-position: 0% 0%
, a imagem será posicionada no canto superior esquerdo:
Exemplo 2: Usando object-position: 0% 0%; |
---|
|
Com object-position: 100% 100%
, a imagem será posicionada no canto inferior direito:
Exemplo 3: Usando object-position: 100% 100%; |
---|
|
É possível também usar valores em pixels ou outras unidades de medida. Veja o exemplo abaixo onde posicionamos a imagem com 20px de margem da borda superior e 50px da borda esquerda:
Exemplo 4: Usando object-position com valores em pixels |
---|
|
Propriedade | Descrição |
---|---|
object-position |
Especifica como uma <img> ou <video> deve ser posicionado dentro de seu contêiner com base em coordenadas x/y. |
object-fit |
Especifica como uma <img> ou <video> deve ser redimensionado para caber em seu contêiner. |
Com o mascaramento CSS, você cria uma camada de máscara para colocar sobre um elemento, ocultando parcial ou totalmente partes dele.
mask-image
A propriedade mask-image
especifica a imagem da camada de máscara para um elemento. Essa imagem pode ser uma imagem PNG, SVG, gradiente CSS ou até mesmo um elemento SVG <mask>
.
O suporte a mask-image
é amplo, mas é bom verificar os números de versão dos navegadores:
Property | Chrome | Firefox | Edge | Safari |
---|---|---|---|---|
mask-image |
120 | 120 | 53 | 15.4 |
-webkit-mask-image |
15 | -webkit- | 15 | -webkit- |
Para usar uma imagem PNG ou SVG como camada de máscara, basta usar a função url()
para especificar a imagem da máscara. A imagem precisa ter áreas transparentes ou semitransparentes.
Aqui está uma imagem PNG para nossa camada de máscara:
Agora aplicamos essa imagem como máscara para a imagem de Cinque Terre:
.mask1 {
-webkit-mask-image: url(w3logo.png);
mask-image: url(w3logo.png);
mask-repeat: no-repeat;
}
Você também pode usar gradientes CSS como camadas de máscara, tanto lineares quanto radiais. Aqui está um exemplo de um gradiente linear de preto para transparente:
.mask1-gradient {
-webkit-mask-image: linear-gradient(black, transparent);
mask-image: linear-gradient(black, transparent);
}
Gradientes radiais também podem ser usados. Aqui está um exemplo de um gradiente radial em forma de círculo:
.mask2 {
-webkit-mask-image: radial-gradient(circle, black 50%, rgba(0, 0, 0, 0.5) 50%);
mask-image: radial-gradient(circle, black 50%, rgba(0, 0, 0, 0.5) 50%);
}
Além disso, você pode usar o elemento SVG <mask>
para criar camadas de máscara personalizadas.
Propriedade | Descrição |
---|---|
mask-image |
Especifica uma imagem a ser usada como camada de máscara para um elemento. |
mask-clip |
Especifica qual área é afetada pela imagem de máscara. |
mask-composite |
Define uma operação de composição para a camada de máscara com as camadas abaixo dela. |
mask-origin |
Especifica a posição de origem da imagem de máscara. |
mask-position |
Define a posição inicial da imagem de máscara dentro da área de máscara. |
mask-repeat |
Especifica como a imagem de máscara será repetida. |
mask-size |
Especifica o tamanho da imagem da máscara. |
A estilização de botões usando CSS permite criar botões personalizados e interativos. Vamos explorar as principais propriedades para criar botões de diferentes estilos.
Veja como um botão simples pode ser estilizado com CSS:
Exemplo 1: Botão Básico |
---|
|
Você pode alterar a cor de fundo de um botão usando a propriedade background-color
. Aqui estão alguns exemplos de cores:
Exemplo 2: Cores de Botões |
---|
|
Você pode alterar o tamanho do botão usando a propriedade font-size
e padding
. Veja exemplos de botões de diferentes tamanhos:
Exemplo 3: Tamanhos de Botões |
---|
|
Para adicionar cantos arredondados a um botão, use a propriedade border-radius
.
Exemplo 4: Botões Arredondados |
---|
|
Usando o seletor :hover
, podemos adicionar um efeito visual ao passar o mouse sobre o botão. Também podemos ajustar a velocidade da transição com a propriedade transition-duration
.
Exemplo 5: Hover em Botões |
---|
|
Você pode adicionar sombras aos botões usando a propriedade box-shadow
.
Exemplo 6: Botões com Sombra |
---|
|
Para criar um botão desativado, você pode usar a propriedade opacity
e cursor
para indicar que o botão não pode ser clicado.
Exemplo 7: Botão Desativado |
---|
|
Aprenda a criar uma paginação responsiva usando CSS. A paginação é muito útil para sites com muitas páginas.
Se você tem um site com muitas páginas, talvez queira adicionar algum tipo de paginação em cada página. Veja um exemplo:
Exemplo 1: Paginação Simples |
---|
|
Destaque a página atual com a classe .active
, e use o seletor :hover
para mudar a cor dos links ao passar o mouse sobre eles:
Exemplo 2: Paginação Ativa e Hoverable |
---|
|
Adicione a propriedade border-radius
se quiser botões "ativos" e "hover" arredondados:
Exemplo 3: Botões Arredondados Ativos e Hoverable |
---|
|
Adicione a propriedade transition
aos links da página para criar um efeito de transição no hover:
Exemplo 4: Efeito de Transição no Hover |
---|
|
Use a propriedade border
para adicionar bordas à paginação:
Exemplo 5: Paginação com Borda |
---|
|
Adicione bordas arredondadas ao primeiro e ao último link da paginação:
Exemplo 6: Bordas Arredondadas |
---|
|
Adicione a propriedade margin
se não quiser que os links da página fiquem agrupados:
Exemplo 7: Espaçamento Entre os Links |
---|
|
Altere o tamanho da paginação com a propriedade font-size
:
Exemplo 8: Tamanho da Paginação |
---|
|
Para centralizar a paginação, envolva um elemento de contêiner (como <div>
) com text-align: center;
:
Exemplo 9: Paginação Centralizada |
---|
|
Uma variação da paginação é chamada de "breadcrumbs" (migalhas de pão):
Exemplo 10: Breadcrumbs |
---|
|
O layout multicolunas do CSS permite a definição fácil de múltiplas colunas de texto - como em jornais.
Neste exemplo, o texto dentro do <div>
será distribuído em 3 colunas:
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
Exemplo de Código:
div {
column-count: 3;
}
column-gap
A propriedade column-gap
especifica o espaço entre as colunas. Neste exemplo, usamos um espaço de 40px entre as colunas:
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Exemplo de Código:
div {
column-count: 3;
column-gap: 40px;
}
column-rule
A propriedade column-rule
é uma propriedade abreviada para definir todas as propriedades column-rule-*
. Aqui está um exemplo de uso:
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Exemplo de Código:
div {
column-count: 3;
column-gap: 20px;
column-rule: 1px solid lightblue;
}
column-span
A propriedade column-span
permite que um elemento ocupe várias colunas. O exemplo abaixo mostra como um <h2>
pode se estender por todas as colunas:
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
Exemplo de Código:
h2 {
column-span: all;
}
column-width
A propriedade column-width
define uma largura sugerida para as colunas. No exemplo abaixo, a largura das colunas será de 100px:
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
Exemplo de Código:
div {
column-count: 3;
column-width: 100px;
}
Propriedade | Descrição |
---|---|
column-count |
Especifica o número de colunas em que um elemento deve ser dividido. |
column-gap |
Especifica o espaço entre as colunas. |
column-rule |
Propriedade abreviada para definir a largura, o estilo e a cor da linha entre as colunas. |
column-span |
Especifica quantas colunas um elemento deve abranger. |
column-width |
Especifica a largura sugerida para as colunas. |
Neste capítulo, você aprenderá sobre as seguintes propriedades da interface de usuário CSS:
A propriedade resize
especifica se (e como) um elemento deve ser redimensionável pelo usuário.
Este elemento div
pode ser redimensionado pelo usuário!
Para redimensionar: clique e arraste o canto inferior direito deste elemento div
.
Exemplo 1: Redimensionando apenas a largura |
---|
|
Exemplo 2: Redimensionando apenas a altura |
---|
|
Exemplo 3: Redimensionando altura e largura |
---|
|
Em muitos navegadores, o <textarea>
é redimensionável por padrão. Aqui, usamos a propriedade resize
para desabilitar a redimensionabilidade:
Exemplo 4: Desabilitando o redimensionamento |
---|
|
A propriedade outline-offset
adiciona espaço entre um contorno e a borda ou limite de um elemento.
Esta div
tem um contorno de 15px fora da borda.
Nota: Outline
é diferente de border
! Diferentemente de border
, o outline
é desenhado fora da borda do elemento e pode sobrepor outro conteúdo. Além disso, o outline
NÃO é parte das dimensões do elemento; a largura e altura totais do elemento não são afetadas pela largura do outline
.
outline-offset
Exemplo 5: Usando outline-offset |
---|
|
Propriedade | Descrição |
---|---|
outline-offset |
Adiciona espaço entre um contorno e a borda ou limite de um elemento |
resize |
Especifica se um elemento é redimensionável pelo usuário |
As variáveis CSS permitem armazenar valores reutilizáveis para propriedades CSS, facilitando a manutenção do código. A função var()
é usada para inserir o valor de uma variável CSS.
Variáveis CSS permitem a criação de valores que podem ser reutilizados em vários pontos do código. Elas podem ser globais ou locais, dependendo de onde são declaradas.
Uma variável CSS é criada com a sintaxe --nome-da-variavel
, e seu valor é inserido com a função var(--nome-da-variavel)
.
Antes das variáveis CSS, você definiria valores repetidamente no código, como neste exemplo:
|
|
|
|
Para usar a função var()
, primeiro você deve declarar as variáveis. Para uma variável global, declare-a no seletor :root
. Para uma variável local, declare-a dentro de um seletor específico.
|
|
|
|
|
Usando variáveis, fica muito fácil alterar cores e outros valores de forma centralizada. Por exemplo, você pode mudar os valores das variáveis para atualizar todas as instâncias automaticamente.
|
|
|
|
|
Agora, vamos criar um exemplo em que a cor do texto será alterada ao clicar em um botão usando variáveis CSS e JavaScript:
Este é um exemplo de texto que pode mudar de cor.
Código HTML:
|
Código JavaScript:
|
Agora, vamos criar um exemplo em que o tamanho do texto pode ser alterado ao clicar em um botão usando variáveis CSS e JavaScript:
Este é um texto cujo tamanho pode ser alterado.
Código HTML:
|
Código JavaScript:
|
Propriedade | Descrição |
---|---|
var() |
Insere o valor de uma variável CSS no código. |
--nome-da-variavel |
Declara uma variável CSS, com nome iniciando com dois traços (-- ). |
Na página anterior, aprendemos que variáveis globais podem ser acessadas em todo o documento, enquanto variáveis locais podem ser usadas somente dentro do seletor onde são declaradas.
Suponha que queremos uma cor diferente para os elementos de botão. Podemos redefinir a variável global --blue
dentro do seletor de botão. Quando usamos var(--blue)
dentro deste seletor, ele usará o valor da variável local.
Código CSS |
---|
|
Se uma variável for usada apenas em um único lugar, podemos declarar uma nova variável local diretamente no seletor em que ela será utilizada.
Código CSS |
---|
|
Função | Descrição |
---|---|
var() |
Insere o valor de uma variável CSS no código. |
As variáveis CSS têm acesso ao DOM, o que significa que você pode alterá-las com JavaScript.
Com JavaScript, podemos acessar e modificar variáveis CSS. Aqui está um exemplo de como você pode criar um script para exibir e alterar a variável --blue
, que foi usada nos exemplos anteriores.
Se você não estiver familiarizado com JavaScript, você pode aprender mais sobre ele em nosso Tutorial de JavaScript.
Código HTML e JavaScript |
---|
|
Função | Descrição |
---|---|
var() |
Insere o valor de uma variável CSS no código. |
Agora queremos alterar um valor de variável dentro de uma consulta de mídia. Media Queries são usadas para definir regras de estilo diferentes para dispositivos com características diferentes (como telas, tablets, celulares, etc.).
Você pode aprender mais sobre Media Queries em nosso Capítulo sobre Media Queries.
Primeiro, declaramos uma variável local chamada --fontsize
para a classe .container
, com valor inicial de 25px. Usamos essa variável na classe .container
. Em seguida, criamos uma regra @media
que altera o valor de --fontsize
para 50px quando a largura da tela for 450px ou mais larga.
Código CSS |
---|
|
Este exemplo também altera o valor da variável --blue
na consulta de mídia. Quando a largura da tela for maior que 450px, a cor de fundo e a cor do texto da .container
mudam.
Código CSS |
---|
|
Experimente redimensionar a janela do navegador. O tamanho da fonte na #capitulo90 .container
vai mudar quando a largura da tela atingir 450px ou mais.
O tamanho da fonte mudará dependendo da largura da janela.
Experimente redimensionar a janela do navegador novamente. A cor de fundo da #capitulo90 .container
será alterada para "lightblue" quando a largura for maior que 450px.
A cor de fundo vai mudar dependendo da largura da janela.
Função | Descrição |
---|---|
var() |
Insere o valor de uma variável CSS no código. |
A regra @property
é usada para definir propriedades CSS personalizadas diretamente na folha de estilo, sem precisar usar JavaScript.
A @property
possui verificação e restrição de tipo de dados, define valores padrão e estabelece se a propriedade pode herdar valores ou não.
O exemplo a seguir define uma propriedade personalizada chamada --myColor
com o tipo <color>
, permite que ela herde valores de elementos pais e define o valor inicial como lightgray
.
Código CSS |
---|
|
Para usar a propriedade personalizada em CSS, usamos a função var()
:
Código CSS |
---|
|
@property
<número>
, <cor>
, <comprimento>
, etc. Isso evita erros e garante que as propriedades sejam usadas corretamente.@property
Este exemplo define duas propriedades personalizadas: --my-bg-color
e --my-txt-color
, e as utiliza em um div
:
Código CSS |
---|
|
@property
No exemplo a seguir, a propriedade personalizada é utilizada no elemento div
. Em seguida, substituímos a propriedade personalizada nas classes .fresh
e .nature
com outras cores, e funciona perfeitamente:
Código CSS |
---|
|
No exemplo abaixo, tentamos definir a propriedade personalizada na classe .nature
com um valor inválido (um número inteiro). O navegador usará a cor de fallback, definida como lightgray
:
Código CSS |
---|
|
Quando definimos a propriedade personalizada com inherits: false
, ela não herdará valores dos elementos pais, como mostrado no exemplo a seguir:
Código CSS |
---|
|
Agora, se definirmos a propriedade com inherits: true
, ela herdará valores de seus elementos pais:
Código CSS |
---|
|
@property
Uma oportunidade incrível que você pode alcançar com a regra @property
é animar algo que não podia ser animado antes: gradientes. O exemplo a seguir mostra como fazer isso:
Código CSS |
---|
|
Função | Descrição |
---|---|
var() |
Insere o valor de uma variável CSS no código. |
A propriedade box-sizing
no CSS nos permite incluir o preenchimento e a borda na largura e altura totais de um elemento.
box-sizing
Por padrão, a largura e a altura de um elemento são calculadas da seguinte forma:
Isso significa que, ao definir a largura e a altura de um elemento, ele geralmente parece maior do que você especificou, pois a borda e o preenchimento são somados à largura/altura definida.
box-sizing
Veja abaixo dois elementos <div>
com a mesma largura e altura especificadas, mas com resultados diferentes devido ao preenchimento na .div2
:
Código CSS |
---|
|
box-sizing
A propriedade box-sizing
resolve esse problema, permitindo que o preenchimento e a borda sejam incluídos na largura e altura totais de um elemento. Ao definir box-sizing: border-box;
, o preenchimento e a borda são computados dentro da largura e altura especificadas.
box-sizing: border-box;
Abaixo, mostramos o mesmo exemplo de antes, mas agora com a propriedade box-sizing: border-box;
aplicada a ambos os elementos <div>
. Agora, ambos os elementos têm o mesmo tamanho:
Código CSS |
---|
|
Como o resultado do uso de box-sizing: border-box;
é muito mais intuitivo, muitos desenvolvedores optam por aplicar essa propriedade a todos os elementos de suas páginas.
O código abaixo garante que todos os elementos na página usem box-sizing: border-box;
:
Código CSS |
---|
|
Propriedade | Descrição |
---|---|
box-sizing |
Define como a largura e a altura de um elemento são calculadas: se devem incluir o preenchimento e as bordas ou não. |
Você pode testar a diferença entre os exemplos abaixo. Em um deles, a propriedade box-sizing
é aplicada, e no outro não. Veja como o preenchimento e a borda afetam o tamanho total do elemento.
A regra @media
, introduzida no CSS2, tornou possível definir diferentes regras de estilo para diferentes tipos de mídia.
No CSS3, as consultas de mídia foram ampliadas para verificar a capacidade do dispositivo, em vez de simplesmente buscar um tipo de dispositivo. Isso permite que você defina estilos específicos com base em características como a largura da janela de visualização, a orientação do dispositivo e a resolução.
Valor | Descrição |
---|---|
all |
Usado para todos os tipos de dispositivos de mídia |
print |
Usado para a visualização de impressão |
screen |
Usado para telas de computador, tablets, smartphones, etc. |
Valor | Descrição |
---|---|
orientation |
Orientação da janela de visualização. Paisagem ou retrato |
max-height |
Altura máxima da janela de visualização |
min-height |
Altura mínima da janela de visualização |
height |
Altura da janela de visualização (incluindo a barra de rolagem) |
max-width |
Largura máxima da janela de visualização |
min-width |
Largura mínima da janela de visualização |
width |
Largura da janela de visualização (incluindo a barra de rolagem) |
A sintaxe de uma consulta de mídia consiste em um tipo de mídia e um ou mais recursos de mídia. Eles são resolvidos como verdadeiro ou falso.
@media not|only mediatype and (media feature) and (media feature) {
CSS-Code;
}
mediatype é opcional (se omitido, será considerado como all
). No entanto, se você usar not
ou only
, deve também especificar um mediatype
.
O resultado da consulta será true se o tipo de mídia especificado corresponder ao dispositivo e todos os recursos de mídia forem verdadeiros.
Palavra-chave | Descrição |
---|---|
not |
Inverte o significado de uma consulta de mídia inteira. |
only |
Impedirá que navegadores antigos que não suportam consultas de mídia apliquem os estilos especificados. |
and |
Combina um tipo de mídia com um ou mais recursos de mídia. |
Uma maneira simples de usar consultas de mídia é ter uma seção CSS alternativa dentro da folha de estilo. Aqui está um exemplo:
Este exemplo altera a cor de fundo para verde claro se a largura da janela de visualização for de 480px ou mais. Se for menor que 480px, a cor de fundo será rosa:
Código CSS |
---|
|
O exemplo a seguir mostra um menu que flutuará à esquerda da página se a janela de visualização tiver 480px de largura ou mais. Caso contrário, o menu ficará sobre o conteúdo:
Código CSS |
---|
|
Consultas de mídia CSS são uma técnica popular para entregar uma folha de estilo personalizada para diferentes dispositivos. Vamos explorar alguns exemplos práticos de como usá-las.
Vamos definir a cor de fundo de um site para diferentes dispositivos com base na largura da janela de visualização:
Cor de fundo padrão |
|
Cor de fundo para telas de até 992px |
|
Cor de fundo para telas de até 600px |
|
Por que usamos exatamente 992px e 600px? Esses valores são conhecidos como "pontos de interrupção típicos" usados para dispositivos.
Agora, vamos criar um menu de navegação responsivo, que se adapta a diferentes tamanhos de tela:
Estilo básico para o navbar |
|
Links do navbar |
|
Links empilhados em telas pequenas |
|
Aqui, criamos um layout de colunas que se adapta de acordo com o tamanho da tela:
Layout de quatro colunas |
|
Alterar para duas colunas em telas menores |
|
Empilhar colunas em telas muito pequenas |
|
Agora vamos usar o Flexbox para criar um layout de colunas responsivo:
Contêiner para os flexboxes |
|
Criar quatro colunas |
|
Alterar para duas colunas em telas pequenas |
|
Empilhar as colunas em telas menores |
|
Consultas de mídia também podem ser usadas para ocultar elementos em diferentes tamanhos de tela. Veja o exemplo:
Ocultar elemento em telas pequenas |
|
Você pode usar consultas de mídia para alterar o tamanho da fonte de um elemento em diferentes tamanhos de tela:
Alterar tamanho da fonte para telas maiores |
|
Alterar tamanho da fonte para telas menores |
|
Aqui usamos consultas de mídia com Flexbox para criar uma galeria de imagens responsiva.
Você pode alterar o layout de uma página dependendo da orientação do dispositivo (retrato ou paisagem):
Cor de fundo azul claro para orientação paisagem |
|
Usando a combinação de max-width
e min-width
, você pode definir estilos específicos para uma faixa de largura de tela:
Estilo para uma faixa de largura |
|
Você pode adicionar múltiplas consultas de mídia, separando-as por vírgulas:
Usar múltiplas consultas de mídia |
|
A janela de visualização, conhecida como viewport, é a área visível de uma página da web no dispositivo do usuário. Ela varia de tamanho dependendo do dispositivo, sendo geralmente menor em celulares e maior em telas de computadores.
Definição | A área visível de uma página da web para o usuário. |
Variedade | Muda de tamanho conforme o dispositivo (celulares, tablets, computadores). |
Problema Inicial | Páginas com designs estáticos não se ajustavam bem a dispositivos móveis, causando necessidade de redimensionamento. |
Com o HTML5, os web designers podem controlar a viewport utilizando a tag <meta>
. Isso é feito incluindo o seguinte elemento na seção <head>
da página:
|
Instrução para ajustar largura e escala inicial. |
Propriedade | Descrição |
---|---|
width=device-width |
Define a largura da página para coincidir com a largura da tela do dispositivo. |
initial-scale=1.0 |
Define o nível de zoom inicial ao carregar a página. |
A seguir, uma demonstração de como a tag viewport afeta o design da página:
|
Para evitar problemas com a viewport, siga estas boas práticas:
Regra | Descrição |
---|---|
Evitar elementos grandes de largura fixa | Imagens ou elementos muito largos podem causar rolagem horizontal. |
Evitar dependência de larguras específicas | O design deve ser adaptável a diferentes dimensões de tela. |
Usar consultas de mídia CSS | Permite aplicar estilos específicos para diferentes tamanhos de tela. |
As consultas de mídia permitem ajustar o design para diferentes tamanhos de viewport:
|
Altera a cor de fundo para azul claro em dispositivos com largura menor ou igual a 768px. |
Configurar corretamente a viewport é essencial para criar páginas responsivas que ofereçam uma boa experiência ao usuário. Usar a tag <meta>
e consultas de mídia ajuda a garantir que o conteúdo se ajuste adequadamente em qualquer dispositivo.