Tailwind CSS Sombras e Efeitos: Sombras, Opacidade e Modos de Mesclagem
Sombras (shadow-*)
As classes shadow-* definem o box-shadow de um elemento, oferecendo uma variedade de tamanhos desde shadow-sm até shadow-2xl.
Exemplo
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Demonstração de Sombras</title>
<script src="https://cdn.tailwindcss.com"></script>
</head>
<body class="min-h-screen bg-gray-100 p-8">
<div class="max-w-4xl mx-auto space-y-8">
<!-- Tamanhos de sombra -->
<div class="bg-white rounded-lg p-6">
<h3 class="font-semibold mb-4">Tamanhos de Sombra</h3>
<div class="grid grid-cols-2 md:grid-cols-4 gap-8">
<div class="bg-white p-6 rounded-lg shadow-sm text-center">
<div class="text-sm font-medium">shadow-sm</div>
</div>
<div class="bg-white p-6 rounded-lg shadow text-center">
<div class="text-sm font-medium">shadow</div>
</div>
<div class="bg-white p-6 rounded-lg shadow-md text-center">
<div class="text-sm font-medium">shadow-md</div>
</div>
<div class="bg-white p-6 rounded-lg shadow-lg text-center">
<div class="text-sm font-medium">shadow-lg</div>
</div>
<div class="bg-white p-6 rounded-lg shadow-xl text-center">
<div class="text-sm font-medium">shadow-xl</div>
</div>
<div class="bg-white p-6 rounded-lg shadow-2xl text-center">
<div class="text-sm font-medium">shadow-2xl</div>
</div>
<div class="bg-white p-6 rounded-lg shadow-inner text-center">
<div class="text-sm font-medium">shadow-inner</div>
</div>
<div class="bg-white p-6 rounded-lg shadow-none text-center">
<div class="text-sm font-medium">shadow-none</div>
</div>
</div>
</div>
<!-- Cores de sombra -->
<div class="bg-gray-200 rounded-lg p-6">
<h3 class="font-semibold mb-4">Cores de Sombra</h3>
<div class="grid grid-cols-2 md:grid-cols-4 gap-8">
<div class="bg-white p-6 rounded-lg shadow-lg shadow-blue-500/50 text-center">
<div class="text-sm font-medium">blue-500/50</div>
</div>
<div class="bg-white p-6 rounded-lg shadow-lg shadow-green-500/50 text-center">
<div class="text-sm font-medium">green-500/50</div>
</div>
<div class="bg-white p-6 rounded-lg shadow-lg shadow-purple-500/50 text-center">
<div class="text-sm font-medium">purple-500/50</div>
</div>
<div class="bg-white p-6 rounded-lg shadow-lg shadow-red-500/50 text-center">
<div class="text-sm font-medium">red-500/50</div>
</div>
</div>
</div>
<!-- Aplicações práticas -->
<div class="bg-gray-200 rounded-lg p-6">
<h3 class="font-semibold mb-4">Aplicações Práticas</h3>
<div class="grid grid-cols-1 md:grid-cols-3 gap-6">
<!-- Sombra de card -->
<div class="bg-white rounded-xl shadow-lg p-6 hover:shadow-xl transition-shadow">
<h4 class="font-semibold mb-2">Sombra de Card</h4>
<p class="text-gray-600 text-sm">A sombra aumenta ao passar o mouse</p>
</div>
<!-- Sombra de botão -->
<div class="flex items-center justify-center">
<button class="bg-blue-600 text-white px-6 py-3 rounded-lg shadow-md hover:shadow-lg hover:bg-blue-700 transition-all">
Sombra de Botão
</button>
</div>
<!-- Efeito flutuante -->
<div class="bg-white rounded-xl shadow-xl p-6 -translate-y-2">
<h4 class="font-semibold mb-2">Efeito Flutuante</h4>
<p class="text-gray-600 text-sm">Combinado com translate</p>
</div>
</div>
</div>
</div>
</body>
</html>
Referência das classes de sombra:
| Classe | Valor CSS | Descrição |
|---|---|---|
shadow-sm |
Sombra pequena | Efeito de sutil |
shadow |
Sombra padrão | Efeito de sombra padrão |
shadow-md |
Sombra média | Sombra de tamanho médio |
shadow-lg |
Sombra grande | Efeito de sombra maior |
shadow-xl |
Sombra extra-grande | Sombra de alcance amplo |
shadow-2xl |
Sombra extra-grande | Sombra de alcance ultra-amplo |
shadow-inner |
Sombra interna | Sombra interna do elemento |
shadow-none |
Sem sombra | Remove a sombra |
shadow-blue-500/50 |
Sombra azul com 50% de opacidade | Cor personalizada da sombra |
CSS Tradicional vs Tailwind A abordagem tradicional requer escrever propriedades complexas como
box-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1)no CSS, enquanto o Tailwind usa nomes de classes comoshadow-lgpara declaração direta.shadow-blue-500/50suporta cores e opacidade personalizadas da sombra.
Dica:
shadow-innercria um efeito de sombra interna, ideal para botões afundados ou campos de entrada.shadow-noneé usada para remover uma sombra padrão.
Opacidade (opacity-*)
As classes opacity-* definem a transparência geral de um elemento.
Exemplo
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Demonstração de Opacidade</title>
<script src="https://cdn.tailwindcss.com"></script>
</head>
<body class="min-h-screen bg-gray-100 p-8">
<div class="max-w-4xl mx-auto space-y-8">
<!-- Gradiente de opacidade -->
<div class="bg-white rounded-lg shadow p-6">
<h3 class="font-semibold mb-4">Gradiente de Opacidade</h3>
<div class="flex flex-wrap gap-4">
<div class="w-24 h-24 bg-blue-500 opacity-100 rounded flex items-center justify-center text-white text-xs">100</div>
<div class="w-24 h-24 bg-blue-500 opacity-75 rounded flex items-center justify-center text-white text-xs">75</div>
<div class="w-24 h-24 bg-blue-500 opacity-50 rounded flex items-center justify-center text-white text-xs">50</div>
<div class="w-24 h-24 bg-blue-500 opacity-25 rounded flex items-center justify-center text-white text-xs">25</div>
<div class="w-24 h-24 bg-blue-500 opacity-0 rounded flex items-center justify-center text-white text-xs">0</div>
</div>
</div>
<!-- Mais valores de opacidade -->
<div class="bg-white rounded-lg shadow p-6">
<h3 class="font-semibold mb-4">Mais Valores de Opacidade</h3>
<div class="flex flex-wrap gap-4">
<div class="w-20 h-20 bg-green-500 opacity-90 rounded flex items-center justify-center text-white text-xs">90</div>
<div class="w-20 h-20 bg-green-500 opacity-80 rounded flex items-center justify-center text-white text-xs">80</div>
<div class="w-20 h-20 bg-green-500 opacity-70 rounded flex items-center justify-center text-white text-xs">70</div>
<div class="w-20 h-20 bg-green-500 opacity-60 rounded flex items-center justify-center text-white text-xs">60</div>
<div class="w-20 h-20 bg-green-500 opacity-50 rounded flex items-center justify-center text-white text-xs">50</div>
<div class="w-20 h-20 bg-green-500 opacity-40 rounded flex items-center justify-center text-white text-xs">40</div>
<div class="w-20 h-20 bg-green-500 opacity-30 rounded flex items-center justify-center text-white text-xs">30</div>
<div class="w-20 h-20 bg-green-500 opacity-20 rounded flex items-center justify-center text-white text-xs">20</div>
<div class="w-20 h-20 bg-green-500 opacity-10 rounded flex items-center justify-center text-white text-xs">10</div>
<div class="w-20 h-20 bg-green-500 opacity-5 rounded flex items-center justify-center text-white text-xs">5</div>
</div>
</div>
<!-- Aplicações práticas -->
<div class="bg-white rounded-lg shadow p-6">
<h3 class="font-semibold mb-4">Aplicações Práticas</h3>
<div class="space-y-4">
<!-- Estado desabilitado -->
<div class="flex items-center gap-4">
<button class="bg-blue-600 text-white px-4 py-2 rounded">Botão Normal</button>
<button class="bg-blue-600 text-white px-4 py-2 rounded opacity-50 cursor-not-allowed">Botão Desabilitado</button>
</div>
<!-- Camada de sobreposição -->
<div class="relative h-48 rounded-lg overflow-hidden">
<div class="absolute inset-0 bg-cover bg-center" style="background-image: url('https://picsum.photos/400/200')"></div>
<div class="absolute inset-0 bg-black opacity-50 flex items-center justify-center">
<span class="text-white text-xl font-semibold">Efeito de Sobreposição</span>
</div>
</div>
<!-- Fade in/out -->
<div class="flex gap-4">
<div class="w-32 h-32 bg-purple-500 rounded-lg opacity-100 hover:opacity-75 transition-opacity cursor-pointer flex items-center justify-center text-white text-sm">
Passe o mouse
</div>
<div class="w-32 h-32 bg-purple-500 rounded-lg opacity-75 hover:opacity-100 transition-opacity cursor-pointer flex items-center justify-center text-white text-sm">
Passe o mouse
</div>
</div>
</div>
</div>
</div>
</body>
</html>
Referência das classes de opacidade:
| Classe | Valor CSS | Descrição |
|---|---|---|
opacity-0 |
opacity: 0 |
Totalmente transparente |
opacity-5 |
opacity: 0.05 |
5% de opacidade |
opacity-10 |
opacity: 0.1 |
10% de opacidade |
opacity-20 |
opacity: 0.2 |
20% de opacidade |
opacity-25 |
opacity: 0.25 |
25% de opacidade |
opacity-30 |
opacity: 0.3 |
30% de opacidade |
opacity-40 |
opacity: 0.4 |
40% de opacidade |
opacity-50 |
opacity: 0.5 |
50% de opacidade |
opacity-60 |
opacity: 0.6 |
60% de opacidade |
opacity-70 |
opacity: 0.7 |
70% de opacidade |
opacity-75 |
opacity: 0.75 |
75% de opacidade |
opacity-80 |
opacity: 0.8 |
80% de opacidade |
opacity-90 |
opacity: 0.9 |
90% de opacidade |
opacity-95 |
opacity: 0.95 |
95% de opacidade |
opacity-100 |
opacity: 1 |
Totalmente opaco |
CSS Tradicional vs Tailwind A abordagem tradicional requer definir a propriedade
opacityno CSS e lembrar valores específicos, enquanto o Tailwind usa nomes de classes semânticas comoopacity-50para declaração direta. Os valores de opacidade variam de 0 a 100 em etapas de 5.
Dica:
opacityafeta o elemento inteiro (incluindo conteúdo e filhos). Se você quer que apenas o fundo seja transparente, use a sintaxebg-blue-500/50em vez disso.
Modos de Mesclagem (mix-blend-*)
As classes mix-blend-* definem o modo de mesclagem de um elemento, controlando como ele se mescla com o conteúdo abaixo dele.
Exemplo
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Demonstração de Modos de Mesclagem</title>
<script src="https://cdn.tailwindcss.com"></script>
</head>
<body class="min-h-screen bg-gray-100 p-8">
<div class="max-w-4xl mx-auto space-y-8">
<!-- Modos de mesclagem básicos -->
<div class="bg-white rounded-lg shadow p-6">
<h3 class="font-semibold mb-4">Modos de Mesclagem Básicos</h3>
<div class="grid grid-cols-2 md:grid-cols-4 gap-4">
<div class="relative h-32 rounded-lg overflow-hidden">
<div class="absolute inset-0 bg-blue-500"></div>
<div class="absolute inset-0 bg-red-500 mix-blend-normal flex items-center justify-center text-white font-bold">normal</div>
</div>
<div class="relative h-32 rounded-lg overflow-hidden">
<div class="absolute inset-0 bg-blue-500"></div>
<div class="absolute inset-0 bg-red-500 mix-blend-multiply flex items-center justify-center text-white font-bold">multiply</div>
</div>
<div class="relative h-32 rounded-lg overflow-hidden">
<div class="absolute inset-0 bg-blue-500"></div>
<div class="absolute inset-0 bg-red-500 mix-blend-screen flex items-center justify-center text-white font-bold">screen</div>
</div>
<div class="relative h-32 rounded-lg overflow-hidden">
<div class="absolute inset-0 bg-blue-500"></div>
<div class="absolute inset-0 bg-red-500 mix-blend-overlay flex items-center justify-center text-white font-bold">overlay</div>
</div>
</div>
</div>
<!-- Mais modos de mesclagem -->
<div class="bg-white rounded-lg shadow p-6">
<h3 class="font-semibold mb-4">Mais Modos de Mesclagem</h3>
<div class="grid grid-cols-2 md:grid-cols-4 gap-4">
<div class="relative h-32 rounded-lg overflow-hidden">
<div class="absolute inset-0 bg-blue-500"></div>
<div class="absolute inset-0 bg-red-500 mix-blend-darken flex items-center justify-center text-white font-bold">darken</div>
</div>
<div class="relative h-32 rounded-lg overflow-hidden">
<div class="absolute inset-0 bg-blue-500"></div>
<div class="absolute inset-0 bg-red-500 mix-blend-lighten flex items-center justify-center text-white font-bold">lighten</div>
</div>
<div class="relative h-32 rounded-lg overflow-hidden">
<div class="absolute inset-0 bg-blue-500"></div>
<div class="absolute inset-0 bg-red-500 mix-blend-color-dodge flex items-center justify-center text-white font-bold">color-dodge</div>
</div>
<div class="relative h-32 rounded-lg overflow-hidden">
<div class="absolute inset-0 bg-blue-500"></div>
<div class="absolute inset-0 bg-red-500 mix-blend-color-burn flex items-center justify-center text-white font-bold">color-burn</div>
</div>
</div>
</div>
<!-- Aplicações práticas -->
<div class="bg-white rounded-lg shadow p-6">
<h3 class="font-semibold mb-4">Aplicações Práticas</h3>
<div class="space-y-4">
<!-- Mesclagem de imagem -->
<div class="relative h-48 rounded-lg overflow-hidden">
<div class="absolute inset-0 bg-cover bg-center" style="background-image: url('https://picsum.photos/400/200')"></div>
<div class="absolute inset-0 bg-gradient-to-r from-blue-600 to-purple-600 mix-blend-multiply"></div>
<div class="relative h-full flex items-center justify-center text-white text-2xl font-bold">
Efeito de Modo de Mesclagem
</div>
</div>
<!-- Mesclagem de texto -->
<div class="relative h-24 bg-gradient-to-r from-yellow-400 to-orange-500 rounded-lg overflow-hidden">
<div class="absolute inset-0 flex items-center justify-center text-4xl font-black text-white mix-blend-overlay">
TAILWIND
</div>
</div>
</div>
</div>
</div>
</body>
</html>
Referência das classes de modo de mesclagem:
| Classe | Valor CSS | Descrição |
|---|---|---|
mix-blend-normal |
mix-blend-mode: normal |
Normal (padrão) |
mix-blend-multiply |
mix-blend-mode: multiply |
Multiplicar |
mix-blend-screen |
mix-blend-mode: screen |
Tela |
mix-blend-overlay |
mix-blend-mode: overlay |
Sobreposição |
mix-blend-darken |
mix-blend-mode: darken |
Escurecer |
mix-blend-lighten |
mix-blend-mode: lighten |
Clarear |
mix-blend-color-dodge |
mix-blend-mode: color-dodge |
Subexposição de cor |
mix-blend-color-burn |
mix-blend-mode: color-burn |
Superexposição de cor |
mix-blend-hard-light |
mix-blend-mode: hard-light |
Luz forte |
mix-blend-soft-light |
mix-blend-mode: soft-light |
Luz suave |
mix-blend-difference |
mix-blend-mode: difference |
Diferença |
mix-blend-exclusion |
mix-blend-mode: exclusion |
Exclusão |
mix-blend-hue |
mix-blend-mode: hue |
Matiz |
mix-blend-saturation |
mix-blend-mode: saturation |
Saturação |
mix-blend-color |
mix-blend-mode: color |
Cor |
mix-blend-luminosity |
mix-blend-mode: luminosity |
Luminosidade |
CSS Tradicional vs Tailwind A abordagem tradicional requer definir a propriedade
mix-blend-modeno CSS, enquanto o Tailwind usa nomes de classes comomix-blend-multiplypara declaração direta. Os modos de mesclagem são comumente usados em design criativo para sobreposições de imagens, efeitos de texto e mais.
Dica:
mix-blend-multiplyé frequentemente usado para sobrepor cores em imagens para um efeito de tons profundos.mix-blend-screené usado para criar efeitos brilhantes e luminosos.
Filtro Drop Shadow (drop-shadow-*)
As classes drop-shadow-* usam o CSS filter: drop-shadow() para adicionar sombras a elementos, o que é ideal para formas irregulares.
Exemplo
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Demonstração de Drop Shadow</title>
<script src="https://cdn.tailwindcss.com"></script>
</head>
<body class="min-h-screen bg-gray-100 p-8">
<div class="max-w-4xl mx-auto space-y-8">
<!-- Tamanhos de drop-shadow -->
<div class="bg-white rounded-lg shadow p-6">
<h3 class="font-semibold mb-4">Tamanhos de drop-shadow</h3>
<div class="flex flex-wrap gap-8 items-center">
<div class="text-6xl drop-shadow-sm">🎯</div>
<div class="text-6xl drop-shadow">🎯</div>
<div class="text-6xl drop-shadow-md">🎯</div>
<div class="text-6xl drop-shadow-lg">🎯</div>
<div class="text-6xl drop-shadow-xl">🎯</div>
<div class="text-6xl drop-shadow-2xl">🎯</div>
<div class="text-6xl drop-shadow-none">🎯</div>
</div>
</div>
<!-- drop-shadow vs box-shadow -->
<div class="bg-white rounded-lg shadow p-6">
<h3 class="font-semibold mb-4">drop-shadow vs box-shadow</h3>
<div class="grid grid-cols-2 gap-8">
<div class="text-center">
<p class="text-sm text-gray-600 mb-4">box-shadow (shadow-lg)</p>
<div class="inline-block bg-blue-500 text-white px-6 py-3 rounded-lg shadow-lg">Sombra</div>
</div>
<div class="text-center">
<p class="text-sm text-gray-600 mb-4">drop-shadow (drop-shadow-lg)</p>
<div class="inline-block bg-blue-500 text-white px-6 py-3 rounded-lg drop-shadow-lg">Sombra</div>
</div>
</div>
</div>
<!-- Aplicações práticas -->
<div class="bg-white rounded-lg shadow p-6">
<h3 class="font-semibold mb-4">Aplicações Práticas</h3>
<div class="space-y-4">
<!-- Sombra de imagem -->
<div class="flex gap-4 items-center">
<img src="https://picsum.photos/100/100" alt="Exemplo" class="rounded-full drop-shadow-lg">
<img src="https://picsum.photos/100/100" alt="Exemplo" class="rounded-lg drop-shadow-xl">
</div>
<!-- Sombra de SVG -->
<div class="flex gap-4 items-center">
<svg class="w-16 h-16 text-blue-500 drop-shadow-lg" fill="currentColor" viewBox="0 0 20 20">
<path d="M10 2a8 8 0 100 16 8 8 0 000-16zm0 14a6 6 0 110-12 6 6 0 010 12z"/>
</svg>
<svg class="w-16 h-16 text-green-500 drop-shadow-xl" fill="currentColor" viewBox="0 0 20 20">
<path d="M10 2a8 8 0 100 16 8 8 0 000-16zm0 14a6 6 0 110-12 6 6 0 010 12z"/>
</svg>
</div>
<!-- Efeito de sombra de texto -->
<div class="bg-gradient-to-r from-blue-500 to-purple-500 p-8 rounded-lg">
<span class="text-4xl font-bold text-white drop-shadow-lg">Texto com Sombra</span>
</div>
</div>
</div>
</div>
</body>
</html>
Referência das classes de drop-shadow:
| Classe | Valor CSS | Descrição |
|---|---|---|
drop-shadow-sm |
filter: drop-shadow(0 1px 1px rgb(0 0 0 / 0.05)) |
Sombra pequena |
drop-shadow |
filter: drop-shadow(0 1px 2px rgb(0 0 0 / 0.1)) drop-shadow(0 1px 1px rgb(0 0 0 / 0.06)) |
Sombra padrão |
drop-shadow-md |
filter: drop-shadow(0 4px 3px rgb(0 0 0 / 0.1)) drop-shadow(0 2px 2px rgb(0 0 0 / 0.06)) |
Sombra média |
drop-shadow-lg |
filter: drop-shadow(0 10px 8px rgb(0 0 0 / 0.1)) drop-shadow(0 4px 3px rgb(0 0 0 / 0.06)) |
Sombra grande |
drop-shadow-xl |
filter: drop-shadow(0 20px 13px rgb(0 0 0 / 0.1)) drop-shadow(0 8px 5px rgb(0 0 0 / 0.06)) |
Sombra extra-grande |
drop-shadow-2xl |
filter: drop-shadow(0 25px 25px rgb(0 0 0 / 0.15)) |
Sombra extra-grande |
drop-shadow-none |
filter: drop-shadow(0 0 #0000) |
Sem sombra |
CSS Tradicional vs Tailwind A abordagem tradicional requer escrever propriedades complexas como
filter: drop-shadow(0 10px 8px rgb(0 0 0 / 0.1))no CSS, enquanto o Tailwind usa nomes de classes comodrop-shadow-lgpara declaração direta.
Nota:
drop-shadowsegue o canal alfa do elemento, tornando-o ideal para formas irregulares (como imagens PNG e SVGs).box-shadowcria uma sombra retangular, que é mais adequada para formas regulares.
Exemplo Abrangente
Combinando todos os conceitos acima, vamos criar uma demonstração completa de sombras e efeitos.
Exemplo
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Sombras e Efeitos - Exemplo Abrangente</title>
<script src="https://cdn.tailwindcss.com"></script>
</head>
<body class="min-h-screen bg-gray-100 p-8">
<div class="max-w-4xl mx-auto space-y-8">
<!-- Grade de cards -->
<div class="grid grid-cols-1 md:grid-cols-3 gap-6">
<!-- Card básico -->
<div class="bg-white rounded-xl shadow-md overflow-hidden hover:shadow-xl transition-shadow duration-300">
<div class="h-48 bg-gradient-to-br from-blue-400 to-blue-600 relative">
<div class="absolute inset-0 bg-black opacity-20"></div>
<div class="absolute bottom-4 left-4">
<span class="bg-white/90 text-blue-600 px-3 py-1 rounded-full text-sm font-medium">Tag</span>
</div>
</div>
<div class="p-6">
<h3 class="font-semibold text-lg mb-2">Card Básico</h3>
<p class="text-gray-600 text-sm">Efeito de hover usando shadow-md e hover:shadow-xl</p>
</div>
</div>
<!-- Card com gradiente -->
<div class="bg-gradient-to-br from-purple-500 to-pink-500 rounded-xl shadow-lg overflow-hidden hover:shadow-2xl transition-all duration-300 hover:-translate-y-1">
<div class="p-6 text-white">
<div class="w-12 h-12 bg-white/20 rounded-lg flex items-center justify-center mb-4 drop-shadow">
<span class="text-2xl">🎨</span>
</div>
<h3 class="font-semibold text-lg mb-2">Card com Gradiente</h3>
<p class="opacity-90 text-sm">Fundo em gradiente, sombra e animação ao passar o mouse</p>
</div>
</div>
<!-- Card escuro -->
<div class="bg-gray-800 rounded-xl shadow-xl overflow-hidden">
<div class="p-6 text-white">
<div class="flex items-center gap-4 mb-4">
<img src="https://picsum.photos/50/50" alt="Avatar" class="w-12 h-12 rounded-full ring-2 ring-purple-500">
<div>
<div class="font-semibold">Nome de Usuário</div>
<div class="text-gray-400 text-sm">@username</div>
</div>
</div>
<p class="text-gray-300 text-sm">Card com tema escuro e borda de avatar estilo ring</p>
</div>
</div>
</div>
<!-- Banner com modo de mesclagem -->
<div class="relative h-64 rounded-2xl overflow-hidden">
<div class="absolute inset-0 bg-cover bg-center" style="background-image: url('https://picsum.photos/800/300')"></div>
<div class="absolute inset-0 bg-gradient-to-r from-blue-600 to-purple-600 mix-blend-multiply"></div>
<div class="relative h-full flex flex-col items-center justify-center text-white text-center px-4">
<h2 class="text-4xl font-bold mb-4 drop-shadow-lg">Modos de Mesclagem Criativos</h2>
<p class="text-xl opacity-90 drop-shadow">Efeito de sobreposição de imagem usando mix-blend-multiply</p>
</div>
</div>
<!-- Empilhamento de opacidade -->
<div class="bg-white rounded-xl shadow-lg p-6">
<h3 class="font-semibold mb-4">Empilhamento de Opacidade</h3>
<div class="relative h-48 bg-gradient-to-r from-gray-100 to-gray-200 rounded-lg overflow-hidden">
<div class="absolute left-8 top-8 w-32 h-32 bg-blue-500 rounded-lg shadow-lg opacity-100"></div>
<div class="absolute left-16 top-16 w-32 h-32 bg-blue-500 rounded-lg shadow-lg opacity-75"></div>
<div class="absolute left-24 top-24 w-32 h-32 bg-blue-500 rounded-lg shadow-lg opacity-50"></div>
<div class="absolute left-32 top-32 w-32 h-32 bg-blue-500 rounded-lg shadow-lg opacity-25"></div>
</div>
</div>
<!-- Sombras de ícones -->
<div class="bg-gradient-to-br from-gray-800 to-gray-900 rounded-xl shadow-2xl p-8">
<div class="flex justify-center gap-8">
<div class="text-center">
<div class="text-5xl drop-shadow-lg mb-2">🏠</div>
<div class="text-gray-400 text-sm">Início</div>
</div>
<div class="text-center">
<div class="text-5xl drop-shadow-lg mb-2">👤</div>
<div class="text-gray-400 text-sm">Usuário</div>
</div>
<div class="text-center">
<div class="text-5xl drop-shadow-lg mb-2">⚙️</div>
<div class="text-gray-400 text-sm">Configurações</div>
</div>
<div class="text-center">
<div class="text-5xl drop-shadow-lg mb-2">📊</div>
<div class="text-gray-400 text-sm">Dados</div>
</div>
</div>
</div>
</div>
</body>
</html>
CSS Tradicional vs Tailwind A abordagem tradicional requer escrever CSS extenso para alcançar sombras de cards, banners com modos de mesclagem, empilhamento de opacidade e outros efeitos, enquanto o Tailwind realiza tudo isso diretamente no HTML usando classes utilitárias de sombra, opacidade e modo de mesclagem.
❓ Perguntas Frequentes
P: Qual é a diferença entre box-shadow e drop-shadow? R:
box-shadow(shadow-) cria uma sombra retangular, adequada para formas regulares.drop-shadow(drop-shadow-) segue o canal alfa do elemento, tornando-o ideal para formas irregulares (PNGs, SVGs).drop-shadowtem desempenho ligeiramente inferior.
P: Como crio um estado desabilitado para um elemento? R: Use a combinação
opacity-50 cursor-not-allowed.opacity-50torna o elemento semi-transparente, ecursor-not-allowedexibe um cursor de proibido. Adicionepointer-events-nonepara desabilitar completamente a interação.
P: mix-blend-mode afeta elementos filhos? R: Sim.
mix-blend-modeafeta como o elemento inteiro e seus filhos se mesclam com o conteúdo abaixo. Se você quer afetar apenas o fundo, separe o fundo e o conteúdo em camadas diferentes.
P: Como defino a opacidade da cor da sombra? R: Use a sintaxe
shadow-blue-500/50./50significa 50% de opacidade. Você também pode usar valores comoshadow-blue-500/25(25% de opacidade). A cor padrão da sombra é preto.
📖 Resumo
shadow-*define box-shadow, fornecendo múltiplos tamanhos deshadow-smashadow-2xlshadow-innercria uma sombra interna,shadow-noneremove a sombrashadow-blue-500/50personaliza a cor e opacidade da sombraopacity-*define a transparência geral do elemento, variando de 0 a 100mix-blend-*define modos de mesclagem, controlando como os elementos se mesclam com o conteúdo subjacentedrop-shadow-*adiciona sombras via propriedade filter, ideal para formas irregulares
📝 Exercícios
-
⭐ Crie um componente de card usando
shadow-mdehover:shadow-xlpara um efeito de sombra ao passar o mouse -
⭐⭐ Crie uma galeria de imagens usando
drop-shadow-lgpara sombras de imagens eopacity-*para um efeito de fade-in ao passar o mouse -
⭐⭐⭐ Crie um componente de banner usando uma imagem de fundo + sobreposição de gradiente
mix-blend-multiply+ sombra de textodrop-shadow-lgpara um efeito visual profissional



