首页 话题 小组 问答 好文 用户 我的社区 域名交易 唠叨

[分享]css中带进度条的轮播图

发布于 2024-11-11 19:08:20
0
11

CSS中带进度条的轮播图是一种非常流行的界面效果,它能够让用户更清晰地知道轮播图中每个元素的展示时间和位置。下面我们就来学习一下如何实现这样一个效果。/ 接下来是 CSS 代码 / .sliderco...

CSS中带进度条的轮播图是一种非常流行的界面效果,它能够让用户更清晰地知道轮播图中每个元素的展示时间和位置。下面我们就来学习一下如何实现这样一个效果。

/* 接下来是 CSS 代码 */

.slider-container {
  /* 设置轮播图容器的样式 */
  width: 100%;
  max-width: 600px;
  height: 400px;
  margin: auto;
  position: relative;
  overflow: hidden;
}

.slider-container .slider-wrapper {
  /* 设置轮播图外层容器的样式 */
  display: flex;
  width: 300%;
  height: 100%;
  position: absolute;
  transition: transform 0.5s ease-in-out;
}

.slider-container .slider-item {
  /* 设置轮播图项的样式 */
  width: 33.3333%;
  height: 100%;
  background-color: #ccc;
  flex-shrink: 0;
  position: relative;
}

.slider-container .slider-item img {
  /* 设置轮播图元素的样式 */
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.slider-container .slider-progress-bar {
  /* 设置进度条的样式 */
  height: 5px;
  width: 100%;
  position: absolute;
  bottom: 0;
  left: 0;
  background-color: #ddd;
}

.slider-container .slider-progress-bar .slider-progress {
  /* 设置进度条递进的样式 */
  height: 100%;
  width: 0;
  background-color: #ff5722;
}

/* 接下来是 JS 代码 */

const sliderWrapper = document.querySelector('.slider-wrapper');
const sliderItems = document.querySelectorAll('.slider-item');
const progressBar = document.querySelector('.slider-progress');

let index = 0;
let inProgress = false;

function nextSlide() {
  if (!inProgress) {
    inProgress = true;
    index++;
    if (index >= sliderItems.length) {
      index = 0;
    }
    sliderWrapper.style.transition = 'transform 0.5s ease-in-out';
    sliderWrapper.style.transform = `translateX(-${index * 100 / 3}%)`;
    progressBar.style.width = '0';
    setTimeout(() => {
      inProgress = false;
      progressBar.style.transition = 'width 5s linear';
      progressBar.style.width = '100%';
    }, 500);
  }
}

setInterval(nextSlide, 5000); 

以上就是带进度条的轮播图的全部代码,通过这段代码,我们可以轻松地实现一个具有进度条样式的轮播图,并控制它的轮播速度和动画方式。

评论
一个月内的热帖推荐
91云脑
Lv.1普通用户

62849

帖子

14

小组

291

积分

赞助商广告
站长交流