Emmet: Prefixos de Fornecedor e Correspondência Difusa
A Aula 11 ensinou os fundamentos dos atalhos CSS — escrevendo
margin: 10px 20px;e outras propriedades comuns em uma linha. Mas a era CSS3 introduziu dois grandes pontos de dor que permanecem não resolvidos: compatibilidade entre navegadores (ondeborder-radiusprecisa dos prefixos-webkit-e-moz-escritos simultaneamente) e nomes de propriedade difíceis de lembrar (overflow: hidden;é muito longo para digitar). Esta aula resolve ambos: prefixos de fornecedor permitem expandir regras de compatibilidade webkit/moz com um pressionamento de tecla, e a correspondência difusa permite escreverbdrse ter isso inferido inteligentemente comoborder-radius.
1. O Que Você Vai Aprender
- Mecanismo de prefixo de fornecedor: um único prefixo
-webkit-dispara a expansão de 3 linhas webkit + moz + padrão - Prefixo múltiplo explícito:
-w-m-especifica apenas webkit + moz, evitando prefixos ms/o desnecessários - Referência rápida de letras de prefixo Emmet:
w= webkit,m= moz,s= ms,o= o - Princípio de correspondência difusa: abreviaturas desconhecidas são combinadas com o nome do snippet predefinido mais próximo (
bdrs→border-radius) - Correspondência difusa na prática:
ov-h→overflow: hidden;,tdn→text-decoration: none; - Propriedade hifenizada: sintaxe de atalho e múltiplos valores para nomes de propriedade hifenizados (
border-top,border-bottom)
2. A História Real de Uma Desenvolvedora Front-End
(1) Ponto de Dor: Prefixos entre Navegadores CSS3 + Nomes de Propriedade Longos
Alice estava construindo cartões com cantos arredondados para uma landing page de e-commerce. Ela queria que todos os navegadores modernos suportassem border-radius para cantos arredondados. O problema: navegadores de 2015 ainda precisavam de prefixos —
-webkit-border-radius: 8px;
-moz-border-radius: 8px;
border-radius: 8px;
Três linhas apenas para lidar com uma propriedade border-radius. O design dela tinha 6 cantos arredondados (o próprio cartão, botões, imagens, emblemas, avatares e rodapé do cartão). A 3 linhas cada = 18 linhas de pura cópia e colagem. Pior: propriedades CSS3 diferentes têm requisitos de compatibilidade de prefixo diferentes — box-shadow precisa de 4 linhas (webkit, moz, ms, o), enquanto transform só precisa de 2. Alice continuava confundindo qual propriedade precisava de quantos prefixos.
Ainda pior eram os nomes longos de propriedades CSS3: overflow: hidden; era necessário com frequência, e Alice tinha que digitar o overflow completo (8 letras) toda vez; text-decoration: none; era ainda mais longo (15 caracteres só para o nome da propriedade). Ela podia escrever essas duas propriedades 50 vezes por dia, digitando-as completas a cada vez — totalizando 1.150 pressionamentos de tecla. Alice pensou: os prefixos de compatibilidade CSS3 não podem ser expandidos com um pressionamento de tecla? Nomes de propriedade longos não podem usar abreviações curtas?
(2) Como os Prefixos de Fornecedor + Correspondência Difusa do Emmet Resolvem Isso
A solução do Emmet tem duas partes:
Mecanismo de prefixo de fornecedor: Adicione - antes de uma abreviação CSS e o Emmet expande automaticamente em 3 linhas de regras compatíveis webkit/moz/padrão. A abreviação de canto arredondado da Alice -bdrs8 expande em 3 linhas de uma vez:
-webkit-border-radius: 8px;
-moz-border-radius: 8px;
border-radius: 8px;
6 cantos arredondados passam de 18 linhas para 6 abreviações — um aumento de velocidade de 3x.
Mecanismo de correspondência difusa: Emmet usa um dicionário de snippets CSS predefinido + algoritmo de pesquisa difusa para fazer correspondência inteligente entre abreviações curtas e nomes de propriedades longos. bdrs não está diretamente no dicionário, mas Emmet usa "pesquisa difusa de nome de trecho predefinido" para encontrar a correspondência mais próxima: border-radius; ov-h usa separação de hífen para correspondência inteligente overflow: hidden;; tdn usa uma combinação de letras iniciais para corresponder a text-decoration: none;. As 50 entradas de nomes de propriedades de Alice passaram de 1.150 pressionamentos de tecla para cerca de 200 (comprimento médio da abreviação de 4 caracteres) — um aumento de velocidade de 5x.
(3) Benefícios
Prefixos de fornecedor + correspondência difusa são os dois aceleradores principais do Emmet na era CSS3. O primeiro resolve o trabalho repetitivo de "compatibilidade entre navegadores", enquanto o segundo resolve a carga cognitiva de "não conseguir lembrar nomes de propriedade longos". Uma vez dominados, Alice consegue escrever estilos de cartão em 90 segundos (antes eram 8 minutos), reduzir o código de compatibilidade CSS3 para cantos arredondados de 18 linhas para 6 e melhorar a velocidade de entrada de nomes de propriedade longos em 5x. Após esta aula, você será capaz de escrever cantos arredondados compatíveis com webkit/moz com -bdrs8 em uma linha e expandir text-decoration: none; a partir de tdn em uma linha.
3. Mecanismo de Prefixo de Fornecedor: Prefixo - Dispara Expansão de 3 Linhas
Novas propriedades CSS3 (cantos arredondados, sombras, gradientes, transformações) exigem escrever prefixos de fornecedor para diferentes motores de navegador. O Emmet torna essa tarefa repetitiva uma operação de um pressionamento de tecla.
(1) Fundamentos de Prefixo de Fornecedor
Adicione um prefixo - antes de uma abreviação CSS e o Emmet expande automaticamente em 3 linhas de regras compatíveis incluindo webkit + moz + padrão.
| Abreviação | Expansão | Caso de Uso |
|---|---|---|
-bdrs |
-webkit-border-radius: ;-moz-border-radius: ;border-radius: ; |
Cantos arredondados compatível 3 linhas |
-bxs |
-webkit-box-shadow: ;-moz-box-shadow: ;box-shadow: ; |
Sombra compatível 3 linhas |
-trf |
-webkit-transform: ;-moz-transform: ;transform: ; |
Transformação compatível 3 linhas |
-bdrs8 |
-webkit-border-radius: 8px;-moz-border-radius: 8px;border-radius: 8px; |
Cantos arredondados com valor |
Ponto Chave: O Emmet inclui por padrão webkit (Chrome, Safari, novo Opera) + moz (Firefox) + padrão — 3 linhas no total. Isso é baseado na configuração do catálogo de fornecedores CSS (
css.{vendor}Properties) —border-radiusexiste tanto no catálogo webkit quanto no moz, então ambos os prefixos são adicionados. Para obter apenas uma versão de prefixo específica, use a sintaxe de prefixo explícito na seção (3).
(2) Como o Auto-Prefixo Funciona
O mecanismo de prefixo de fornecedor do Emmet é baseado na configuração css.autoInsertVendorPrefixes (ativada por padrão). Quando ativada, todas as propriedades CSS3 conhecidas (nos catálogos de fornecedores) expandem automaticamente para regras compatíveis de 3 linhas — o prefixo - não é necessário para a prefixação:
Abreviação (com -) |
Abreviação (sem -) |
Expansão | Observações |
|---|---|---|---|
-bdrs8 |
bdrs8 |
-webkit-border-radius: 8px;-moz-border-radius: 8px;border-radius: 8px; |
Ambos equivalentes quando a configuração está ativada |
-bxs |
bxs |
-webkit-box-shadow: ;-moz-box-shadow: ;box-shadow: ; |
Comportamento de auto-prefixo |
Dica: Este é um design de conveniência — os desenvolvedores não precisam memorizar "quais propriedades precisam de prefixos".
bdrs8e-bdrs8produzem a mesma expansão. No entanto, adicionar-explicitamente é mais claro e mais portátil (ainda funciona se a configuração de auto-prefixo estiver desativada).
(3) Especificação de Prefixo Explícito: -w-m- Gera Apenas os Prefixos Especificados
Para gerar apenas prefixos específicos (ex.: apenas webkit + moz, sem ms + o), use a sintaxe explícita -{letra}-{letra}-...:
| Abreviação | Expansão | Caso de Uso |
|---|---|---|
-w-m-bdrs8 |
-webkit-border-radius: 8px;-moz-border-radius: 8px;border-radius: 8px; |
Apenas webkit + moz |
-wm-trf |
-webkit-transform: ;-moz-transform: ;transform: ; |
Apenas webkit + moz |
-w-bdrs8 |
-webkit-border-radius: 8px;border-radius: 8px; |
Apenas webkit |
(4) Referência Rápida de Letras de Prefixo
O Emmet fornece abreviações de prefixo de uma letra para especificação explícita mais curta:
| Letra | Prefixo Completo | Navegador |
|---|---|---|
w |
-webkit- |
Chrome, Safari, novo Opera |
m |
-moz- |
Firefox |
s |
-ms- |
Edge antigo, IE |
o |
-o- |
Opera antigo (obsoleto; novo Opera usa webkit) |
Múltiplos prefixos são unidos com -: w-m, w-m-s-o (webkit + moz + ms + o).
4. Correspondência Difusa: Inferência Inteligente para Abreviações Desconhecidas
CSS tem mais de 200 nomes de propriedade — memorizar todos é irrealista. O Emmet usa correspondência difusa para permitir que você escreva abreviações curtas que são inferidas em nomes de propriedade longos.
(1) Princípio da Correspondência Difusa
O Emmet mantém um dicionário de snippets CSS predefinido (snippets.json). Quando o usuário digita uma abreviação não definida diretamente no dicionário, o Emmet usa um algoritmo de busca difusa para encontrar o nome de snippet mais próximo.
Usuário digita "bdrs"
→ Procura "bdrs" em snippets.json → não encontrado
→ Lança busca difusa → compara com todos os nomes de snippet
→ Calcula pontuações de similaridade
→ "border-radius" tem a maior pontuação (b-d-r-s corresponde a 1-2 caracteres cada de border-radius)
→ Gera a propriedade "border-radius"
(2) Referência Rápida Prática de Correspondência Difusa
Os pares de correspondência difusa "abreviação curta → propriedade longa" mais comuns no Emmet:
| Abreviação | Expansão | Processo de Correspondência Difusa |
|---|---|---|
bdrs |
border-radius: ; |
b-d-r-s → border-radius |
bdt |
border-top: ; |
b-d-t → border-top (definido diretamente) |
bdb |
border-bottom: ; |
b-d-b → border-bottom |
ov-h |
overflow: hidden; |
ov-h → overflow: hidden |
ovh |
overflow: hidden; |
ovh → overflow: hidden (sem hífen) |
oh |
overflow: hidden; |
oh → overflow: hidden (ultra-curto) |
tdn |
text-decoration: none; |
t-d-n → text-decoration: none |
pos-a |
position: absolute; |
pos-a → position: absolute |
bxz-cb |
box-sizing: content-box; |
bxz-cb → box-sizing: content-box |
c |
color: ; |
c → color (definido diretamente) |
Ponto Chave: A correspondência difusa opera em nomes de snippet predefinidos, não em nomes de propriedade CSS diretamente. Isso significa que a mesma abreviação pode ter múltiplos candidatos — o Emmet escolhe aquele com a maior pontuação de similaridade.
ohpoderia corresponder aoverflow: hiddenououtline: hidden, mas o Emmet seleciona com base na prioridade.
(3) Atalho de Propriedade Hifenizada
CSS tem muitas propriedades de múltiplas palavras hifenizadas (border-top, border-bottom, text-decoration). As regras de atalho do Emmet para propriedades hifenizadas:
| Abreviação | Expansão | Observações |
|---|---|---|
bdt |
border-top: ; |
Propriedade hifenizada pega primeiras letras |
bdb |
border-bottom: ; |
Igual ao acima |
bdl |
border-left: ; |
Igual ao acima |
bdr |
border-right: ; |
Igual ao acima |
tdn |
text-decoration: none; |
Limpar decoração de texto |
tdl |
text-decoration: line-through; |
Decoração de texto tachado |
tt-u |
text-transform: uppercase; |
Transformação de texto maiúsculas |
bd-1-s-#ccc |
border: 1px solid #ccc; |
Atalho de borda completo |
Dica: A sintaxe de múltiplos valores para propriedades hifenizadas usa
-como separador (ex.:bdt-1-s-solid). Mas cuidado para distinguir isso do atalho de múltiplos valores —bdté a propriedade (border-top),-1é o valor (1px),-sé o valor (solid), então o resultado final éborder-top: 1px solid;.#é o separador de cor, e#cccé o valor da cor — a mesma abreviação pode misturar perfeitamente propriedade + múltiplos valores + cor.
5. Exemplos Práticos
Os 4 exemplos a seguir cobrem os cenários principais de prefixos de fornecedor + correspondência difusa + propriedades hifenizadas.
▶ Exemplo: Prefixo de Fornecedor Único -webkit-bdrs10 (Dificuldade: ★)
O prefixo de fornecedor mais comum — escreva compatibilidade webkit + moz + padrão em uma linha.
Abreviação:
-webkit-bdrs10
Expansão:
-webkit-border-radius: 10px;
-moz-border-radius: 10px;
border-radius: 10px;
Saída:
TEXT 📖 Somente leituraExplicação: `-webkit-bdrs10` consiste em 3 segmentos: ① `-webkit-` é o marcador de prefixo de fornecedor explícito, acionando o Emmet para expandir uma versão webkit; ② `bdrs` é correspondido difusamente a `border-radius` (via correspondência de maior similaridade no dicionário snippets.json); ③ `10` é o valor, adicionando automaticamente a unidade px. O Emmet gera 3 linhas de regras de compatibilidade: versão webkit, versão moz e versão padrão w3c. Como `border-radius` existe em ambos os catálogos de fornecedores do Emmet (css.webkitProperties, css.mozProperties), mesmo sem escrever explicitamente `-webkit-`, `bdrs10` geraria automaticamente 3 linhas de compatibilidade. A notação explícita `-webkit-` tem a vantagem de intenção mais clara e funcionalidade contínua após mudanças de configuração.
▶ Exemplo: Múltiplos Prefixos de Fornecedor -w-m-bdrs10 (Dificuldade: ★★)
Especifique explicitamente apenas os prefixos webkit + moz — evitando prefixos legados ms/o desnecessários.
Abreviação:
-w-m-bdrs10
Expansão:
-webkit-border-radius: 10px;
-moz-border-radius: 10px;
border-radius: 10px;
Saída:
TEXT 📖 Somente leituraExplicação: Em `-w-m-bdrs10`, `-` é o gatilho de prefixo de fornecedor, `w-m` é a lista de prefixos explícitos (w = webkit, m = moz) e `bdrs10` é a propriedade + valor. Vendo `-w-m-`, o Emmet gera **apenas os dois prefixos especificados + padrão**, sem ms (IE/Edge antigo) e o (Opera antigo). Este modo de "especificação explícita" é útil para: (a) controlar precisamente o número de prefixos de saída; (b) evitar prefixos de navegador obsoletos (como o); (c) aderir a padrões de codificação da equipe que exigem apenas webkit + moz. A diferença chave de `-webkit-bdrs10` é: `-w-m-bdrs10` para **propriedades desconhecidas** gera apenas 2 prefixos + padrão; enquanto `-webkit-bdrs10` para **propriedades conhecidas** gera todos os prefixos do catálogo, e para **propriedades desconhecidas** gera todos os 4 prefixos.
▶ Exemplo: Correspondência Difusa bdrs tdn ov-h (Dificuldade: ★★)
Três correspondências difusas comuns de propriedades longas — demonstrando a capacidade de inferência inteligente do Emmet.
Abreviação (3 expansões independentes):
bdrs8
Expansão:
border-radius: 8px;
Abreviação:
tdn
Expansão:
text-decoration: none;
Abreviação:
ov-h
Expansão:
overflow: hidden;
Saída:
TEXT 📖 Somente leituraExplicação: Três abreviações independentes mostram três formas de correspondência difusa. Em `bdrs8`, `bdrs` é correspondido difusamente a `border-radius` e 8 adiciona px automaticamente → `border-radius: 8px;`. Este é um padrão típico de "abreviação de primeiras letras" (primeiros 2 caracteres de "border" e "radius"). Em `tdn`, `t-d-n` é a abreviação para `text-decoration: none` (primeiras letras de text + decoration + none) → `text-decoration: none;`. Este é um **alias exato predefinido** no dicionário do Emmet, não correspondência difusa — o snippets.json do Emmet contém a entrada precisa `"tdn": "text-decoration: none|;"`. Em `ov-h`, o hífen atua como separador de valor, separando `ov` (overflow) de `h` (hidden) → `overflow: hidden;`. Esta é outra forma de correspondência difusa: o hífen torna a estrutura da abreviação mais clara. A correspondência difusa do Emmet opera em **nomes de snippet predefinidos**, não em **todos os nomes de propriedade CSS** — então, ocasionalmente, propriedades obscuras podem não ser encontradas.
▶ Exemplo: Atalho de Propriedade Hifenizada bdt-1-s-solid bd-1-s-#ccc (Dificuldade: ★★)
Sintaxe de múltiplos valores para propriedades hifenizadas — demonstrando que hífens em abreviações separam tanto propriedades quanto valores.
Abreviação:
bdt-1-s-solid
Expansão:
border-top: 1px solid;
Abreviação:
bd-1-s-#ccc
Expansão:
border: 1px solid #ccc;
Saída:
TEXT 📖 Somente leituraExplicação: Duas abreviações mostram a sintaxe de múltiplos valores para propriedades hifenizadas. Em `bdt-1-s-solid`, `bdt` é o atalho de propriedade hifenizada para `border-top` (primeiras letras de border + top), `-1` é o valor 1 (adiciona px automaticamente), `-s` é o alias para solid (s = solid) e `-solid` é um valor explícito. O Emmet analisa inteligentemente: `bdt` é o nome da propriedade; tudo após `-` é um valor (1px, solid), produzindo `border-top: 1px solid;`. Em `bd-1-s-#ccc`, `bd` é o atalho para `border` (definido diretamente), `-1` é 1px, `-s` é solid e `-#ccc` é a cor (`#` é o separador de cor; o Emmet reconhece automaticamente o limite do valor). A saída final é `border: 1px solid #ccc;`. Ambos os exemplos demonstram o atalho misto "propriedade hifenizada + múltiplos valores + cor" — esta é a sintaxe CSS de borda completa mais comum.
6. Exemplo Completo: Estilo de Cartão CSS3 em Uma Linha
Combine prefixos de fornecedor, correspondência difusa e propriedades hifenizadas para escrever um estilo completo de cartão CSS3 (com compatibilidade com navegadores legados).
▶ Exemplo: Estilo Compatível de Cartão CSS3 (Dificuldade: ★★)
Abreviação:
-w-m-bdrs8 +bxs0-2-4-#0003 -bgs#fff w200 h200 m10-20 p16
Expansão:
-webkit-border-radius: 8px;
-moz-border-radius: 8px;
border-radius: 8px;
-webkit-box-shadow: 0 2px 4px #00000033;
-moz-box-shadow: 0 2px 4px #00000033;
box-shadow: 0 2px 4px #00000033;
background: #fff;
width: 200px;
height: 200px;
margin: 10px 20px;
padding: 16px;
Saída:
TEXT 📖 Somente leituraExplicação: Este exemplo combina todos os mecanismos principais desta aula. `-w-m-bdrs8` especifica explicitamente os prefixos webkit + moz para expandir cantos arredondados (3 linhas); `+bxs0-2-4-#0003` é a abreviação de `box-shadow` — `bxs` corresponde difusamente a box-shadow, `0-2-4` é o deslocamento e raio de desfoque de 3 valores (adiciona px automaticamente), e `#0003` é preto com alfa 03 (o Emmet expande automaticamente a cor de 4 caracteres `#0003` para 8 caracteres `#00000033`). Abreviação `-bgs#fff`: `bgs` é o atalho para background, `#fff` é um fundo branco. Nota: `-bgs` é uma abreviação de prefixo de fornecedor (`-` dispara webkit/moz), mas background não é uma propriedade nova do CSS3, então as versões webkit/moz não serão realmente geradas (porque background não está nos catálogos de fornecedores). O `-` aqui é usado para clareza de intenção. Finalmente, `w200 h200 m10-20 p16` são as dimensões e espaçamentos básicos. Esta única linha cobre um estilo completo de cartão CSS3, de 12 linhas de CSS escritas à mão para 1 abreviação Emmet.
❓ Perguntas Frequentes
P:
-bdrs8ebdrs8produzem exatamente a mesma expansão? Devo sempre escrever-? R: Quandocss.autoInsertVendorPrefixesestá ativado (padrão), são idênticos — ambos expandem para 3 linhas de regras compatíveis. Quando a configuração está desativada,-bdrs8ainda expande para 3 linhas, masbdrs8expande para apenas 1 linha (a versão padrão). Recomenda-se sempre escrever o prefixo-para intenção mais clara e melhor compatibilidade entre ambientes.
P: Por que a correspondência difusa pode corresponder
bdrsaborder-radius, mas nãoradius? R: A correspondência difusa opera em nomes de snippet predefinidos, não em todos os nomes de propriedade CSS.bdrspode corresponder porque o snippets.json do Emmet define explicitamente"bdrs": "border-radius:|;"como um alias exato.radiusnão está na lista predefinida, então a busca difusa não encontra correspondência próxima. Se você usaradiuscom frequência, pode personalizar o snippets.json adicionando"radius": "border-radius:|;", tornandoradiustambém expansível.
P: Qual é a diferença entre
-webkit-bdrs10e-w-bdrs10? R:-webkit-bdrs10especifica explicitamente o prefixo webkit;-w-bdrs10é a forma abreviada (w=webkit). Os dois são equivalentes na análise do Emmet. No entanto, em-webkit-bdrs10,-webkit-faz parte do nome da propriedade, e o Emmet procura o snippet parawebkit-bdrscomo um todo; em-w-bdrs10,-w-é uma lista de prefixos explícita, e o Emmet analisa no modo "lista de prefixos + propriedade". Ambos produzem o mesmo resultado, mas a semântica difere —-webkit-bdrsenfatiza "versão compatível com webkit", enquanto-w-bdrsenfatiza "especificar o prefixo w". Recomenda-se usar-w-bdrs(mais curto e mais alinhado com a convenção de prefixo de uma letra do Emmet).
P: Abreviações de prefixo de fornecedor podem receber
!important? Por exemplo,-bdrs8!? R: Sim. O sufixo!importantfunciona independentemente do mecanismo de prefixo de fornecedor.-bdrs8!expande para 3 linhas com!importantem cada uma. No entanto, na prática, adicionar!importanta prefixos de fornecedor não é recomendado — as próprias regras de compatibilidade já são incomuns, e adicionar!importantdificulta a depuração de prioridade. Se precisar usar, aplique apenas à versão padrão final (border-radius: 8px !important;) em vez das versões webkit/moz.
📖 Resumo
- Prefixos de fornecedor: adicione
-antes de uma abreviação para expandir automaticamente regras compatíveis de 3 linhas webkit + moz + padrão (-bdrs8→ 3 linhas) - Auto-prefixo: a configuração
css.autoInsertVendorPrefixesestá ativada por padrão; propriedades CSS3 conhecidas não precisam de-para obter prefixos - Prefixos explícitos: especificação de prefixo de uma letra
-w-m-(w=webkit,m=moz,s=ms,o=o) - Correspondência difusa: opera em nomes de snippet predefinidos (
bdrs→border-radius,ov-h→overflow: hidden;) - Propriedades hifenizadas:
bdt= border-top,bdb= border-bottom,bdl= border-left,bdr= border-right - Múltiplos valores mistos:
bd-1-s-#ccc= border 1px solid cinza;#atua como separador de cor para concatenação perfeita de valores mistos
📝 Exercícios
-
Básico (Dificuldade: ★): Em um arquivo
.css, digite as 3 abreviações-bdrs8,-bxs,-trfuma por uma, pressione Tab e registre os resultados da expansão. Depois reescreva-as sem-(comobdrs8,bxs,trf) e compare as 6 expansões (nota: comcss.autoInsertVendorPrefixesativado por padrão, ambas devem ser idênticas). -
Intermediário (Dificuldade: ★★): Escreva uma linha Emmet para o estilo CSS3 completo e compatível de uma div. Requisitos: (a) cantos arredondados 8px (compatível com webkit + moz); (b) sombra
0 2px 4px rgba(0,0,0,0.3)(usando cor de 4 caracteres#0003); (c) largura 200px, altura 200px; (d) margin 10px-20px (2 valores). Registre a expansão e verifique se todas as linhas de compatibilidade incluem os prefixos-webkit-e-moz-. -
Desafio (Dificuldade: ★★★): Escreva um estilo CSS completo de "sombra de cartão + transição hover" com pelo menos 5 propriedades: (a) estilo padrão com cantos arredondados + sombra + padding (3 propriedades); (b)
transition(dispare expansão compatível com-trsou use o atalhotrs); (c) pelo menos 2 usos de correspondência difusa (ex.:bdrs,tdn,ov-h); (d) pelo menos 1 propriedade com!important. Verifique a expansão e escreva um relatório resumido de benefícios de velocidade "Prefixos de Fornecedor + Correspondência Difusa" (quanto tempo leva escrever à mão vs. Emmet para cada um).