Imaginez parcourir un site Web, apercevoir un contenu intrigant juste hors de portée, avec un simple modal vous incitant à « rejoindre le club » pour un accès illimité. Ce design subtil mais efficace pique la curiosité tout en encourageant l’action. Dans ce didacticiel, nous allons créer une telle expérience en utilisant le composant Dialog de PrimeVue dans Nuxt 3, complété par un effet de fondu de contenu gracieux qui attire les utilisateurs.
Remarque : cela pourrait tout aussi bien être conçu dans Vanilla JS, ou sans utiliser PrimeVue.
Plongeons-nous dans la création de cette expérience modale captivante tout en nous concentrant sur son efficacité psychologique, en permettant aux utilisateurs de prévisualiser un extrait de contenu pour rendre l'adhésion au club irrésistible.
L'objectif est simple : lorsqu'un utilisateur n'est pas connecté, afficher un modal "Rejoindre le club" tout en estompant le contenu d'arrière-plan pour faire allusion à ce qui se trouve en dessous. Cette technique exploite la curiosité, un puissant facteur de motivation, pour encourager les inscriptions.
Créez un fichier join-the-club.vue et configurez le script et le modèle de base :
<script setup> const showLoginDialog = ref(true); // Controls the modal visibility const email = ref(''); // Holds the user's email input // Dynamic body class to manage overflow const body_class = computed(() => ({ overflow: showLoginDialog.value, })); // Join the club function (placeholder for now) const joinClub = async () => { console.log('User email:', email.value); }; // Placeholder function for sign-in click const onSigninClicked = (event) => { console.log('Sign-in clicked'); }; </script>
Ici, on définit :
En utilisant le composant Dialog de PrimeVue, nous créerons un modal élégant, non intrusif et ciblé. Le modal fournit un appel clair à l'action et simplifie le processus de prise de décision.
<template> <Body :class="body_class" /> <!-- Background overlay with fade effect --> <div v-if="showLoginDialog"> <ul> <li> <strong>Content Preview</strong> : The gradient overlay provides a teaser of what’s underneath, enticing the user to explore.</li> <li> <strong>PrimeVue Dialog</strong> : This non-dismissable modal focuses the user’s attention while still being friendly.</li> </ul> <hr> <p><strong>2220+ FREE</strong> <u><b><strong>RESOURCES</strong></b></u> <strong>FOR DEVELOPERS!! ❤️</strong> ?? <strong><sub><strong>(updated daily)</strong></sub></strong></p> <blockquote> <p>1400+ Free HTML Templates<br><br> 351+ Free News Articles<br><br> 67+ Free AI Prompts<br><br> 315+ Free Code Libraries<br><br> 52+ Free Code Snippets & Boilerplates for Node, Nuxt, Vue, and more!<br><br> 25+ Free Open Source Icon Libraries</p> </blockquote> <p>Visit dailysandbox.pro for free access to a treasure trove of resources!</p> <hr> <h3> Part 3: Styling for Engagement </h3> <p>Great functionality deserves great styling. Let’s add CSS to enhance the user experience.</p> <h4> Styling the Overlay and Modal </h4> <pre class="brush:php;toolbar:false"><style lang="less" scoped> .content-auth-overlay { position: fixed; top: 55px; bottom: 0; left: 0; right: 0; width: 100%; height: 100%; background: linear-gradient(to bottom, rgba(255, 255, 255, 10%), rgba(255, 255, 255, 100%)); z-index: 1000; pointer-events: all; opacity: 1; } .join-club { display: flex; align-items: center; margin-top: 30px; margin-bottom: 20px; width: 100%; @media @mobile { flex-flow: column; align-items: normal; gap: 15px; } } .email-input { font-size: 1.2rem; } .email-control { font-size: 1rem; white-space: nowrap; overflow: unset; padding: 11px; margin-left: 10px; } </style>
La fonction joinClub est le cœur de ce modal. Il gérera les soumissions par e-mail des utilisateurs et déclenchera la logique backend pour les inscriptions.
<script setup> const showLoginDialog = ref(true); // Controls the modal visibility const email = ref(''); // Holds the user's email input // Dynamic body class to manage overflow const body_class = computed(() => ({ overflow: showLoginDialog.value, })); // Join the club function (placeholder for now) const joinClub = async () => { console.log('User email:', email.value); }; // Placeholder function for sign-in click const onSigninClicked = (event) => { console.log('Sign-in clicked'); }; </script>
Maintenant, intégrez le composant join-the-club.vue dans votre application principale. Par exemple, vous pouvez l'importer et l'utiliser de manière conditionnelle en fonction de l'état d'authentification de l'utilisateur :
<template> <Body :class="body_class" /> <!-- Background overlay with fade effect --> <div v-if="showLoginDialog"> <ul> <li> <strong>Content Preview</strong> : The gradient overlay provides a teaser of what’s underneath, enticing the user to explore.</li> <li> <strong>PrimeVue Dialog</strong> : This non-dismissable modal focuses the user’s attention while still being friendly.</li> </ul> <hr> <p><strong>2220+ FREE</strong> <u><b><strong>RESOURCES</strong></b></u> <strong>FOR DEVELOPERS!! ❤️</strong> ?? <strong><sub><strong>(updated daily)</strong></sub></strong></p> <blockquote> <p>1400+ Free HTML Templates<br><br> 351+ Free News Articles<br><br> 67+ Free AI Prompts<br><br> 315+ Free Code Libraries<br><br> 52+ Free Code Snippets & Boilerplates for Node, Nuxt, Vue, and more!<br><br> 25+ Free Open Source Icon Libraries</p> </blockquote> <p>Visit dailysandbox.pro for free access to a treasure trove of resources!</p> <hr> <h3> Part 3: Styling for Engagement </h3> <p>Great functionality deserves great styling. Let’s add CSS to enhance the user experience.</p> <h4> Styling the Overlay and Modal </h4> <pre class="brush:php;toolbar:false"><style lang="less" scoped> .content-auth-overlay { position: fixed; top: 55px; bottom: 0; left: 0; right: 0; width: 100%; height: 100%; background: linear-gradient(to bottom, rgba(255, 255, 255, 10%), rgba(255, 255, 255, 100%)); z-index: 1000; pointer-events: all; opacity: 1; } .join-club { display: flex; align-items: center; margin-top: 30px; margin-bottom: 20px; width: 100%; @media @mobile { flex-flow: column; align-items: normal; gap: 15px; } } .email-input { font-size: 1.2rem; } .email-control { font-size: 1rem; white-space: nowrap; overflow: unset; padding: 11px; margin-left: 10px; } </style>
Cette conception exploite un puissant principe de curiosité. En permettant aux utilisateurs d'apercevoir une partie du contenu sous le modal, vous exploitez leur désir de découvrir ce qui leur manque. Couplée à la proposition de valeur claire dans le texte modal, cette approche encourage les utilisateurs à prendre des décisions rapides, augmentant ainsi les conversions.
Avec cette configuration, vous avez créé plus qu'un simple modal « Rejoindre le club ». Vous avez créé une expérience convaincante et réfléchie qui combine l’attrait visuel avec la psychologie des utilisateurs pour stimuler l’engagement. La boîte de dialogue PrimeVue et la superposition de dégradé fonctionnent en harmonie pour captiver votre public tout en offrant une interface intuitive et réactive.
Restez à l'écoute pour en savoir plus sur cette série alors que nous continuons à créer des fonctionnalités attrayantes qui ravissent les utilisateurs et élèvent vos applications Web !
Pour plus de conseils sur le développement Web, consultez DailySandbox et inscrivez-vous à notre newsletter gratuite pour garder une longueur d'avance !
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!