یک اسلایدر عکس پاسخگو در HTML CSS و جاوا اسکریپت ایجاد کنید

اسلایدرهای تصویر به یکی از اجزای مهم وب سایت ها تبدیل شده اند که برای نمایش جذاب چندین تصویر استفاده می شود. به عنوان یک توسعه دهنده وب مبتدی، ایجاد یک نوار لغزنده تصویر می تواند یک پروژه مفید برای درک و بهبود مفاهیم اساسی توسعه وب شما، مانند طراحی های واکنش گرا، دستکاری DOM، و شنوندگان رویداد جاوا اسکریپت باشد.
در این پست وبلاگ، من به شما نشان خواهم داد که چگونه با استفاده از HTML، CSS و جاوا اسکریپت یک اسلایدر تصویر واکنشگرا ایجاد کنید. ما از وانیلی جاوا اسکریپت برای ایجاد این اسلایدر بدون تکیه بر کتابخانه های جاوا اسکریپت خارجی مانند SwiperJs یا Owl Carousel استفاده خواهیم کرد. به این ترتیب، مبتدیان می توانند نحوه کار این اسلایدرهای تصویر و کد مورد نیاز برای ساخت آنها را بیاموزند.
در این نوار لغزنده تصویر، دو دکمه برای کشویی تصاویر وجود دارد: یکی برای بازگشت و دیگری برای حرکت به جلو. همچنین یک نوار اسکرول افقی وجود دارد که به عنوان نشانگر لغزنده عمل می کند و با کشیدن آن می توان از آن برای اسلاید تصاویر استفاده کرد. این نوار لغزنده از تمام مرورگرهای اصلی مانند کروم، فایرفاکس و اج و همچنین دستگاه های موبایل یا تبلت پشتیبانی می کند.
آموزش تصویری اسلایدر تصویر در HTML و جاوا اسکریپت
https://www.youtube.com/watch?v=PsNaoDhzQm0
اگر از یادگیری از طریق آموزش های ویدیویی لذت می برید، ویدیوی یوتیوب فوق می تواند منبع بسیار خوبی باشد. در ویدیو، من هر خط کد را توضیح دادهام و نظرات آموزندهای را در آن گنجاندهام تا روند ایجاد نوار لغزنده تصویر شما ساده و قابل پیگیری باشد.
با این حال، اگر دوست دارید پست های وبلاگ را بخوانید یا یک راهنمای گام به گام برای این پروژه می خواهید، می توانید به خواندن این پست ادامه دهید. در پایان این پست، نوار لغزنده تصویر خود را خواهید داشت که به راحتی قابل شخصی سازی و پیاده سازی در پروژه های دیگر شما است.
مراحل ایجاد اسلایدر تصویر در HTML و جاوا اسکریپت
برای ایجاد یک نوار لغزنده تصویر پاسخگو با استفاده از HTML، CSS و جاوا اسکریپت وانیلی، این دستورالعمل های گام به گام ساده را دنبال کنید:
- ابتدا یک پوشه با هر نامی که دوست دارید ایجاد کنید. سپس فایل های لازم را داخل آن بسازید.
- یک فایل به نام ایجاد کنید
index.html
به عنوان فایل اصلی خدمت کند. - یک فایل به نام ایجاد کنید
style.css
برای کد CSS - یک فایل به نام ایجاد کنید
script.js
برای کد جاوا اسکریپت - در نهایت پوشه Images را دانلود کرده و در پوشه پروژه خود قرار دهید. این پوشه حاوی تمام تصاویری است که برای این اسلایدر تصویر نیاز دارید. شما همچنین می توانید از تصاویر خود استفاده کنید.
برای شروع، کدهای HTML زیر را به خود اضافه کنید index.html
فایل. این کدها شامل تمام تگ های معنایی ضروری HTML مانند div، button، img و غیره برای نوار لغزنده تصویر هستند.
lang="en">
charset="UTF-8" />
name="viewport" content="width=device-width, initial-scale=1.0" />
Image Slider in HTML CSS and JavaScript | CodingNepal
rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Material+Symbols+Rounded:opsz,wght,FILL,GRAD@48,400,0,0" />
rel="stylesheet" href="style.css" />
"script.js" defer>
class="container">
class="slider-wrapper">
class="slider-scrollbar">
class="scrollbar-track">
class="scrollbar-thumb">
سپس کدهای CSS زیر را به خود اضافه کنید style.css
فایلی که اسلایدر تصویر شما را زیبا می کند. میتوانید با ویژگیهای مختلف CSS مانند رنگها، فونتها و پسزمینهها آزمایش کنید تا لغزنده خود را شخصیسازی کنید. اگر صفحه وب را در مرورگر خود بارگذاری کنید، می توانید نوار لغزنده تصویر خود را با یک اسکرول و یک دکمه پیکان ببینید.
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
display: flex;
align-items: center;
justify-content: center;
min-height: 100vh;
background: #f1f4fd;
}
.container {
max-width: 1200px;
width: 95%;
}
.slider-wrapper {
position: relative;
}
.slider-wrapper .slide-button {
position: absolute;
top: 50%;
outline: none;
border: none;
height: 50px;
width: 50px;
z-index: 5;
color: #fff;
display: flex;
cursor: pointer;
font-size: 2.2rem;
background: #000;
align-items: center;
justify-content: center;
border-radius: 50%;
transform: translateY(-50%);
}
.slider-wrapper .slide-button:hover {
background: #404040;
}
.slider-wrapper .slide-button#prev-slide {
left: -25px;
display: none;
}
.slider-wrapper .slide-button#next-slide {
right: -25px;
}
.slider-wrapper .image-list {
display: grid;
grid-template-columns: repeat(10, 1fr);
gap: 18px;
font-size: 0;
list-style: none;
margin-bottom: 30px;
overflow-x: auto;
scrollbar-width: none;
}
.slider-wrapper .image-list::-webkit-scrollbar {
display: none;
}
.slider-wrapper .image-list .image-item {
width: 325px;
height: 400px;
object-fit: cover;
}
.container .slider-scrollbar {
height: 24px;
width: 100%;
display: flex;
align-items: center;
}
.slider-scrollbar .scrollbar-track {
background: #ccc;
width: 100%;
height: 2px;
display: flex;
align-items: center;
border-radius: 4px;
position: relative;
}
.slider-scrollbar:hover .scrollbar-track {
height: 4px;
}
.slider-scrollbar .scrollbar-thumb {
position: absolute;
background: #000;
top: 0;
bottom: 0;
width: 50%;
height: 100%;
cursor: grab;
border-radius: inherit;
}
.slider-scrollbar .scrollbar-thumb:active {
cursor: grabbing;
height: 8px;
top: -2px;
}
.slider-scrollbar .scrollbar-thumb::after {
content: "";
position: absolute;
left: 0;
right: 0;
top: -10px;
bottom: -10px;
}
/* Styles for mobile and tablets */
@media only screen and (max-width: 1023px) {
.slider-wrapper .slide-button {
display: none !important;
}
.slider-wrapper .image-list {
gap: 10px;
margin-bottom: 15px;
scroll-snap-type: x mandatory;
}
.slider-wrapper .image-list .image-item {
width: 280px;
height: 380px;
}
.slider-scrollbar .scrollbar-thumb {
width: 20%;
}
}
در نهایت کد جاوا اسکریپت زیر را به خود اضافه کنید script.js
فایلی که اسلایدر تصویر شما را کاربردی می کند. این کد شامل شنوندگان رویداد مانند ماوس، جابجایی ماوس، پایین کشیدن ماوس، کلیک و محاسبات ریاضی است تا اسلایدر مطابق انتظار کار کند.
const initSlider = () => {
const imageList = document.querySelector(".slider-wrapper .image-list");
const slideButtons = document.querySelectorAll(".slider-wrapper .slide-button");
const sliderScrollbar = document.querySelector(".container .slider-scrollbar");
const scrollbarThumb = sliderScrollbar.querySelector(".scrollbar-thumb");
const maxScrollLeft = imageList.scrollWidth - imageList.clientWidth;
// Handle scrollbar thumb drag
scrollbarThumb.addEventListener("mousedown", (e) => {
const startX = e.clientX;
const thumbPosition = scrollbarThumb.offsetLeft;
const maxThumbPosition = sliderScrollbar.getBoundingClientRect().width - scrollbarThumb.offsetWidth;
// Update thumb position on mouse move
const handleMouseMove = (e) => {
const deltaX = e.clientX - startX;
const newThumbPosition = thumbPosition + deltaX;
// Ensure the scrollbar thumb stays within bounds
const boundedPosition = Math.max(0, Math.min(maxThumbPosition, newThumbPosition));
const scrollPosition = (boundedPosition / maxThumbPosition) * maxScrollLeft;
scrollbarThumb.style.left = `${boundedPosition}px`;
imageList.scrollLeft = scrollPosition;
}
// Remove event listeners on mouse up
const handleMouseUp = () => {
document.removeEventListener("mousemove", handleMouseMove);
document.removeEventListener("mouseup", handleMouseUp);
}
// Add event listeners for drag interaction
document.addEventListener("mousemove", handleMouseMove);
document.addEventListener("mouseup", handleMouseUp);
});
// Slide images according to the slide button clicks
slideButtons.forEach(button => {
button.addEventListener("click", () => {
const direction = button.id === "prev-slide" ? -1 : 1;
const scrollAmount = imageList.clientWidth * direction;
imageList.scrollBy({ left: scrollAmount, behavior: "smooth" });
});
});
// Show or hide slide buttons based on scroll position
const handleSlideButtons = () => {
slideButtons[0].style.display = imageList.scrollLeft <= 0 ? "none" : "flex";
slideButtons[1].style.display = imageList.scrollLeft >= maxScrollLeft ? "none" : "flex";
}
// Update scrollbar thumb position based on image scroll
const updateScrollThumbPosition = () => {
const scrollPosition = imageList.scrollLeft;
const thumbPosition = (scrollPosition / maxScrollLeft) * (sliderScrollbar.clientWidth - scrollbarThumb.offsetWidth);
scrollbarThumb.style.left = `${thumbPosition}px`;
}
// Call these two functions when image list scrolls
imageList.addEventListener("scroll", () => {
updateScrollThumbPosition();
handleSlideButtons();
});
}
window.addEventListener("resize", initSlider);
window.addEventListener("load", initSlider);
برای درک بهتر کد جاوا اسکریپت، توصیه می کنم ویدیوی آموزشی بالا را مشاهده کنید، نظرات کد را بخوانید و کد را آزمایش کنید.
نتیجه گیری و کلمات پایانی
در نتیجه، ایجاد یک نوار لغزنده تصویر پاسخگو از ابتدا با استفاده از HTML، CSS و جاوا اسکریپت وانیلی نه تنها یک تجربه یادگیری ارزشمند است، بلکه افزودنی عملی به مهارت های توسعه وب شما است. با انجام مراحل این پست، یک اسلایدر تصویر کاربردی را با موفقیت ساخته اید و اکنون می توانید به راحتی آن را مطابق با انتخاب خود شخصی سازی کنید.
به راحتی می توانید سبک ها، انتقال ها و ویژگی های مختلف را آزمایش کنید تا نوار لغزنده تصویر خود را به سطح بعدی ببرید. برای بهبود بیشتر توسعه وب خود، توصیه می کنم سعی کنید سایر تصاویر تعاملی یا اسلایدرهای کارت موجود در این وب سایت را دوباره ایجاد کنید.
اگر هنگام ایجاد اسلایدر تصویر خود با مشکلی مواجه شدید، می توانید با کلیک بر روی دکمه دانلود، فایل های کد منبع این پروژه را به صورت رایگان دانلود کنید. علاوه بر این، می توانید با کلیک بر روی دکمه View Live، یک نسخه نمایشی زنده از آن را مشاهده کنید.
نمایش نسخه نمایشی زنده
دانلود فایل های کد