✨ Effets et animationsGratuit · 0 NahnahPar NAHNAH AI
Cartes en apparition
Grille de cartes (image, titre, texte, lien) qui apparaissent l’une après l’autre quand elles entrent dans l’écran.
Aperçu en direct
Données de démonstration (produits, menus, textes d’exemple) : dans ta boutique, ce sont les tiennes.
Photos : Unsplash / Pexels (exemples de l’aperçu, jamais inclus dans le code).
Code à copier
Fichier complet sections/nahnah-effet-apparition-cartes.liquid (Liquid, CSS et JS inclus).
{%- comment -%} NAHNAH AI · Cartes en apparition (bibliothèque Sections & effets) {%- endcomment -%}
<nn-effet-apparition class="nn-effet-apparition-cartes nn-effet-apparition-cartes--{{ section.settings.style }}" style="--nn-mh: {{ section.settings.marge_haut }}px; --nn-mb: {{ section.settings.marge_bas }}px; --nn-fond: {{ section.settings.couleur_fond }}; --nn-texte: {{ section.settings.couleur_texte }}; --nn-accent: {{ section.settings.couleur_accent }}; --nn-delai: {{ section.settings.delai }}ms; --nn-colonnes: {{ section.settings.colonnes }};">
{%- if section.settings.titre != blank or section.settings.intro != blank -%}
<div class="nn-effet-apparition-cartes__entete">
{%- if section.settings.titre != blank -%}<h2 class="nn-effet-apparition-cartes__titre">{{ section.settings.titre }}</h2>{%- endif -%}
{%- if section.settings.intro != blank -%}<p class="nn-effet-apparition-cartes__intro">{{ section.settings.intro | escape }}</p>{%- endif -%}
</div>
{%- endif -%}
<ul class="nn-effet-apparition-cartes__grille" role="list">
{%- for block in section.blocks -%}
<li class="nn-effet-apparition-cartes__carte" data-nn-apparition style="--nn-i: {{ forloop.index0 }};" {{ block.shopify_attributes }}>
{%- if block.settings.image != blank -%}
<div class="nn-effet-apparition-cartes__media">
{{ block.settings.image | image_url: width: 900 | image_tag: loading: 'lazy', widths: '360, 540, 720, 900', sizes: '(min-width: 750px) 33vw, 100vw', class: 'nn-effet-apparition-cartes__image' }}
</div>
{%- endif -%}
<div class="nn-effet-apparition-cartes__corps">
{%- if block.settings.titre != blank -%}<h3 class="nn-effet-apparition-cartes__nom">{{ block.settings.titre | escape }}</h3>{%- endif -%}
{%- if block.settings.texte != blank -%}<p class="nn-effet-apparition-cartes__texte">{{ block.settings.texte | escape }}</p>{%- endif -%}
{%- if block.settings.lien != blank -%}<a class="nn-effet-apparition-cartes__lien" href="{{ block.settings.lien }}">{{ section.settings.texte_lien | default: 'En savoir plus' | escape }}<span aria-hidden="true"> →</span></a>{%- endif -%}
</div>
</li>
{%- endfor -%}
</ul>
</nn-effet-apparition>
{% schema %}
{
"name": "Cartes en apparition",
"tag": "section",
"class": "nn-section-effet-apparition-cartes",
"max_blocks": 12,
"settings": [
{
"type": "inline_richtext",
"id": "titre",
"label": "Titre",
"default": "Ce qui fait la différence"
},
{
"type": "textarea",
"id": "intro",
"label": "Introduction",
"default": "Trois engagements simples, tenus à chaque commande."
},
{
"type": "text",
"id": "texte_lien",
"label": "Texte des liens",
"default": "En savoir plus"
},
{
"type": "header",
"content": "Apparition"
},
{
"type": "select",
"id": "style",
"label": "Style",
"options": [
{
"value": "montee",
"label": "Fondu qui monte"
},
{
"value": "zoom",
"label": "Zoom léger"
},
{
"value": "cote",
"label": "Glissement latéral"
}
],
"default": "montee"
},
{
"type": "range",
"id": "delai",
"label": "Décalage entre les cartes",
"min": 0,
"max": 300,
"step": 20,
"default": 120,
"unit": "ms"
},
{
"type": "range",
"id": "colonnes",
"label": "Colonnes sur ordinateur",
"min": 2,
"max": 4,
"step": 1,
"default": 3
},
{
"type": "header",
"content": "Couleurs"
},
{
"type": "color",
"id": "couleur_fond",
"label": "Fond",
"default": "#FFFFFF"
},
{
"type": "color",
"id": "couleur_texte",
"label": "Texte",
"default": "#0B1220"
},
{
"type": "color",
"id": "couleur_accent",
"label": "Accent",
"default": "#2EE6A8"
},
{
"type": "header",
"content": "Espacement"
},
{
"type": "range",
"id": "marge_haut",
"label": "Marge haute",
"min": 0,
"max": 120,
"step": 4,
"unit": "px",
"default": 56
},
{
"type": "range",
"id": "marge_bas",
"label": "Marge basse",
"min": 0,
"max": 120,
"step": 4,
"unit": "px",
"default": 56
}
],
"blocks": [
{
"type": "carte",
"name": "Carte",
"settings": [
{
"type": "image_picker",
"id": "image",
"label": "Image"
},
{
"type": "text",
"id": "titre",
"label": "Titre",
"default": "Titre de la carte"
},
{
"type": "textarea",
"id": "texte",
"label": "Texte",
"default": "Décris ici un avantage concret de ta boutique."
},
{
"type": "url",
"id": "lien",
"label": "Lien (facultatif)"
}
]
}
],
"presets": [
{
"name": "Cartes en apparition",
"blocks": [
{
"type": "carte",
"settings": {
"titre": "Matières choisies",
"texte": "Chaque produit est sélectionné pour sa qualité et sa durée de vie."
}
},
{
"type": "carte",
"settings": {
"titre": "Préparé avec soin",
"texte": "Les commandes sont vérifiées et emballées une par une."
}
},
{
"type": "carte",
"settings": {
"titre": "Une équipe à l’écoute",
"texte": "Une question avant ou après l’achat ? On te répond par e-mail."
}
}
]
}
]
}
{% endschema %}
{% stylesheet %}
.nn-effet-apparition-cartes {
padding: var(--nn-mh) 16px var(--nn-mb);
background: var(--nn-fond);
color: var(--nn-texte);
}
.nn-effet-apparition-cartes__sr {
position: absolute !important;
width: 1px;
height: 1px;
overflow: hidden;
clip: rect(0 0 0 0);
white-space: nowrap;
}
.nn-effet-apparition-cartes { display: block; }
.nn-effet-apparition-cartes__entete { max-width: 640px; margin: 0 auto 30px; text-align: center; }
.nn-effet-apparition-cartes__titre { margin: 0 0 8px; font-size: clamp(26px, 4.5vw, 38px); line-height: 1.2; }
.nn-effet-apparition-cartes__intro { margin: 0; font-size: 16px; line-height: 1.5; opacity: 0.75; }
.nn-effet-apparition-cartes__grille { display: grid; grid-template-columns: minmax(0, 1fr); gap: 18px; max-width: 1200px; margin: 0 auto; padding: 0; list-style: none; }
@media (min-width: 750px) { .nn-effet-apparition-cartes__grille { grid-template-columns: repeat(var(--nn-colonnes), minmax(0, 1fr)); gap: 24px; } }
.nn-effet-apparition-cartes__carte {
overflow: hidden;
border: 1px solid color-mix(in srgb, var(--nn-texte) 12%, transparent);
border-radius: 18px;
background: color-mix(in srgb, var(--nn-texte) 3%, var(--nn-fond));
transition: opacity 0.6s ease, transform 0.6s cubic-bezier(0.2, 0.8, 0.2, 1);
transition-delay: calc(min(var(--nn-i), 6) * var(--nn-delai));
}
.nn-effet-apparition-cartes__media { aspect-ratio: 4 / 3; overflow: hidden; background: color-mix(in srgb, var(--nn-accent) 20%, var(--nn-fond)); }
.nn-effet-apparition-cartes__image { display: block; width: 100%; height: 100%; object-fit: cover; }
.nn-effet-apparition-cartes__corps { padding: 18px 20px 22px; }
.nn-effet-apparition-cartes__nom { margin: 0 0 6px; font-size: 19px; line-height: 1.3; }
.nn-effet-apparition-cartes__texte { margin: 0; font-size: 15px; line-height: 1.55; opacity: 0.8; }
.nn-effet-apparition-cartes__lien { display: inline-flex; align-items: center; min-height: 44px; margin-top: 6px; color: inherit; font-weight: 700; text-decoration: underline; text-decoration-color: var(--nn-accent); text-decoration-thickness: 2px; text-underline-offset: 4px; }
.nn-effet-apparition-cartes__lien:focus-visible { outline: 3px solid var(--nn-accent); outline-offset: 2px; border-radius: 4px; }
.nn-effet-apparition-cartes[data-nn-pret] .nn-effet-apparition-cartes__carte:not([data-visible]) { opacity: 0; }
.nn-effet-apparition-cartes--montee[data-nn-pret] .nn-effet-apparition-cartes__carte:not([data-visible]) { transform: translateY(32px); }
.nn-effet-apparition-cartes--zoom[data-nn-pret] .nn-effet-apparition-cartes__carte:not([data-visible]) { transform: scale(0.92); }
.nn-effet-apparition-cartes--cote[data-nn-pret] .nn-effet-apparition-cartes__carte:not([data-visible]) { transform: translateX(-28px); }
@media (prefers-reduced-motion: reduce) {
.nn-effet-apparition-cartes, .nn-effet-apparition-cartes *, .nn-effet-apparition-cartes *::before, .nn-effet-apparition-cartes *::after {
animation: none !important;
transition: none !important;
}
}
{% endstylesheet %}
{% javascript %}
if (!customElements.get("nn-effet-apparition")) {
// Les cartes sont visibles sans JS ; cachées puis révélées seulement si l'observateur est disponible
customElements.define("nn-effet-apparition", class extends HTMLElement {
connectedCallback() {
var reduit = window.matchMedia && window.matchMedia("(prefers-reduced-motion: reduce)").matches;
if (reduit || !("IntersectionObserver" in window) || this.observateur) return;
var cartes = this.querySelectorAll("[data-nn-apparition]");
this.observateur = new IntersectionObserver(function (entrees, obs) {
entrees.forEach(function (e) {
if (!e.isIntersecting) return;
e.target.setAttribute("data-visible", "");
obs.unobserve(e.target);
});
}, { threshold: 0.15, rootMargin: "0px 0px -5% 0px" });
var obs = this.observateur;
cartes.forEach(function (carte) { obs.observe(carte); });
this.setAttribute("data-nn-pret", "");
}
disconnectedCallback() {
if (this.observateur) this.observateur.disconnect();
this.observateur = null;
}
});
}
{% endjavascript %}
Licence NAHNAH AI : utilisation libre dans tes boutiques (y compris commerciales), modification permise, revente de l’élément seul interdite.
Prompt à copier
À coller dans Claude ou ChatGPT avec le fichier téléchargé (ou le code copié) : l’assistant t’aide à l’installer et à l’adapter à ta marque.
Tu es un expert des thèmes Shopify Online Store 2.0. Aide-moi à installer puis à adapter à ma marque cet élément gratuit de la bibliothèque NAHNAH AI.
Élément : « Cartes en apparition » (Effets et animations)
Description : Grille de cartes (image, titre, texte, lien) qui apparaissent l’une après l’autre quand elles entrent dans l’écran.
Page de l’élément (aperçu en direct) : https://ai.nahnah.shop/bibliotheque-shopify/effet-apparition-cartes
Fichier : nahnah-effet-apparition-cartes.liquid (bouton « Télécharger » de la page) ou le code copié avec le bouton « Copier » : je te le joins ou je le colle après ce message.
Emplacement dans le thème : sections/nahnah-effet-apparition-cartes.liquid (Liquid, puis {% stylesheet %} et {% javascript %}, dans ce seul fichier).
Étapes d’installation :
1. Dans Shopify : Boutique en ligne → Thèmes → bouton « … » du thème → Modifier le code.
2. Dossier « sections » → « Ajouter une section » (ou « Nouveau fichier ») → nomme-la « nahnah-effet-apparition-cartes ».
3. Efface le contenu proposé, colle le code de l’onglet Liquid (fichier complet), puis Enregistrer.
4. Ouvre Personnaliser → Ajouter une section → choisis-la, règle les textes et les couleurs, puis Enregistrer.
Ce que j’attends de toi :
- Guide-moi pas à pas dans Shopify : Boutique en ligne → Thèmes → « … » → Modifier le code → dossier sections → Ajouter une section, puis Personnaliser → Ajouter une section.
- Propose-moi d’adapter les couleurs, les textes et les liens à ma marque : demande d’abord mes couleurs (codes hexadécimaux), mon ton et mes liens.
- Garde le bloc {% schema %} et tous ses réglages (identifiants, types, presets) : je dois pouvoir tout régler ensuite dans l’éditeur de thème.
- Rends-moi le fichier complet modifié, prêt à coller, sans faux avis, fausse urgence ni chiffre inventé.
Si tu as le connecteur NAHNAH AI (MCP), récupère directement le code exact avec l’outil obtenir_code_element (id : effet-apparition-cartes).Installer dans ma boutique
En un clic, la section est ajoutée à un thème de ta boutique Shopify connectée (un thème non publié par défaut).
Chargement de tes boutiques…
Installer dans Shopify
- Dans Shopify : Boutique en ligne → Thèmes → bouton « … » du thème → Modifier le code.
- Dossier « sections » → « Ajouter une section » (ou « Nouveau fichier ») → nomme-la « nahnah-effet-apparition-cartes ».
- Efface le contenu proposé, colle le code de l’onglet Liquid (fichier complet), puis Enregistrer.
- Ouvre Personnaliser → Ajouter une section → choisis-la, règle les textes et les couleurs, puis Enregistrer.
Installer via le MCP
Depuis Claude, Claude Code ou ChatGPT connecté à NAHNAH AI, demande : « Donne-moi le code de l’élément effet-apparition-cartes de la bibliothèque NAHNAH AI et les étapes pour l’installer ». L’assistant récupère le code et les étapes (outil obtenir_code_element), gratuitement.
Boutique connectée à NAHNAH AI : l’assistant peut aussi l’installer directement (outil installer_element).
Connecter le MCP