轮播+点击切换


在这里插入图片描述

1s轮播切换不同页面
点击右上角不同按钮切换不同内容
鼠标移入停止轮播,鼠标离开继续轮播

html结构

    <div
      class="mainStyle"
      @mouseenter="stopScroll"
      @mouseleave="startTabScroll"
    >
      <div class="mainTitle">
        标题
        <div class="tab">
          <ul class="ul-tab">
            <li @click="changeActTab('1')" :class="{ act: currentTab === '1' }">
              1
            </li>
            <li @click="changeActTab('2')" :class="{ act: currentTab === '2' }">
              2
            </li>
            <li @click="changeActTab('3')" :class="{ act: currentTab === '3' }">
              3
            </li>
          </ul>
        </div>
      </div>
      <div class="mainCont" v-if="currentTab === '1'">
        <div class="item1"></div>
      </div>
      <div class="mainCont" v-if="currentTab === '2'">
        <div class="item2"></div>
      </div>
      <div class="mainCont" v-if="currentTab === '3'">
        <div class="item3"></div>
      </div>
    </div>

data()

  data() {
    return {
      currentTab: "1",
      tabnum: 0,
      currentTabArr: ["1", "2", "3"],
    };
  },

mounted

  mounted() {
    this.startTabScroll();
  },

methods

  methods: {
    changeActTab(tab) {
      this.currentTab = tab;
    },
    changeTabnum() {
      this.tabnum--;
      if (this.tabnum < 0) {
        this.tabnum = this.currentTabArr.length - 1;
      }
      this.currentTab = this.currentTabArr[this.tabnum];
      this.changeActTab(this.currentTab);
    },
    startTabScroll() {
      this.tabTimId = setInterval(() => {
        this.changeTabnum();
      }, 1000);
    },
    stopScroll() {
      clearInterval(this.tabTimId);
    },
  },

样式

<style lang="less">
.mainStyle {
  width: 700px;
  height: 400px;
  margin: 0 auto;
  background-color: aquamarine;
  .mainTitle {
    position: relative;
    font-size: 30px;
    .tab {
      display: flex;
      justify-content: center;
      position: absolute;
      top: 5px;
      right: 5px;
      z-index: 999;
      .ul-tab {
        border: 1px solid rgb(55, 125, 171);
        height: 28px;
        display: flex;
        li {
          padding: 0 10px;
          cursor: pointer;
          font-size: 15px;
          color: #fff;
          height: 100%;
          display: flex;
          align-items: center;
          &:hover {
            box-shadow: inset 0 0 20px rgb(55, 125, 171);
            border: 1px solid rgb(55, 125, 171);
          }
          &.act {
            box-shadow: inset 0 0 20px rgb(55, 125, 171);
            border: 1px solid rgb(55, 125, 171);
          }
        }
      }
    }
  }
  .mainCont {
    height: 100%;
    width: 100%;
    .item1 {
      height: 100%;
      width: 100%;
      background-color: burlywood;
    }
    .item2 {
      height: 100%;
      width: 100%;
      background-color: blueviolet;
    }
    .item3 {
      height: 100%;
      width: 100%;
      background-color: rgb(43, 226, 64);
    }
  }
}
</style>

完整代码

<template>
  <div class="container">
    <div
      class="mainStyle"
      @mouseenter="stopScroll"
      @mouseleave="startTabScroll"
    >
      <div class="mainTitle">
        标题
        <div class="tab">
          <ul class="ul-tab">
            <li @click="changeActTab('1')" :class="{ act: currentTab === '1' }">
              1
            </li>
            <li @click="changeActTab('2')" :class="{ act: currentTab === '2' }">
              2
            </li>
            <li @click="changeActTab('3')" :class="{ act: currentTab === '3' }">
              3
            </li>
          </ul>
        </div>
      </div>
      <div class="mainCont" v-if="currentTab === '1'">
        <div class="item1"></div>
      </div>
      <div class="mainCont" v-if="currentTab === '2'">
        <div class="item2"></div>
      </div>
      <div class="mainCont" v-if="currentTab === '3'">
        <div class="item3"></div>
      </div>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      currentTab: "1",
      tabnum: 0,
      currentTabArr: ["1", "2", "3"],
    };
  },
  mounted() {
    this.startTabScroll();
  },
  methods: {
    changeActTab(tab) {
      this.currentTab = tab;
    },
    changeTabnum() {
      this.tabnum--;
      if (this.tabnum < 0) {
        this.tabnum = this.currentTabArr.length - 1;
      }
      this.currentTab = this.currentTabArr[this.tabnum];
      this.changeActTab(this.currentTab);
    },
    startTabScroll() {
      this.tabTimId = setInterval(() => {
        this.changeTabnum();
      }, 1000);
    },
    stopScroll() {
      clearInterval(this.tabTimId);
    },
  },
};
</script>

<style lang="less">
.mainStyle {
  width: 700px;
  height: 400px;
  margin: 0 auto;
  background-color: aquamarine;
  .mainTitle {
    position: relative;
    font-size: 30px;
    .tab {
      display: flex;
      justify-content: center;
      position: absolute;
      top: 5px;
      right: 5px;
      z-index: 999;
      .ul-tab {
        border: 1px solid rgb(55, 125, 171);
        height: 28px;
        display: flex;
        li {
          padding: 0 10px;
          cursor: pointer;
          font-size: 15px;
          color: #fff;
          height: 100%;
          display: flex;
          align-items: center;
          &:hover {
            box-shadow: inset 0 0 20px rgb(55, 125, 171);
            border: 1px solid rgb(55, 125, 171);
          }
          &.act {
            box-shadow: inset 0 0 20px rgb(55, 125, 171);
            border: 1px solid rgb(55, 125, 171);
          }
        }
      }
    }
  }
  .mainCont {
    height: 100%;
    width: 100%;
    .item1 {
      height: 100%;
      width: 100%;
      background-color: burlywood;
    }
    .item2 {
      height: 100%;
      width: 100%;
      background-color: blueviolet;
    }
    .item3 {
      height: 100%;
      width: 100%;
      background-color: rgb(43, 226, 64);
    }
  }
}
</style>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用JavaScript和CSS来实现一个图片轮播点击切换的效果。 首先,你需要在HTML文件中创建一个包含所有图片的容器,如下所示: ```html <div class="slider"> <img src="image1.jpg" alt="Image 1"> <img src="image2.jpg" alt="Image 2"> <img src="image3.jpg" alt="Image 3"> </div> ``` 然后,在CSS文件中设置容器的样式,使其能够适应不同大小的屏幕,并且隐藏除第一张图片以外的所有图片: ```css .slider { position: relative; width: 100%; height: 400px; overflow: hidden; } .slider img { position: absolute; top: 0; left: 0; width: 100%; height: 100%; display: none; } .slider img:first-child { display: block; } ``` 接下来,在JavaScript文件中实现图片轮播点击切换的功能。首先,你需要定义一个变量来存储当前显示的图片的索引: ```javascript var currentSlide = 0; ``` 然后,创建一个函数来显示下一张图片,并将当前索引加1。如果当前索引等于最后一张图片的索引,则将当前索引重置为0: ```javascript function nextSlide() { var slides = document.querySelectorAll('.slider img'); slides[currentSlide].style.display = 'none'; currentSlide++; if (currentSlide >= slides.length) { currentSlide = 0; } slides[currentSlide].style.display = 'block'; } ``` 最后,使用setInterval()函数来定时调用nextSlide()函数,以实现图片轮播的效果: ```javascript setInterval(nextSlide, 5000); ``` 同时,你可以创建两个按钮来切换图片。分别为左右箭头,如下所示: ```html <div class="slider-controls"> <button class="prev"><i class="fas fa-chevron-left"></i></button> <button class="next"><i class="fas fa-chevron-right"></i></button> </div> ``` 然后,在JavaScript文件中添加事件监听器,使这两个按钮能够切换图片: ```javascript var prevButton = document.querySelector('.prev'); var nextButton = document.querySelector('.next'); prevButton.addEventListener('click', function() { var slides = document.querySelectorAll('.slider img'); slides[currentSlide].style.display = 'none'; currentSlide--; if (currentSlide < 0) { currentSlide = slides.length - 1; } slides[currentSlide].style.display = 'block'; }); nextButton.addEventListener('click', nextSlide); ``` 完成以上步骤后,你就可以实现一个简单的图片轮播点击切换的效果了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值