当前位置:首页 > JavaScript

js实现banner

2026-01-30 17:13:01JavaScript

实现基础Banner轮播

使用原生JavaScript实现基础Banner轮播功能,以下是核心实现方式:

const banner = document.getElementById('banner');
const images = ['img1.jpg', 'img2.jpg', 'img3.jpg'];
let currentIndex = 0;

function showNextImage() {
  currentIndex = (currentIndex + 1) % images.length;
  banner.style.backgroundImage = `url(${images[currentIndex]})`;
}

setInterval(showNextImage, 3000);

添加过渡动画效果

为轮播添加平滑的过渡效果,提升用户体验:

banner.style.transition = 'background-image 0.5s ease-in-out';

实现导航控制按钮

添加左右箭头和指示点导航控制:

js实现banner

const prevBtn = document.createElement('div');
prevBtn.className = 'prev-btn';
prevBtn.addEventListener('click', () => {
  currentIndex = (currentIndex - 1 + images.length) % images.length;
  updateBanner();
});

const nextBtn = document.createElement('div');
nextBtn.className = 'next-btn';
nextBtn.addEventListener('click', () => {
  currentIndex = (currentIndex + 1) % images.length;
  updateBanner();
});

function updateBanner() {
  banner.style.backgroundImage = `url(${images[currentIndex]})`;
  updateDots();
}

添加指示点导航

创建与图片数量对应的指示点:

const dotsContainer = document.createElement('div');
dotsContainer.className = 'dots-container';

images.forEach((_, index) => {
  const dot = document.createElement('span');
  dot.className = 'dot';
  dot.addEventListener('click', () => {
    currentIndex = index;
    updateBanner();
  });
  dotsContainer.appendChild(dot);
});

function updateDots() {
  const dots = document.querySelectorAll('.dot');
  dots.forEach((dot, index) => {
    dot.classList.toggle('active', index === currentIndex);
  });
}

响应式设计处理

确保Banner在不同设备上正常显示:

js实现banner

function resizeBanner() {
  banner.style.height = `${window.innerWidth * 0.4}px`;
}

window.addEventListener('resize', resizeBanner);
resizeBanner();

自动播放与暂停功能

添加鼠标悬停暂停功能:

let intervalId = setInterval(showNextImage, 3000);

banner.addEventListener('mouseenter', () => {
  clearInterval(intervalId);
});

banner.addEventListener('mouseleave', () => {
  intervalId = setInterval(showNextImage, 3000);
});

完整CSS示例

配套的基础CSS样式:

#banner {
  width: 100%;
  background-size: cover;
  background-position: center;
  position: relative;
}

.prev-btn, .next-btn {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  cursor: pointer;
  padding: 16px;
  color: white;
  font-weight: bold;
  font-size: 18px;
  user-select: none;
}

.prev-btn { left: 10px; }
.next-btn { right: 10px; }

.dots-container {
  position: absolute;
  bottom: 10px;
  left: 50%;
  transform: translateX(-50%);
}

.dot {
  display: inline-block;
  width: 12px;
  height: 12px;
  margin: 0 4px;
  border-radius: 50%;
  background-color: rgba(255,255,255,0.5);
  cursor: pointer;
}

.dot.active {
  background-color: white;
}

以上代码实现了一个完整的响应式Banner轮播组件,包含自动播放、导航控制、过渡动画等核心功能。可以根据实际需求进一步扩展和定制。

标签: jsbanner
分享给朋友:

相关文章

js实现验证码

js实现验证码

使用Canvas生成图形验证码 在HTML中创建一个Canvas元素用于绘制验证码。通过JavaScript随机生成数字或字母组合,并添加干扰线、噪点等干扰元素增强安全性。 <canvas i…

js 实现vue

js 实现vue

Vue.js 的基本实现 在 JavaScript 中实现 Vue.js 的核心功能,可以通过数据绑定、响应式系统和虚拟 DOM 来实现。以下是实现 Vue.js 核心功能的简化版本。 数据响应式系…

js实现类

js实现类

JavaScript 实现类的几种方式 JavaScript 是一种基于原型的语言,但在 ES6 之后引入了 class 语法糖,使得实现类更加直观。以下是几种常见的实现方式: 使用构造函数 传统的…

js实现vr

js实现vr

使用WebXR API实现VR体验 WebXR是浏览器中实现VR和AR体验的标准API,它取代了早期的WebVR。现代浏览器如Chrome、Edge和Firefox已支持WebXR。 // 初始化W…

js实现防洪

js实现防洪

防抖(Debounce)实现 防抖的核心思想是在事件触发后延迟执行回调函数,若在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口调整等场景。 function debounce(f…

js实现投球

js实现投球

实现投球动画的基本思路 使用JavaScript和CSS动画结合的方式模拟投球效果。核心是通过改变元素的位置、旋转和缩放属性,配合定时器或CSS过渡实现平滑动画。 创建基础HTML结构 <di…