Livrez votre produit,
pas vos bugs.
Rejoignez 2 400 équipes qui livrent plus vite avec Effect.
Bouton CSS pur avec feedback visuel au clic — dégradé indigo-violet, compression :active à 0,95×, halo hover, et icône 🔊 qui pulse via la classe .clicked.
Cet effet est gratuit — la catégorie Atmosphère en contient 57 au total, dont 10 gratuits. Effect.Labs regroupe 811 effets vanilla. Découvrir la catégorie →
Rejoignez 2 400 équipes qui livrent plus vite avec Effect.
Pro
100+ effets CSS sélectionnés chaque vendredi, gratuit.
Pas de spam. Désabonnement en 1 clic.
L'effet repose entièrement sur les transitions CSS sans une seule ligne de JavaScript dans le code fourni. Deux propriétés animent la mécanique visuelle : transform: scale(0.95) sur :active simule l'enfoncement physique du bouton en 0,15 s, et box-shadow ajoute un halo semi-transparent indigo (rgba, 40 % opacité, rayon 20 px) au survol, porté par la même transition 0,15 s.
L'icône .snd-wave (🔊) possède sa propre transition de 0,2 s. Elle grossit à scale(1,3) quand la classe .clicked est posée sur le bouton — mécanisme prévu pour être déclenché par un listener JS côté projet (btn.classList.add('clicked') puis retrait après 250 ms). Le code fourni ne contient pas ce listener : c'est deux lignes à écrire selon votre framework.
Le fond est un linear-gradient(135°) de rgb(99,102,241) (indigo-500) à rgb(168,85,247) (violet-500) posé directement sur le <button>. Le bouton est en display:flex avec gap:8px pour aligner icône et texte sans calcul de marges. border-style:none supprime la bordure native.
transform, box-shadow) s'appliquent même si l'utilisateur a demandé à réduire le mouvement. Correctif : ajoutez @media (prefers-reduced-motion: reduce) { .snd-click-btn, .snd-click-btn .snd-wave { transition: none; } }.<button> HTML natif — focusable au clavier par défaut, activable via Entrée et Espace. Aucun tabindex manuel n'est nécessaire.:focus-visible défini dans le CSS fourni : l'outline natif du navigateur s'applique. Pour WCAG 2.4.11, ajoutez .snd-click-btn:focus-visible { outline: 2px solid #818cf8; outline-offset: 3px; }.Nécessite CSS Transitions et CSS Gradients — supportés dans tous les navigateurs modernes depuis 2013. Aucune dépendance externe.
Sans support CSS Transitions, le bouton s'affiche correctement (dégradé, couleur, padding) mais sans animation — 100 % fonctionnel, juste statique.
Copiez les trois blocs dans votre page. Aucune dépendance.
<button class="snd-click-btn" id="sndClickBtn">
<span class="snd-wave">🔊</span> Click Me
</button>
.snd-click-btn {
padding: 14px 28px;
border-width: medium;
border-style: none;
border-color: currentcolor;
border-image: initial;
border-radius: 10px;
background: linear-gradient(135deg, rgb(99, 102, 241), rgb(168, 85, 247));
color: rgb(255, 255, 255);
font-size: 1rem;
font-weight: 600;
cursor: pointer;
transition: transform 0.15s, box-shadow 0.15s;
display: flex;
align-items: center;
gap: 8px;
}
.snd-click-btn:active {
transform: scale(0.95);
}
.snd-click-btn:hover {
box-shadow: rgba(99, 102, 241, 0.4) 0px 4px 20px;
}
.snd-click-btn .snd-wave {
display: inline-block;
transition: transform 0.2s;
}
.snd-click-btn.clicked .snd-wave {
transform: scale(1.3);
}
// Effet CSS pur — pas de JavaScript nécessaire
Options passées à l'API ou attributs data-* :
| Option / propriété | Défaut | Effet |
|---|---|---|
| background (CSS) | linear-gradient(135deg, rgb(99,102,241), rgb(168,85,247)) | Couleurs du dégradé — remplacez les deux valeurs rgb() par vos couleurs brand. Fonctionne aussi avec un hex ou une couleur plate. |
| border-radius (CSS) | 10px | Arrondi des coins. 0 = rectangle strict, 100px = bouton pilule. |
| padding (CSS) | 14px 28px | Taille du bouton. Augmentez pour un CTA hero (16px 40px) ou réduisez pour un bouton inline (8px 18px). |
| scale dans :active (CSS) | 0.95 | Profondeur d'enfoncement simulé. 0,93 = pression marquée, 0,98 = toucher léger. Modifiez dans la règle .snd-click-btn:active { transform: scale(...) }. |
| box-shadow dans :hover (CSS) | rgba(99,102,241,0.4) 0px 4px 20px | Couleur et intensité du halo hover. Changez le rgba() pour correspondre à votre couleur de dégradé. |
| transition (CSS) | transform 0.15s, box-shadow 0.15s | Durée des animations. 0,10 s = réactif, 0,25 s = plus doux. Modifiez les deux durées dans la propriété transition du bouton. |
| .snd-wave content (HTML) | 🔊 | Icône dans le span .snd-wave — remplacez l'emoji par une icône SVG inline. L'animation scale(1,3) s'appliquera de toute façon. |
| scale dans .clicked .snd-wave (CSS) | 1.3 | Amplitude du pulse de l'icône quand la classe .clicked est posée. 1,5 = flash prononcé, 1,15 = discret. |
Non — malgré son nom, le code fourni est entièrement CSS sans Web Audio API. Il produit un feedback visuel uniquement (compression :active + halo hover + pulse de l'icône 🔊 via .clicked). Pour ajouter un vrai son : créez un AudioContext, générez un bip court (oscillator.type = 'sine', durée 80 ms, fréquence 880 Hz) et déclenchez-le dans le listener de clic, en parallèle de classList.add('clicked').
Le CSS prévoit la règle .snd-click-btn.clicked .snd-wave { transform: scale(1.3) } mais le code inclus ne la pose pas. Ajoutez ce listener : btn.addEventListener('click', () => { btn.classList.add('clicked'); setTimeout(() => btn.classList.remove('clicked'), 250); }). Remplacez 250 par la durée de transition souhaitée.
Oui. Copiez le CSS dans votre fichier de styles (ou module CSS). Dans React, remplacez la manipulation de classList par de l'état : const [clicked, setClicked] = useState(false), passez className={clicked ? 'snd-click-btn clicked' : 'snd-click-btn'} et déclenchez setClicked(true) puis false après 250 ms dans le onClick.