Emmet: Fundamentos de Atalhos CSS
Nas primeiras 10 lições, você aprendeu todas as abreviaturas HTML de Emmet – gerando estruturas complexas a partir de abreviações de linha única. Mas HTML é apenas o esqueleto de uma página; o que realmente determina o visual é CSS. Esta lição estende os recursos do Emmet de HTML para CSS: o contexto CSS infere automaticamente nomes de propriedades a partir de suas primeiras letras, adiciona automaticamente unidades
px, usa hífens para separar vários valores e usa#para cores - permitindo que você escrevamargin: 10px 20px;,font-size: 16px;,color: #ffcc00;e outras propriedades de alta frequência em uma linha abreviada.
1. O Que Você Vai Aprender
- As diferenças principais entre contexto CSS e contexto HTML: a mesma abreviação expande de forma completamente diferente
- Propriedades numéricas adicionam
pxautomaticamente:m10→margin: 10px;,p10→padding: 10px; - Sintaxe de unidade explícita:
m10%→margin: 10%;,m10em→margin: 10em; - Atalho de múltiplos valores com hífen:
m10-20→margin: 10px 20px;,p10-20-30→ atalho de 3 valores - Atalho de cor:
c#fc0→color: #ffcc00;,bd1-s#ccc→border: 1px solid #ccc; - Sufixo
!força!important:m10!→margin: 10px !important;
2. A História Real de Uma Desenvolvedora Front-End
(1) Ponto de Dor: CSS é Muito Lento para Escrever; Propriedades Repetitivas Fazem Suas Mãos Doerem
Alice estava reestilizando uma landing page de e-commerce. Ela precisava escrever margin: 10px 20px;, padding: 16px;, font-size: 14px;, color: #333;, background-color: #f5f5f5; e outros estilos básicos para 6 cartões. Cada regra exigia digitar o nome completo da propriedade, dois pontos, valor e ponto e vírgula — uma média de 18 caracteres por propriedade. Pelas contas dela: 30 regras para escrever, totalizando 540 pressionamentos de tecla + 30 pressionamentos de Tab para alternar entre valores de propriedade. Levou 8 minutos inteiros. Pior: no meio do caminho, ela acidentalmente digitou colour (ortografia britânica) e passou 5 minutos depurando por que o CSS não funcionava. Alice pensou: atalhos CSS são claramente muito comuns — por que não podem funcionar como HTML, onde "algumas letras + Tab" expandem automaticamente?
(2) Como os Atalhos CSS do Emmet Resolvem Isso
Os atalhos CSS do Emmet usam as primeiras letras dos nomes das propriedades CSS como abreviações, permitindo que Alice escreva uma linha de atalho que equivale a uma propriedade completa. Existem 4 mecanismos principais:
- Inferência de unidade: Inteiros adicionam
pxautomaticamente (m10→margin: 10px;), floats adicionamemautomaticamente (m1.5→margin: 1.5em;). - Unidades explícitas: Adicione um caractere de unidade diretamente após um número:
m10%→margin: 10%;,m10em→margin: 10em;. - Hífens para múltiplos valores: Use
-para separar múltiplos valores:m10-20→margin: 10px 20px;,p10-20-30→padding: 10px 20px 30px;. - Separador de cor
#:c#fc0→color: #ffcc00;,bd1-s#ccc→border: 1px solid #ccc;.
Alice reescreveu aqueles 8 minutos de trabalho CSS como atalhos Emmet:
.m10-20+p16+fz14+c#333+bgc#f5f5f5
Uma linha, 32 caracteres, 6 pressionamentos de Tab (cada atalho expande independentemente), e os estilos de 6 cartões foram feitos em 12 segundos. 8 minutos de trabalho reduzidos para 12 segundos — um aumento de velocidade de 40x.
(3) Benefícios
Os atalhos CSS são o segundo degrau da escada do Emmet para autoria de estilos. Uma vez dominados, a velocidade de escrita de estilos de Alice aumenta de 30 a 50 vezes, e as taxas de erro (erros de ortografia, ponto e vírgula faltando) caem para quase zero. Os 6 mecanismos principais desta aula cobrem 90% da autoria diária de CSS. Após esta aula, Alice consegue escrever o CSS de uma landing page em menos de 15 segundos — antes eram 8 minutos.
3. Definição Principal dos Atalhos CSS
Atalhos CSS são o mecanismo de compressão nome da propriedade + valor + unidade três em um que o Emmet fornece em contextos de arquivo CSS (.css, .scss, .less). Sua filosofia de design: usar as primeiras letras dos nomes das propriedades CSS como abreviações, para que "algumas letras + valor + Tab" expandam automaticamente em uma propriedade completa.
graph LR
A[Atalhos CSS do Emmet] --> B[Inferência de Nome de Propriedade]
A --> C[Inferência de Unidade]
A --> D[Separadores de Valor]
A --> E[Sufixo !]
B --> B1[m → margin]
B --> B2[p → padding]
B --> B3[fz → font-size]
B --> B4[lh → line-height]
C --> C1[Inteiro → px]
C --> C2[Float → em]
C --> C3[Unidade explícita → % / em / ex]
C --> C4[Aliases de unidade p/e/x]
D --> D1[Hífen - múltiplos valores]
D --> D2[Separador de cor #]
D --> D3[Alias de caractere s=solid]
E --> E1[! → !important]
style A fill:#3b82f6,color:#fff
style B fill:#10b981,color:#fff
style C fill:#f59e0b,color:#fff
style D fill:#8b5cf6,color:#fff
style E fill:#ef4444,color:#fff
Dica: Os atalhos CSS do Emmet só têm efeito em contextos CSS (arquivos
.css,.scss,.less). Em um arquivo HTML, escreverm10expande para<div class="m10"></div>(uma tag div com classem10) — completamente diferente do contexto CSS. A diferença entre os dois contextos é a armadilha mais comum para iniciantes.
(1) Diferenças Principais Entre Contexto CSS e Contexto HTML
| Contexto | Abreviação | Expansão | Mecanismo |
|---|---|---|---|
| HTML | m10 |
<div class="m10"></div> |
Nome de tag implícito = div, class = m10 |
| CSS | m10 |
margin: 10px; |
Inferência de propriedade m = margin, valor 10 adiciona px automaticamente |
| HTML | p10 |
<p class="p10"></p> |
Tag p, class = p10 |
| CSS | p10 |
padding: 10px; |
Inferência de propriedade p = padding, valor 10 adiciona px automaticamente |
| HTML | .fz16 |
<div class="fz16"></div> |
div implícito, class = fz16 |
| CSS | fz16 |
font-size: 16px; |
Inferência de propriedade fz = font-size, valor 16 adiciona px automaticamente |
4. Inferência de Unidade: Automática + Explícita + Aliases
A inferência de unidade é o primeiro mecanismo principal dos atalhos CSS. Quando o Emmet vê um número, ele adiciona automaticamente uma unidade de acordo com a regra "inteiro → px, float → em", ou você pode escrever o caractere da unidade explicitamente.
(1) Propriedades Numéricas Adicionam px Automaticamente
Abreviações CSS com valores inteiros adicionam automaticamente a unidade px. Esta é a forma de expansão de maior frequência dos atalhos CSS do Emmet.
| Abreviação | Expansão | Caso de Uso |
|---|---|---|
m10 |
margin: 10px; |
Margem de 10 pixels |
p10 |
padding: 10px; |
Padding de 10 pixels |
w100 |
width: 100px; |
Largura de 100 pixels |
h200 |
height: 200px; |
Altura de 200 pixels |
fz16 |
font-size: 16px; |
Tamanho de fonte de 16 pixels |
bd1 |
border: 1px; |
Borda de 1 pixel |
Ponto Chave: Inteiros adicionando
pxautomaticamente é o comportamento padrão do Emmet. A maioria dos cenários de dimensão CSS (margin, padding, width, height, font-size) usapx, então o padrãopxelimina 70% da digitação de unidades.
(2) Unidades Explícitas: m10% m10em m10ex
Se você precisar de uma unidade diferente de px, basta adicionar o caractere da unidade após o número. O Emmet gera o nome da unidade literalmente.
| Abreviação | Expansão | Caso de Uso |
|---|---|---|
m10% |
margin: 10%; |
Margem de 10% (relativa à largura do pai) |
p50% |
padding: 50%; |
Padding de 50% |
w50% |
width: 50%; |
Largura de 50% |
fz1.5em |
font-size: 1.5em; |
Tamanho de fonte de 1.5em (relativo ao tamanho da fonte do pai) |
lh1.5ex |
line-height: 1.5ex; |
Altura de linha de 1.5ex (relativo à altura do x minúsculo) |
m10rem |
margin: 10rem; |
Margem de 10rem (relativo ao tamanho da fonte raiz) |
(3) Aliases de Unidade: p e x
O Emmet fornece 3 aliases de unidade para encurtar nomes de unidade longos:
| Alias | Unidade Completa | Exemplo |
|---|---|---|
p |
% |
w100p → width: 100% |
e |
em |
m10e → margin: 10em |
x |
ex |
m10x → margin: 10ex |
Aliases podem ser empilhados: m10p30e5x → margin: 10% 30em 5ex.
Nota: Aliases só têm efeito quando estão diretamente adjacentes a números. Em
m10px, opé o caractere do meio depx(não um alias), porquepnão é o caractere inicial de uma unidade. O Emmet analisam10pxcomomargin: 10px;(px é uma unidade explícita). O aliaspsó se aplica quando o número é imediatamente seguido porpcomo um token independente (ex.:w100p).
5. Atalho de Múltiplos Valores: Separador de Hífen - + Separador de Cor #
Os atalhos CSS suportam múltiplos valores, separados por hífens -. O Emmet também fornece o separador # para valores de cor (já que # é o caractere inicial para valores de cor).
(1) Tabela de Regras de Atalho de Múltiplos Valores
| Abreviação | Expansão | Observações |
|---|---|---|
m10 |
margin: 10px; |
Valor único |
m10-20 |
margin: 10px 20px; |
2 valores (superior-inferior / esquerda-direita) |
m10-20-30 |
margin: 10px 20px 30px; |
3 valores (superior / esquerda-direita / inferior) |
m10-20-30-40 |
margin: 10px 20px 30px 40px; |
4 valores (superior / direita / inferior / esquerda) |
p10-20 |
padding: 10px 20px; |
padding 2 valores |
p10-20-30 |
padding: 10px 20px 30px; |
padding 3 valores |
bdrs5 |
border-radius: 5px; |
Valor único de border-radius |
bdrs5-10 |
border-radius: 5px 10px; |
border-radius 2 valores (superior-esquerdo-inferior-direito / superior-direito-inferior-esquerdo) |
Ponto Chave: A expansão de múltiplos valores segue o padrão CSS — 1 valor = todos os lados, 2 valores = superior-inferior + esquerda-direita, 3 valores = superior + esquerda-direita + inferior, 4 valores = superior + direita + inferior + esquerda. Isso é totalmente consistente com propriedades CSS de múltiplos valores como
margin,padding,border-radiuseborder-width.
(2) Múltiplos Valores com Unidade Explícita Podem Omitir Hífens
Se cada valor tiver uma unidade explícita (não o px/em padrão), o Emmet permite omitir os hífens e concatenar diretamente:
| Abreviação | Expansão | Observações |
|---|---|---|
m10ex20em |
margin: 10ex 20em; |
Unidades explícitas permitem omitir hífens |
m10em-5 |
margin: 10em -5px; |
Misto explícito + px padrão |
m10p30e5x |
margin: 10% 30em 5ex; |
Três unidades diferentes concatenadas |
Dica: Quando uma abreviação contém
#(cor) ou unidades explícitas, o Emmet reconhece inteligentemente os limites dos valores sem precisar de hífens. Isso permite que abreviações de valores mistos comobd5#0s(→border: 5px #000 solid) funcionem perfeitamente.
(3) Atalho de Cor: Separador #
Cor é um dos valores de maior frequência em CSS. O Emmet usa # como o caractere inicial de cor; o próprio # atua como separador de valor, então nenhum hífen é necessário.
| Abreviação | Expansão | Caso de Uso |
|---|---|---|
c#f |
color: #ffffff; |
Cor de 1 caractere expande automaticamente para 6 caracteres |
c#fc0 |
color: #ffcc00; |
Cor de 3 caracteres expande automaticamente para 6 caracteres |
c#e0e0e0 |
color: #e0e0e0; |
Cor de 6 caracteres mantida como está |
bgc#333 |
background-color: #333333; |
Cor de fundo 3 caracteres → 6 caracteres |
bd1-s#ccc |
border: 1px solid #ccc; |
Atalho de borda: largura + estilo + cor |
bd5#0s |
border: 5px #000 solid; |
Ordem mista de borda (# separa automaticamente) |
Ponto Chave: O Emmet simplifica automaticamente as cores —
#1expande automaticamente para#111111,#e0expande automaticamente para#e0e0e0,#fc0expande automaticamente para#ffcc00. Se você escrever uma cor completa de 6 caracteres (ex.:#e0e0e0), o Emmet a deixa inalterada. Este comportamento é controlado pela configuraçãocss.color.short(ativada por padrão).
(4) ! Força !important
Adicione ! no final de uma abreviação CSS e o Emmet adiciona automaticamente o sufixo !important. Esta é uma ferramenta essencial para sobrescrever estilos de terceiros e hacks de depuração.
| Abreviação | Expansão | Caso de Uso |
|---|---|---|
m10! |
margin: 10px !important; |
Forçar prioridade de margem |
p10! |
padding: 10px !important; |
Forçar prioridade de padding |
fz16! |
font-size: 16px !important; |
Forçar prioridade de tamanho de fonte |
c#333! |
color: #333333 !important; |
Forçar prioridade de cor |
Nota:
!deve ser colocado imediatamente no final da abreviação, sem espaço ou separador precedente.m10 !é inválido (o Emmet tratam10como uma abreviação completa e!como conteúdo na próxima linha). Para adicionar!importanta uma abreviação de múltiplos valores, ainda coloque!no final:m10-20!→margin: 10px 20px !important;.
6. Exemplo Abrangente: Estilização de Cartão — 7 Propriedades em Uma Linha
Combine inferência de unidade, atalho de múltiplos valores, cores e sobrescrita ! para escrever um estilo completo de cartão de e-commerce.
▶ Exemplo: Atalho Numérico Básico m10 p10 fz16 (Dificuldade: ★)
Três das propriedades numéricas mais usadas — provando que os atalhos CSS do Emmet realmente economizam metade dos seus pressionamentos de tecla.
Abreviação:
m10 p10 fz16
Expansão:
margin: 10px;
padding: 10px;
font-size: 16px;
Saída:
TEXT 📖 Somente leituraExplicação: Três abreviações independentes, cada uma expandindo separadamente. Em `m10`, `m` é a primeira letra de margin, 10 é o valor e o Emmet adiciona px automaticamente → `margin: 10px;`. `p10` funciona da mesma forma → `padding: 10px;`. Em `fz16`, `fz` é o alias para font-size (f + z tirados das primeiras letras de "font" e "size"), e 16 adiciona px automaticamente → `font-size: 16px;`. Os atalhos CSS do Emmet são essencialmente uma notação comprimida de "primeiras letras da propriedade + valor".
▶ Exemplo: Unidades Explícitas m10% c#f (Dificuldade: ★)
Unidade % explícita e expansão automática de cor de 1 caractere — demonstrando a flexibilidade da inferência de unidade.
Abreviação:
m10% c#f
Expansão:
margin: 10%;
color: #ffffff;
Saída:
TEXT 📖 Somente leituraExplicação: Em `m10%`, `m` é margin, 10 é o valor e `%` é o caractere de unidade explícita (adjacente ao número); o Emmet o gera literalmente → `margin: 10%;`. Em `c#f`, `c` é color e `#f` é o valor da cor. Vendo uma cor de 1 caractere, o Emmet a expande automaticamente para `#ffffff` conforme a configuração `css.color.short` (cada caractere repetido 6 vezes). Se a configuração estiver desativada, a saída permanece como `#f` — a maioria dos navegadores modernos também suporta cores de 3 e 1 caractere, mas 6 caracteres oferece a melhor compatibilidade.
▶ Exemplo: Atalho de Múltiplos Valores m10-20 p10-20-30 bdrs5 (Dificuldade: ★★)
Atalho de múltiplos valores com hífen — demonstrando que formas de 2 valores, 3 valores e valor único podem ser escritas em uma linha.
Abreviação:
m10-20 p10-20-30 bdrs5
Expansão:
margin: 10px 20px;
padding: 10px 20px 30px;
border-radius: 5px;
Saída:
TEXT 📖 Somente leituraExplicação: `m10-20` usa um hífen para separar 2 valores (10 e 20), ambos adicionando px automaticamente → `margin: 10px 20px;` (semântica padrão CSS: superior-inferior 10px, esquerda-direita 20px). `p10-20-30` usa hífens para separar 3 valores → `padding: 10px 20px 30px;` (superior, esquerda-direita, inferior). Em `bdrs5`, `bdrs` é o alias para border-radius (tirado das primeiras letras de border + radius), e 5 adiciona px automaticamente → `border-radius: 5px;`. As três abreviações mostram o conjunto completo de regras para atalho CSS de múltiplos valores.
▶ Exemplo: Atalho de Cor c#fc0 bgc#f5f5f5 bd1-s#ccc (Dificuldade: ★★)
Atalho de cor + borda — demonstrando que # como separador de valor faz abreviações de valores mistos funcionarem perfeitamente.
Abreviação:
c#fc0 bgc#f5f5f5 bd1-s#ccc
Expansão:
color: #ffcc00;
background-color: #f5f5f5;
border: 1px solid #ccc;
Saída:
TEXT 📖 Somente leituraExplicação: Em `c#fc0`, `#` é o caractere inicial de cor; o Emmet vê `#` e reconhece automaticamente o limite do valor da cor. `fc0` é uma cor hex de 3 caracteres, e o Emmet a expande automaticamente para `#ffcc00` conforme `css.color.short` (cada caractere duplicado). Em `bgc#f5f5f5`, `bgc` é o alias para background-color, e `#f5f5f5` já é uma cor de 6 caracteres — o Emmet a deixa inalterada. `bd1-s#ccc` é uma abreviação mista clássica: `bd` = border, `1` = 1px (adiciona px automaticamente), `-s` = solid (`s` é o alias para solid), `#ccc` = cor da borda. Os três segmentos se concatenam perfeitamente em `border: 1px solid #ccc;`. Esta abreviação de "largura + estilo + cor" é o atalho CSS de borda de maior frequência.
▶ Exemplo: Flag ! Important m10! fz16! (Dificuldade: ★)
! força !important — demonstrando que adicionar ! ao final de uma abreviação Emmet é a forma padrão de sobrescrever estilos.
Abreviação:
m10! fz16!
Expansão:
margin: 10px !important;
font-size: 16px !important;
Saída:
TEXT 📖 Somente leituraExplicação: `!` é o sufixo "flag important" dos atalhos CSS do Emmet. Ele força `!important;` a ser adicionado no final do resultado da expansão. O `!` no final de `m10!` transforma `margin: 10px;` em `margin: 10px !important;` — em CSS, `!important` sobrescreve qualquer regra de prioridade normal e é comumente usado para sobrescrita de estilos de terceiros e hacks de depuração. Note que `!` deve estar imediatamente adjacente ao final da abreviação (sem espaços). Para sobrescrever abreviações de múltiplos valores como `m10-20`, ainda coloque `!` no final: `m10-20!` → `margin: 10px 20px !important;`.
7. Exemplo Completo: Cartão de E-Commerce — 7 Propriedades em Uma Linha
Combine inferência de unidade, múltiplos valores, cores e ! para escrever um estilo completo de cartão de e-commerce.
▶ Exemplo: Estilo Completo de Cartão de E-Commerce (Dificuldade: ★★)
Abreviação:
m10-20 p16 bdrs8 bgc#f5f5f5 c#333 fz14 bd1-s#e0e0e0
Expansão:
margin: 10px 20px;
padding: 16px;
border-radius: 8px;
background-color: #f5f5f5;
color: #333333;
font-size: 14px;
border: 1px solid #e0e0e0;
Saída:
TEXT 📖 Somente leituraExplicação: Sete abreviações independentes escritas em uma linha, cobrindo todas as dimensões do estilo de um cartão — `m10-20` margem superior-inferior 10, esquerda-direita 20; `p16` padding todos os lados 16; `bdrs8` border-radius 8 pixels; `bgc#f5f5f5` fundo cinza claro; `c#333` texto cinza escuro (`#333` expande automaticamente para `#333333`); `fz14` font-size 14 pixels; `bd1-s#e0e0e0` borda 1px sólida cinza claro. Todo o atalho tem 49 caracteres, expandindo para 7 linhas de CSS completo. Escrever à mão exigiria 7 linhas × média de 18 caracteres = 126 caracteres + 7 Tabs + 7 verificações de ponto e vírgula; agora são 49 caracteres em 1 linha. Os atalhos CSS do Emmet reduzem o "volume de pressionamentos de tecla" em 60%. Cada mecanismo abordado nesta aula — inferência de unidade, múltiplos valores, cores, valores mistos — é aplicado nesta única linha.
❓ Perguntas Frequentes
P: Os atalhos CSS do Emmet podem ser usados em todos os arquivos CSS? Precisa de configuração? R: Funciona imediatamente. Editores populares como VSCode, WebStorm e Sublime Text possuem plugins Emmet com suporte a atalhos CSS ativado por padrão. Arquivos
.css,.scss,.less,.style outros arquivos de estilo são todos suportados automaticamente. A única exceção é CSS-in-JS (ex.:style={{ ... }}escrito em arquivos JS), que depende da configuração do editor.
P: Qual é a regra para floats adicionarem em automaticamente?
lh1.5realmente expande para em? R: Sim. A regra de inferência de unidade do Emmet: inteiros adicionampxautomaticamente, floats adicionamemautomaticamente. Emlh1.5,lhé o alias para line-height e 1.5 é um float →line-height: 1.5em;. No entanto,line-heighté uma propriedade sem unidade (a recomendação oficial é omitir unidades, ex.:line-height: 1.5;). A regra float + em do Emmet é um antipadrão aqui. A correção é sobrescrever com uma unidade explícita:lh1.5-não é viável (o hífen seria interpretado como separador de múltiplos valores). A abordagem correta para "line-height sem unidade" é escreverlh1.5e depois excluir manualmenteem, ou usar uma técnica mais avançada (número seguido por+para forçar sem unidade, não abordada nesta aula).
P: O atalho de cor
#fexpande automaticamente para#ffffff, mas e se eu quiser#ff00ff(magenta)? R: Use uma abreviação de cor completa de 3 ou 6 caracteres. A expansão automática do Emmet só se aplica a cores de 1 e 3 caracteres — 1 caractere repete 6 vezes (#f→#ffffff), 3 caracteres cada um repete 2 vezes (#fc0→#ffcc00). Para especificar magenta precisamente, escrevac#f0f(3 caracteres →#ff00ff) ouc#ff00ff(6 caracteres). Nota: o atalho de 3 caracteres#f0fduplica cada caractere, entãof→ff,0→00,f→ff, resultando em#ff00ff— exatamente o que você quer.
P: O
!no atalho CSS é o mesmo que o!no contexto HTML? R: Não. No contexto CSS,!é o sufixo!important(adicione!no final de uma abreviação CSS). No contexto HTML,!é o prefixo do seletor de pseudo-classe de negação (embora abreviações HTML raramente usem!; isso é território de seletores CSS). Os significados de!nos dois contextos são completamente diferentes. Nos atalhos CSS da Fase 4,!refere-se exclusivamente ao sufixo!important.
📖 Resumo
- Contexto CSS e contexto HTML são dramaticamente diferentes: o mesmo
m10é<div class="m10">em HTML, masmargin: 10px;em CSS - Regras de inferência de unidade: inteiros adicionam px automaticamente (
m10→margin: 10px;), floats adicionam em automaticamente (m1.5→margin: 1.5em;) - Unidades explícitas:
m10%→margin: 10%;,m10em→margin: 10em;,m10ex→margin: 10ex; - Aliases de unidade:
p→%,e→em,x→ex(ex.:w100p→width: 100%) - Hífens para múltiplos valores:
m10-20→margin: 10px 20px;,m10-20-30→ 3 valores - Separador de cor
#:c#fc0→color: #ffcc00;,bd1-s#ccc→border: 1px solid #ccc; !força!important:m10!→margin: 10px !important;
📝 Exercícios
-
Básico (Dificuldade: ★): Em um arquivo
.css, digite as 6 abreviaçõesm10,p10,w100,h200,fz16,bd1uma por uma, pressione Tab e registre os resultados da expansão. Depois reescreva-as com unidades explícitas (ex.:m10em,p10%) e compare as diferenças entre as 12 expansões. -
Intermediário (Dificuldade: ★★): Escreva uma linha Emmet para 6 propriedades comuns de um botão (
margin2 valores +paddingvalor único +border-radius+background-color+color+font-size). Requisitos: (a) use cores hex de 3 caracteres; (b)border-radiuscom5pxexplícito; (c)font-sizecom!no final para forçar prioridade. Registre a expansão e explique por que as 6 abreviações devem ser separadas por espaços (não hífens). -
Desafio (Dificuldade: ★★★): Escreva um estilo CSS completo de "Cartão de Detalhes do Produto" (pelo menos 8 propriedades). Requisitos: (a) inclua margin de múltiplos valores (4 valores), padding de múltiplos valores (2 valores), border-radius, background-color, color, font-size, border, box-shadow (abreviação
bs); (b) escreva tudo em uma linha Emmet; (c) pelo menos 2 propriedades usando atalho de cor de 3 caracteres; (d) pelo menos 1 propriedade com!no final. Verifique a expansão e escreva um relatório de comparação de velocidade "Atalho CSS vs. CSS Escrito à Mão" (quanto tempo leva escrever 8 linhas à mão vs. quanto tempo leva o atalho Emmet).