Claymorphism
Une carte en pâte à modeler de 260 × 278 px : fond pastel en dégradé, ombre interne claire en haut à gauche et sombre en bas à droite, grands arrondis de 28 px, icône et bouton violets à ombre colorée ; au survol, la carte se soulève de 4 px et son ombre s'allonge, le bouton grossit de 5 %. 100 % CSS.
Mis à jour le
Cet effet fait partie d'Effect.Labs — 840 effets vanilla, une partie gratuite, une partie premium. Glassmorphism comprend 47 effets, dont 6 gratuits. Découvrir la catégorie →
3 exemples d'usage



Comment ça marche
Le claymorphisme inverse le neumorphisme : au lieu d'une surface creusée dans le fond, un objet bombé posé dessus. La carte .neu-clay-card (260 px, padding: 28px, border-radius: 28px, colonne flex centrée avec 14 px d'écart) cumule trois ombres : une ombre portée rgba(0,0,0,.12) 8px 8px 20px qui la détache du fond, une ombre interne sombre rgba(0,0,0,.06) -4px -4px 8px inset qui assombrit son bord bas-droit, et une ombre interne blanche rgba(255,255,255,.8) 4px 4px 8px inset qui éclaire son bord haut-gauche — c'est ce double reflet intérieur qui donne le volume « pâte à modeler ». Le fond est un dégradé pastel 135deg #f0e6ff → #e8d5f5, cerné d'une bordure blanche à 60 % de 2 px. L'icône (64 × 64 px, rayon 20 px, dégradé #8b5cf6 → #a78bfa) et le bouton (rayon 14 px, dégradé #8b5cf6 → #7c3aed) reprennent le même jeu d'ombres internes, avec une ombre portée colorée rgba(139,92,246,.3) 4px 4px 12px : un objet violet projette une ombre violette.
Le survol est en deux temps, mesuré dans Chromium 151, Firefox 153 et WebKit 26.5. Sur la carte, transform: translateY(-4px) et une ombre portée plus longue et plus dense (12px 12px 28px à 15 %) en transition: .3s : la carte monte vers l'utilisateur. Sur le bouton, scale(1.05) au survol et scale(.98) à l'appui, en 0,2 s. Le titre est en 16 px graisse 700, #4c1d95 ; le texte en 13,1 px, #7c3aed, centré ; l'icône est un SVG en ligne de 30 px rempli de blanc. Aucun JavaScript, aucune ressource externe.
Le cadre .demo-preview déclare un fond lilas clair #ede4f8 et 32 px de marge verticale, parce que le claymorphisme vit de son ombre : sur un cadre noir #0a0a0f, l'ombre portée noire à 12 % ne se verrait pas (1,01:1 entre l'ombre et le fond, mesuré) et le soulèvement au survol se réduirait à un déplacement de 4 px sans ombre. Sur le lilas, l'ombre atteint 1,30:1 à son point le plus sombre et la carte se détache. Rien n'est imposé à body : sur votre page, posez la carte sur un fond clair, de préférence pastel.
Accessibilité
- Contraste : le titre
#4c1d95mesure 9,1:1 en haut de la carte et 8,0:1 en bas. Le texte#7c3aedfait 4,7:1 sur#f0e6ffmais 4,1:1 sur#e8d5f5, l'extrémité basse du dégradé, là où il se trouve : passez-le en#6d28d9(5,2:1). Le texte blanc du bouton mesure 4,2:1 sur#8b5cf6et 5,7:1 sur#7c3aed: en 13,6 px graisse 600, la moitié claire est sous le seuil de 4,5:1 —#7c3aed → #6d28d9règle la question. - Clavier : le bouton est un vrai
<button>, atteignable au Tab, avec l'anneau de focus du navigateur. La carte, elle, ne réagit qu'à la souris : elle portecursor: pointersans être un lien ni un bouton. Si toute la carte doit être cliquable, mettez le lien sur le titre et étendez sa zone (::afterenposition: absolute; inset: 0), puis ajoutez.neu-clay-card:focus-withinà la règle du survol pour que la carte se soulève aussi au clavier. - Action du bouton : le bouton n'a ni
typeni gestionnaire. Placé dans un formulaire, il l'envoie (typesubmitpar défaut) ; ailleurs, il ne fait rien. Ajouteztype="button"et votre clic, ou remplacez-le par un<a href>s'il mène à une page. L'icône SVG n'a pas de texte : laissez-luiaria-hidden="true"(fait dans les scènes) ou donnez-lui un<title>si elle porte un sens. - Mouvement : 4 px de montée et 5 % d'agrandissement, uniquement au survol, sans boucle. C'est sous les seuils qui gênent les personnes sensibles au mouvement ; pour respecter quand même la préférence :
@media (prefers-reduced-motion: reduce) { .neu-clay-card, .neu-clay-btn { transition: none; transform: none !important } }— l'ombre plus longue suffit à signaler le survol.
Compatibilité navigateur
CSS seul : box-shadow multiples dont deux inset, linear-gradient, border-radius, transform, transition, flexbox, SVG en ligne. Zéro JavaScript, zéro dépendance. Mesuré collé dans une page vierge dans Chromium 151, Firefox 153 et le WebKit 26.5 de Playwright : mêmes ombres calculées au repos et au survol, même translateY(-4px). Le titre demande Inter ; sans elle, le navigateur prend sa police sans empattement par défaut.
Sur écran tactile, il n'y a pas de survol : la carte garde son ombre de repos, ce qui suffit à la lire comme un objet ; le scale(.98) du bouton à l'appui reste visible. Dans un navigateur sans transition, les changements se font d'un coup, sans perte d'information.
Le code
Structure HTML à coller dans votre page (le CSS + JS sont inclus avec Premium) :
<div class="demo-preview">
<div class="neu-clay-scene">
<div class="neu-clay-card">
<div class="neu-clay-icon">
<svg viewBox="0 0 24 24"><path d="…"></path></svg>
</div>
<h3>…</h3>
<p>…</p>
<button class="neu-clay-btn">…</button>
</div>
</div>
</div>
Le code complet HTML + CSS + JS de Claymorphism, prêt à coller — et les 840 effets. Ou 299 € TTC une fois, accès à vie.
Personnaliser
Options passées à l'API ou attributs data-* :
| Option / propriété | Défaut | Effet |
|---|---|---|
Teinte de la carte (CSS — .neu-clay-card { background: linear-gradient(135deg, #f0e6ff, #e8d5f5) }) |
lilas #f0e6ff → #e8d5f5 | Gardez deux pastels proches (écart de 5 à 8 % de luminosité) : un dégradé plus marqué casse l'impression de matière unie. Changez la couleur du texte en même temps et vérifiez 4,5:1 sur la teinte la plus foncée. |
Couleur d'accent (CSS — dégradés de .neu-clay-icon et .neu-clay-btn, et leur ombre rgba(139,92,246,.3)) |
violet #8b5cf6 → #a78bfa / #7c3aed | Changez le dégradé ET la couleur de l'ombre portée : une ombre restée violette sous un bouton vert trahit le trucage. Vert et bleu des scènes : rgba(22,163,74,.3), rgba(37,99,235,.3). |
Volume (CSS — ombres inset de la carte : -4px -4px 8px à 6 %, 4px 4px 8px blanc à 80 %) |
4 px / 8 px de flou | 6 px / 12 px rendent la carte plus bombée ; au-delà, le reflet blanc empiète sur le contenu. Sans ces deux ombres internes, il ne reste qu'une carte pastel ordinaire. |
Arrondis (CSS — border-radius : carte 28 px, icône 20 px, bouton 14 px) |
28 / 20 / 14 px | Le style vit des grands rayons : gardez la carte au-dessus de 24 px. Un rayon d'icône à 50 % donne une pastille ronde, toujours cohérente. |
Survol (CSS — .neu-clay-card:hover { transform: translateY(-4px) }, .neu-clay-btn:hover { transform: scale(1.05) }) |
−4 px en 0,3 s · ×1,05 en 0,2 s | −6 px avec une ombre de 16 px 16 px 32 px pour un effet plus joueur ; supprimez la règle de la carte si elle n'est pas cliquable, pour ne pas promettre une action. |
Fond de la page (CSS — .demo-preview { background: #ede4f8 }) |
#ede4f8 (lilas clair), marge verticale 32 px | Tout fond clair convient ; un pastel voisin de la carte renforce l'effet. Sur un fond foncé, l'ombre portée disparaît (mesuré 1,01:1 sur #0a0a0f). |
FAQ
rgba(139,92,246,.35) 0 10px 30px) — le volume vient alors surtout des ombres internes.<button> sans type ni gestionnaire, prêt à recevoir votre action. Ajoutez type="button" et un écouteur de clic, ou remplacez-le par un lien <a> en gardant la classe neu-clay-btn — le style s'applique à l'identique.