Maison >interface Web >js tutoriel >Conception et mise en œuvre de cartes dans le développement Web moderne
Les cartes sont l'un des composants les plus polyvalents de la conception Web moderne. Ils sont utilisés pour présenter des informations de manière concise et visuellement attrayante, depuis les produits des boutiques en ligne jusqu'aux articles sur les blogs. Dans ce guide, nous explorerons différentes implémentations et bonnes pratiques.
Une carte typique se compose de plusieurs éléments :
<div> <h2> Implementaciones </h2> <h3> 1. Card Básica con CSS </h3> <pre class="brush:php;toolbar:false">.card { width: 300px; border-radius: 8px; overflow: hidden; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); transition: transform 0.2s ease; } .card:hover { transform: translateY(-4px); } .card-image { width: 100%; height: 200px; object-fit: cover; } .card-content { padding: 16px; } .card-title { margin: 0 0 8px; font-size: 1.25rem; } .card-description { color: #666; line-height: 1.5; } .card-footer { display: flex; justify-content: space-between; align-items: center; padding-top: 16px; margin-top: 16px; border-top: 1px solid #eee; }
<div> <h3> 3. Componente React con TypeScript </h3> <pre class="brush:php;toolbar:false">interface CardProps { image: string; title: string; description: string; action?: () => void; meta?: string; } const Card: React.FC<cardprops> = ({ image, title, description, action, meta }) => { return ( <div classname="card"> <img src="%7Bimage%7D" alt="{title}" classname="card-image" loading="lazy"> <div classname="card-content"> <h2 classname="card-title">{title}</h2> <p classname="card-description">{description}</p> <div classname="card-footer"> {action && ( <button onclick="{action}" classname="card-button"> Ver más </button> )} {meta && <span classname="card-meta">{meta}</span>} </div> </div> </div> ); }; </cardprops>
<template> <div> <h2> Patrones de Diseño </h2> <h3> 1. Card Grid Responsiva </h3> <pre class="brush:php;toolbar:false">.card-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 24px; padding: 24px; }
.card-image-container { position: relative; padding-top: 56.25%; /* 16:9 Aspect Ratio */ } .card-image { position: absolute; top: 0; left: 0; width: 100%; height: 100%; object-fit: cover; }
.card-skeleton { animation: pulse 1.5s infinite; } @keyframes pulse { 0% { opacity: 0.6; } 50% { opacity: 1; } 100% { opacity: 0.6; } }
<div> <h2> Mejores Prácticas </h2> <ol> <li> <strong>Optimización de Imágenes</strong> </li> </ol> <pre class="brush:php;toolbar:false">import Image from 'next/image'; <image src="%7BimageUrl%7D" alt="{title}" width="{300}" height="{200}" placeholder="blur" blurdataurl="{thumbnailUrl}"></image>
const handleImageError = (e: React.SyntheticEvent<htmlimageelement>) => { e.currentTarget.src = '/placeholder.jpg'; }; <img src="%7BimageUrl%7D" onerror="{handleImageError}" alt="{title}"> </htmlimageelement>
.card-title { overflow: hidden; text-overflow: ellipsis; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; }
/* Hover Effects */ .card { transition: all 0.3s ease; } .card:hover { transform: translateY(-4px); box-shadow: 0 12px 24px rgba(0, 0, 0, 0.15); } /* Click Effect */ .card:active { transform: translateY(-2px); box-shadow: 0 8px 16px rgba(0, 0, 0, 0.1); }
<img loading="lazy" src="imagen.jpg" alt="Conception et mise en œuvre de cartes dans le développement Web moderne">
useEffect(() => { const observer = new IntersectionObserver( (entries) => { entries.forEach(entry => { if (entry.isIntersecting) { // Cargar contenido } }); }, { threshold: 0.1 } ); observer.observe(cardRef.current); return () => observer.disconnect(); }, []);
Les cartes sont des éléments fondamentaux de la conception Web moderne. Une bonne mise en œuvre devrait prendre en compte :
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!