پروژه فروشگاه اینترنتی با جاوااسکریپت - بخش اول: نمایش محصولات
🎯 اهداف یادگیری
- آشنایی با ساختار نمایش محصولات در صفحه وب
- یادگیری ایجاد کارت محصول با HTML و CSS
- پیادهسازی نمایش پویای محصولات با جاوااسکریپت
- افزودن قابلیتهای تعاملی به محصولات
📌 ساختار HTML محصولات
ساختار پایه برای نمایش لیست محصولات:
html
<div class="products-container"> <div class="product-card"> <img src="laptop.jpg" alt="لپ تاپ ایسوس"> <h3>لپ تاپ ایسوس ROG</h3> <p class="price">35,000,000 تومان</p> <button class="add-to-cart">افزودن به سبد خرید</button> </div> <!-- محصولات دیگر --></div>
اجزای اصلی کارت محصول:
- تصویر محصول: نمایش تصویر شاخص محصول
- عنوان محصول: نام کامل محصول به فارسی
- قیمت: قیمت به همراه واحد پول
- دکمه اقدام: دکمه افزودن به سبد خرید
📌 استایلدهی با CSS
طراحی ظاهری کارتهای محصول:
css
.products-container { display: grid; grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); gap: 1rem; padding: 1rem;}.product-card { border: 1px solid #eee; border-radius: 8px; padding: 1rem; transition: all 0.3s ease;}.product-card:hover { box-shadow: 0 5px 15px rgba(0, 0, 0, 0.1); transform: translateY(-5px);}
نکات طراحی:
- واکنشگرا: استفاده از CSS Grid برای چیدمان محصولات
- افکتهای تعاملی: افزودن hover effects برای تجربه کاربری بهتر
- سایه و گردی گوشهها: برای زیبایی ظاهری
- حاشیهها و فاصلهها: رعایت اصول spacing
📌 نمایش پویای محصولات با جاوااسکریپت
تابع نمایش محصولات به صورت پویا:
javascript
// تابع نمایش محصولاتfunction displayProducts(products) { const container = document.querySelector('.products-container'); container.innerHTML = ''; products.forEach(product => { const productElement = document.createElement('div'); productElement.className = 'product-card'; productElement.innerHTML = ` <img src="${product.image}" alt="${product.name}"> <h3>${product.name}</h3> <p class="price">${product.price.toLocaleString()} تومان</p> <button class="add-to-cart" data-id="${product.id}"> افزودن به سبد خرید </button> `; container.appendChild(productElement); });}
توابع اصلی نمایش محصولات:
- createElement: ایجاد المانهای HTML به صورت پویا
- template literals: استفاده از رشتههای قالب برای نمایش دادهها
- toLocaleString: فرمتدهی قیمت به صورت خوانا
- appendChild: اضافه کردن محصولات به صفحه
📌 افزودن تعاملات کاربری
مدیریت رویدادهای کلیک برای محصولات:
javascript
// مدیریت کلیک روی دکمه افزودن به سبد خریدfunction setupAddToCartButtons() { const buttons = document.querySelectorAll('.add-to-cart'); buttons.forEach(button => { button.addEventListener('click', () => { const productId = parseInt(button.getAttribute('data-id')); addToCart(productId); showToast('محصول به سبد خرید اضافه شد'); }); });}
تعاملات اصلی:
- افزودن به سبد خرید: مدیریت رویداد کلیک روی دکمهها
- نمایش پیام: اطلاعرسانی به کاربر پس از هر اقدام
- انیمیشنها: افزودن اثرات بصری برای تعاملات
- مدیریت وضعیت: تغییر ظاهر دکمه پس از افزودن به سبد
📌 تمرین عملی
صفحه نمایش محصولات را با ویژگیهای زیر تکمیل کنید:
javascript
// 1. افزودن قابلیت نمایش ستارههای امتیاز محصول// 2. پیادهسازی سیستم فیلتر بر اساس دستهبندی// 3. افزودن دکمه مشاهده جزئیات محصول
راهنمای تمرین:
- برای هر محصول بر اساس rating آن، ستارههای امتیاز نمایش دهید
- یک dropdown برای فیلتر محصولات بر اساس دستهبندی ایجاد کنید
- برای هر محصول دکمه "مشاهده جزئیات" اضافه کنید
- از event delegation برای مدیریت رویدادها استفاده کنید
📌 قدم بعدی
در بخش بعدی با پیادهسازی سبد خرید و مدیریت سفارشات آشنا خواهیم شد!