🚀 Template de Démarrage
📋 Copier le Code
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>ShopResponsive - E-commerce Adaptatif</title>
<style>
/* Reset et base */
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: system-ui, -apple-system, sans-serif;
line-height: 1.6;
color: #333;
}
/* Container responsive */
.container {
width: min(90%, 1200px);
margin: 0 auto;
padding: 0 clamp(1rem, 4vw, 2rem);
}
/* Header responsive */
.header {
background: white;
box-shadow: 0 2px 10px rgba(0,0,0,0.1);
position: sticky;
top: 0;
z-index: 100;
}
.nav {
/* TODO: Flex layout pour header responsive */
display: flex;
justify-content: space-between;
align-items: center;
padding: 1rem 0;
}
.nav-menu {
/* TODO: Navigation qui se cache sur mobile */
display: none;
}
.hamburger {
/* TODO: Menu hamburger pour mobile */
display: block;
background: none;
border: none;
font-size: 1.5rem;
cursor: pointer;
}
/* Hero section */
.hero {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
color: white;
text-align: center;
padding: clamp(3rem, 8vw, 6rem) 0;
}
.hero h1 {
/* TODO: Typographie fluide avec clamp */
font-size: clamp(2rem, 5vw, 3.5rem);
margin-bottom: 1rem;
}
.hero p {
font-size: clamp(1rem, 2.5vw, 1.25rem);
margin-bottom: 2rem;
opacity: 0.9;
}
.cta-button {
/* TODO: Bouton responsive */
display: inline-block;
background: white;
color: #667eea;
padding: clamp(0.75rem, 2vw, 1rem) clamp(1.5rem, 4vw, 2rem);
text-decoration: none;
border-radius: 50px;
font-weight: bold;
transition: transform 0.2s ease;
}
/* Grille produits */
.products-section {
padding: clamp(3rem, 6vw, 5rem) 0;
}
.products-grid {
/* TODO: Grille adaptive sans media queries */
display: grid;
grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
gap: clamp(1rem, 3vw, 2rem);
margin-top: 2rem;
}
.product-card {
background: white;
border-radius: 12px;
overflow: hidden;
box-shadow: 0 4px 6px rgba(0,0,0,0.1);
transition: transform 0.2s ease;
}
.product-card:hover {
transform: translateY(-4px);
}
.product-image {
width: 100%;
height: 200px;
object-fit: cover;
}
.product-info {
padding: 1.5rem;
}
/* Media Queries */
@media (min-width: 768px) {
.nav-menu {
display: flex;
gap: 2rem;
}
.hamburger {
display: none;
}
.hero {
text-align: left;
}
/* TODO: Layout desktop avec sidebar filtres */
}
@media (min-width: 1024px) {
.main-layout {
display: grid;
grid-template-columns: 250px 1fr;
gap: 2rem;
}
.filters-sidebar {
background: #f8f9fa;
padding: 2rem;
border-radius: 12px;
height: fit-content;
position: sticky;
top: 100px;
}
}
/* Formulaire responsive */
.contact-form {
max-width: 600px;
margin: 0 auto;
}
.form-group {
display: grid;
gap: 1rem;
margin-bottom: 1.5rem;
}
.form-group.two-cols {
grid-template-columns: 1fr;
}
@media (min-width: 768px) {
.form-group.two-cols {
grid-template-columns: 1fr 1fr;
}
}
.form-input {
width: 100%;
padding: 0.75rem;
font-size: max(16px, 1rem); /* Évite le zoom iOS */
border: 2px solid #e2e8f0;
border-radius: 8px;
transition: border-color 0.2s ease;
}
.form-input:focus {
outline: none;
border-color: #667eea;
}
/* Footer responsive */
.footer {
background: #1a1a1a;
color: white;
padding: clamp(2rem, 4vw, 3rem) 0;
}
.footer-content {
display: grid;
gap: 2rem;
grid-template-columns: 1fr;
}
@media (min-width: 768px) {
.footer-content {
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
}
}
</style>
</head>
<body>
<header class="header">
<div class="container">
<nav class="nav">
<div class="logo">
<h1>ShopResponsive</h1>
</div>
<div class="nav-menu">
<a href="#">Accueil</a>
<a href="#products">Produits</a>
<a href="#contact">Contact</a>
</div>
<div class="nav-actions">
<button class="hamburger">☰</button>
<a href="#" class="cart">🛒 Panier (0)</a>
</div>
</nav>
</div>
</header>
<section class="hero">
<div class="container">
<h1>Découvrez nos Produits</h1>
<p>Une sélection unique de produits de qualité</p>
<a href="#products" class="cta-button">Voir les Produits</a>
</div>
</section>
<section id="products" class="products-section">
<div class="container">
<h2>Nos Produits</h2>
<div class="main-layout">
<aside class="filters-sidebar">
<h3>Filtres</h3>
<!-- TODO: Ajouter filtres -->
</aside>
<div class="products-grid">
<div class="product-card">
<img src="https://via.placeholder.com/300x200" alt="Produit" class="product-image" loading="lazy">
<div class="product-info">
<h3>Produit Exemple</h3>
<p>Description du produit...</p>
<div class="price">29,99 €</div>
<button>Ajouter au Panier</button>
</div>
</div>
<!-- TODO: Répéter pour plus de produits -->
</div>
</div>
</div>
</section>
<footer class="footer">
<div class="container">
<div class="footer-content">
<div>
<h4>ShopResponsive</h4>
<p>Votre boutique en ligne de confiance</p>
</div>
<div>
<h4>Liens Utiles</h4>
<ul>
<li><a href="#">À propos</a></li>
<li><a href="#">Contact</a></li>
</ul>
</div>
</div>
</div>
</footer>
<script>
// TODO: JavaScript pour menu mobile
document.querySelector('.hamburger').addEventListener('click', function() {
// Toggle menu mobile
});
</script>
</body>
</html>