前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >轮播图的制作大全

轮播图的制作大全

作者头像
Insecure Fluoxetine
发布2024-07-03 11:14:46
660
发布2024-07-03 11:14:46
举报
文章被收录于专栏:CSSCSS

例如该样式:

1.Vue的方法(可实现自动轮播和左右按钮和下方原点按钮轮播)

代码语言:javascript
复制
<div id="app">
        <div class="a" ref="b" @mouseenter="MouseFun('c')" @mouseleave="MouseFun('d')">
           

            //1.图片显示盒子
            <div class="imgBox" :style="{left:`-${leftVal}px`,transition:`${ition}s`}">
                <img :src="item.imgUrl" v-for="(item,index) in imgList" :key="index" />
               
                <img :src="imgList[0].imgUrl" alt="">
            </div>

            //2.按钮
            <div class="leftBtn" @click="throttle(PrevFun)">&larr;</div>  //左按钮
            <div class="rightBtn" @click="throttle(NextFun)">&rarr;</div> //右按钮

             //3.下方选择点击按钮
            <div class="instBox">
                <div @click="instFun(index)" v-for="(item,index) in imgList.length" :key="index"
                    :class="['inst',index==imgShow?'instActv':'']">
                </div>
               
            </div>

       </div>      
</div>    
代码语言:javascript
复制
<script src="https://cdn.bootcss.com/vue/2.6.10/vue.min.js"></script>
<script type="text/javascript">
    var app = new Vue({
        el: '#app',
        data() {
            return {
                imgList: [
                    {imgUrl: "./img/新闻1.png"},
                    {imgUrl: "./img/新闻2.png"},
                    {imgUrl:"./img/新闻3.png"},
                    {imgUrl:"./img/新闻4.png"},
                    {imgUrl:"./img/新闻1.png"},
                ],
                leftVal: 0, 
                flag: true, 
                start: null, 
                imgWidth: 500, 
                ition: 0.6, 
                imgShow: 0,
            };
        },
        mounted() {

            this.可弟弟() 
            
        },
        methods: {
           
            MouseFun(type) { 
                type == '移入' ? clearTimeout(this.start) : this.可弟弟()
            },
           
            可弟弟() {
                this.start = setInterval(() => {
                    this.NextFun()
                }, 1500)
            },
           
            throttle(fun) {
                if (this.flag) {
                    this.flag = false;
                    fun(); 
                    setTimeout(() => {
                        this.flag = true;
                    }, 650); 
                }
            },
            PrevFun() {
                if (this.leftVal == 0) { 
                    this.ition = 0 
                    this.imgShow = this.imgList.length - 1
                    this.leftVal = this.imgList.length * this.imgWidth 
                    this.$nextTick(() => {	
                        setTimeout(() => { 
                            this.ition = 0.6
                            this.leftVal -= this.imgWidth
                        }, this.ition * 1000)
                    })
                } else { 
                    this.ition = 0.6
                    this.leftVal -= this.imgWidth
                    this.imgShow--
                }
            },
            NextFun() {
                if (this.leftVal == (this.imgList.length - 1) * this.imgWidth) { 
                    this.ition = 0.6
                    this.leftVal += this.imgWidth
                    this.imgShow = 0
                    this.$nextTick(() => {
                        setTimeout(() => {
                            this.ition = 0
                            this.leftVal = 0
                        }, this.ition * 1000)
                    })
                } else {
                    this.ition = 0.6
                    this.leftVal += this.imgWidth
                    this.imgShow++
                }
            },
           
            instFun(index) {
                this.ition = 0.6
                this.leftVal = index * this.imgWidth
                this.imgShow = index
            },
        }
    })

这个里面就是放置你要轮播的图片

2.纯js方法

代码语言:javascript
复制
class Carousel {
    constructor(selector) {
        this.DOM = document.querySelector(selector);
        this.init();
    }
 
    init() {
        this.slides = Array.from(this.DOM.querySelectorAll('.slide'));
        this.currentSlide = 0;
        this.interval = 3000; // 时间间隔(毫秒)
 
        // 初始化轮播
        this.goToSlide(this.currentSlide);
        setInterval(() => {
            this.nextSlide();
        }, this.interval);
 
        // 监听键盘事件
        document.addEventListener('keydown', (e) => {
            switch (e.key) {
                case 'ArrowLeft':
                    this.prevSlide();
                    break;
                case 'ArrowRight':
                    this.nextSlide();
                    break;
                default:
                    break;
            }
        });
    }
 
    goToSlide(index) {
        this.slides.forEach((slide, i) => {
            slide.style.display = i === index ? 'block' : 'none';
        });
    }
 
    nextSlide() {
        this.goToSlide((this.currentSlide + 1) % this.slides.length);
        this.currentSlide = (this.currentSlide + 1) % this.slides.length;
    }
 
    prevSlide() {
        this.goToSlide((this.currentSlide - 1 + this.slides.length) % this.slides.length);
        this.currentSlide = (this.currentSlide - 1 + this.slides.length) % this.slides.length;
    }
}
 
// 使用方法:
// 假设你的HTML结构如下:
// <div class="carousel" id="carousel">
//   <div class="slide">Slide 1</div>
//   <div class="slide">Slide 2</div>
//   <div class="slide">Slide 3</div>
// </div>
 
const carousel = new Carousel('#carousel');

你需要确保HTML结构中的轮播图容器有一个ID,并且每个幻灯片都有.slide类。这个类包含了基本的轮播逻辑,如自动播放和响应键盘事件。

3.纯css

假设html代码如下

代码语言:javascript
复制
<div class="carousel">
  <div class="carousel-item active">
    <img src="image1.jpg" alt="Image 1">
  </div>
  <div class="carousel-item">
    <img src="image2.jpg" alt="Image 2">
  </div>
  <div class="carousel-item">
    <img src="image3.jpg" alt="Image 3">
  </div>
  <!-- 指示点 -->
  <div class="carousel-indicators">
    <button data-target="0" class="active"></button>
    <button data-target="1"></button>
    <button data-target="2"></button>
  </div>
  <!-- 箭头 -->
  <div class="carousel-arrows">
    <button class="left-arrow">&#10094;</button>
    <button class="right-arrow">&#10095;</button>
  </div>
</div>

那么css如下

代码语言:javascript
复制
.carousel {
  position: relative;
  width: 100%;
  height: 300px; /* 设置轮播图的高度 */
  overflow: hidden;
}
 
.carousel-item {
  position: absolute;
  width: 100%;
  height: 100%;
  background-size: cover;
  background-position: center;
  opacity: 0;
  transition: opacity 0.5s ease-in-out;
}
 
.carousel-item.active {
  opacity: 1;
}
 
.carousel-indicators {
  position: absolute;
  bottom: 10px;
  left: 50%;
  transform: translateX(-50%);
}
 
.carousel-indicators button {
  cursor: pointer;
  width: 10px;
  height: 10px;
  border-radius: 50%;
  margin: 0 2px;
  background-color: #333;
  opacity: 0.5;
  display: inline-block;
  transition: opacity 0.5s ease-in-out;
}
 
.carousel-indicators button.active {
  opacity: 1;
}
 
.carousel-arrows {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
}
 
.carousel-arrows button {
  cursor: pointer;
  background: none;
  border: none;
  font-size: 24px;
  color: #fff;
  opacity: 0.5;
  display: none;
  transition: opacity 0.5s ease-in-out;
}
 
.carousel:hover .carousel-arrows button {
  display: block;
}

以上代码仅供学习与参考

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-06-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档