Меняющиеся баннеры с адаптивностью. Баннеры конечно надо в фотошопе делать, но это я думаю и сами справитесь. Тут я сделал три разрешения с разными баннерами. чтобы точнее подгонять размер под разрешение экрана 1920px 480px 768px
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
.banner-slider {
position: relative;
width: 100%;
max-width: 1920px;
margin: 0 auto;
overflow: hidden;
border-radius: 8px;
box-shadow: 0 4px 12px rgba(0,0,0,0.2);
}
.slides-container {
position: relative;
width: 100%;
height: 300px;
}
.slide {
position: absolute;
width: 100%;
height: 100%;
opacity: 0;
transition: opacity 0.8s ease-in-out;
background-size: 100% 100%;
background-position: center;
background-repeat: no-repeat;
}
.slide.active {
opacity: 1;
z-index: 10;
}
/* Десктопные изображения */
.slide-1 { background-image: url('https://www.doctorneiro.ru/images/banners/banner_dignoz.jpg'); }
.slide-2 { background-image: url('https://www.doctorneiro.ru/images/banners/banner_lechenie.jpg'); }
.slide-3 { background-image: url('https://www.doctorneiro.ru/images/banners/banner_ras.jpg'); }
/* Мобильные изображения */
@media (max-width: 768px) {
.slides-container {
height: 300px;
}
.slide-1 { background-image: url('https://www.doctorneiro.ru/images/banners/banner_diagnoz_.jpg'); }
.slide-2 { background-image: url('https://www.doctorneiro.ru/images/banners/banner_lechenie_.jpg'); }
.slide-3 { background-image: url('https://www.doctorneiro.ru/images/banners/banner_ras_.jpg'); }
}
@media (max-width: 480px) {
.slides-container {
height: 200px;
}
.slide-1 { background-image: url('https://www.doctorneiro.ru/images/banners/banner_diagnoz_.jpg'); }
.slide-2 { background-image: url('https://www.doctorneiro.ru/images/banners/banner_lechenie_.jpg'); }
.slide-3 { background-image: url('https://www.doctorneiro.ru/images/banners/banner_ras_.jpg'); }
}
/* Кнопки навигации */
.slider-nav {
position: absolute;
bottom: 20px;
left: 50%;
transform: translateX(-50%);
display: flex;
gap: 10px;
z-index: 20;
}
.nav-dot {
width: 12px;
height: 12px;
border-radius: 50%;
background-color: rgba(255, 255, 255, 0.5);
cursor: pointer;
transition: background-color 0.3s;
border: 2px solid rgba(255, 255, 255, 0.8);
}
.nav-dot.active {
background-color: rgba(255, 255, 255, 1);
}
.slider-controls {
position: absolute;
top: 50%;
width: 100%;
display: flex;
justify-content: space-between;
transform: translateY(-50%);
z-index: 20;
}
.slider-btn {
background: rgba(0, 0, 0, 0.5);
color: white;
border: none;
padding: 20px;
cursor: pointer;
font-size: 24px;
transition: background 0.3s;
z-index: 15;
}
.slider-btn:hover {
background: rgba(0, 0, 0, 0.8);
}
</style>
<div class="banner-slider">
<div class="slides-container">
<div class="slide slide-1 active"></div>
<div class="slide slide-2"></div>
<div class="slide slide-3"></div>
</div>
<div class="slider-controls">
<button class="slider-btn prev-btn">❮</button>
<button class="slider-btn next-btn">❯</button>
</div>
<div class="slider-nav">
<span class="nav-dot active"></span>
<span class="nav-dot"></span>
<span class="nav-dot"></span>
</div>
</div>
<script>
let currentSlide = 0;
const totalSlides = 3;
let slideInterval;
const AUTO_SWITCH_TIME = 5000; // 5 секунд
// Получаем элементы
const slides = document.querySelectorAll('.slide');
const dots = document.querySelectorAll('.nav-dot');
const prevBtn = document.querySelector('.prev-btn');
const nextBtn = document.querySelector('.next-btn');
const sliderContainer = document.querySelector('.banner-slider');
// Переключение слайдов
function changeSlide(direction) {
// Скрываем текущий слайд
slides[currentSlide].classList.remove('active');
dots[currentSlide].classList.remove('active');
// Вычисляем новый индекс
currentSlide = (currentSlide + direction + totalSlides) % totalSlides;
// Показываем новый слайд
slides[currentSlide].classList.add('active');
dots[currentSlide].classList.add('active');
}
// Переход к конкретному слайду
function goToSlide(index) {
if (index === currentSlide) return;
slides[currentSlide].classList.remove('active');
dots[currentSlide].classList.remove('active');
currentSlide = index;
slides[currentSlide].classList.add('active');
dots[currentSlide].classList.add('active');
}
// Автоматическое переключение
function startAutoSlide() {
slideInterval = setInterval(() => {
changeSlide(1);
}, AUTO_SWITCH_TIME);
}
function stopAutoSlide() {
clearInterval(slideInterval);
}
// Обработчики событий
prevBtn.addEventListener('click', () => changeSlide(-1));
nextBtn.addEventListener('click', () => changeSlide(1));
dots.forEach((dot, index) => {
dot.addEventListener('click', () => goToSlide(index));
});
sliderContainer.addEventListener('mouseenter', stopAutoSlide);
sliderContainer.addEventListener('mouseleave', startAutoSlide);
// Инициализация
window.addEventListener('load', startAutoSlide);
// Для отладки - показываем какой слайд активен
console.log('Слайдер инициализирован. Текущий слайд:', currentSlide + 1);
</script>
Комментарии
Пока нет комментариев. Будьте первым!