vue实现轮播图效果

这篇具有很好参考价值的文章主要介绍了vue实现轮播图效果。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1,实现轮左右按键轮播效果,采用数组下标指定轮播图片,定义一个dindex与index下标相比较。
2,创建轮播的图片的数组
3,实现下方圆点点击轮播图片,采用动态绑定和数组的动态样式实现未点击的白色和点击的黑色
dindex与index相比较两值相不一致就是白色反之为黑色
4,实现图片定时轮播,创建定时器,将方法放入mounted生命周期中使其定时轮播,点击按钮轮播时清除定时器

5,实现鼠标移入移出左右切换图片按钮的样式切换,使用css3中的:hover的样式

vue实现轮播图效果文章来源地址https://www.toymoban.com/news/detail-508873.html

一,body, HTML代码

<body>
    <div id="box">
            <button id="left" @click="left">//左侧点击按钮
                        <
            </button>
                <img id="img":src="img[dindex]" >//轮播的图片采用动态绑定渲染
            <button id="right" @click="right">
                        >
            </button>
            <ul>
                //采用v-for循环实现圆点的动态个数渲染
                <li v-for="(item,index) in img.length" @click="yuan(index)">
                //不同图片的渲染    
                <img :src="index===dindex?'./圆点 .png':'./圆点2.png'" alt="">
                </li>
            </ul>
    </div>
</body

二,css样式

<style>
//轮播图片的位置
    #box{
        position: fixed;
        top: 100px;
        right: 150px;
    }
    #img{
       
        height: 580px;
        width: 1200px;
    }
    button{
        font-size: 50px;
    height: 60px;
    width: 100px;
    //按钮透明度设置
    opacity: 0.2;
    //按钮圆角设置
    border-top-left-radius: 20%;
    border-top-right-radius: 20%;
    border-bottom-left-radius: 20%;
    border-bottom-right-radius: 20%;
    }
    //鼠标移入样式
    button:hover{
        background-color: darkslategray;
    }
    #left{
    position: fixed;
    top: 350px;
    left: 187px;
   
    }
    #right{
    position: fixed;
    top: 350px;
    right: 150px;
   
    }
    ul{
        list-style: none;
        position: fixed;
        top: 620px;
        left: 700px;
    }
    li{
       font-size: 10px;
        display:inline;
     
        }
        li img{
            height: 40px;
            width: 40px;
            
        }
</style>

三,script功能实现代码

<script>
    new Vue({
        el:"#box",
        
        data:{
            //定义图片数组
            img:["./nba1.png", "./nba2.png",
            "./nba3.png","./nba4.png","./nba5.png","./nba.png"
            ],
             //图片下标
            dindex:0,
            //定时器设定
            timer:null
        },
        methods:{
            //右侧点击按钮
            right(){
                clearInterval(this.timer)
                if(this.dindex<this.img.length-1){
              this.dindex++
                }else if(this.dindex==this.img.length-1){
                    this.dindex=0
                }
                console.log(this.dindex)
            },
            //左侧点击按钮
            left(){
                clearInterval(this.timer)
                if(this.dindex>0){
              this.dindex--
                }else if(this.dindex==0){
                    this.dindex=this.img.length-1
                }
                // console.log(this.dindex)
            },
            //圆角点击实现轮播效果
            yuan(index){
                clearInterval(this.timer)
                this.dindex=index
                console.log(index,this.dindex)
                
            },
            //定时器设置
            starInterval(){
                    clearInterval(this.timer);
                    this.timer==setInterval(()=>{
                        this.dindex++
                        if(this.dindex>this.img.length-1){
                            this.dindex=0
                        }
                    },3000)
            },
           
        },
         //将定时器放入mounted生命周期中
        mounted(){
            this.starInterval()
           
        }
    })
</script>


四,整体代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="./node_modules/vue/dist/vue.js"></script>
</head>
<style>
    #box{
        position: fixed;
        top: 100px;
        right: 150px;
    }
    #img{
       
        height: 580px;
        width: 1200px;
    }
    button{
        font-size: 50px;
    height: 60px;
    width: 100px;
    opacity: 0.2;
    border-top-left-radius: 20%;
    border-top-right-radius: 20%;
    border-bottom-left-radius: 20%;
    border-bottom-right-radius: 20%;
    }
    button:hover{
        background-color: darkslategray;
    }
    #left{
    position: fixed;
    top: 350px;
    left: 187px;
   
    }
    #right{
    position: fixed;
    top: 350px;
    right: 150px;
   
    }
    ul{
        list-style: none;
        position: fixed;
        top: 620px;
        left: 700px;
    }
    li{
       font-size: 10px;
        display:inline;
     
        }
        li img{
            height: 40px;
            width: 40px;
            
        }
</style>
<body>
    <div id="box">
            <button id="left" @click="left"><</button>
            <img id="img":src="img[dindex]" alt="" @mouseenter="zymInter(true)" @mouseleave="zymInter(false)">
            <button id="right" @click="right">></button>
            <ul>
                <li v-for="(item,index) in img.length" @click="yuan(index)"><img :src="index===dindex?'./圆点 .png':'./圆点2.png'" alt=""></li>
            </ul>
    </div>
</body>
<script>
    new Vue({
        el:"#box",
        
        data:{
            img:["./nba1.png", "./nba2.png",
            "./nba3.png","./nba4.png","./nba5.png","./nba.png"
            ],
           
            dindex:0,
            timer:null
        },
        methods:{
            right(){
                clearInterval(this.timer)
                if(this.dindex<this.img.length-1){
              this.dindex++
                }else if(this.dindex==this.img.length-1){
                    this.dindex=0
                }
                console.log(this.dindex)
            },
            left(){
                clearInterval(this.timer)
                if(this.dindex>0){
              this.dindex--
                }else if(this.dindex==0){
                    this.dindex=this.img.length-1
                }
                // console.log(this.dindex)
            },
            yuan(index){
                clearInterval(this.timer)
                this.dindex=index
                console.log(index,this.dindex)
                
            },
            starInterval(){
                    clearInterval(this.timer);
                    this.timer==setInterval(()=>{
                        this.dindex++
                        if(this.dindex>this.img.length-1){
                            this.dindex=0
                        }
                    },3000)
            },
           
        },
        mounted(){
            this.starInterval()
           
        }
    })
</script>
</html>

到了这里,关于vue实现轮播图效果的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用JS来实现轮播图的效果

    最好今天分享一个使用JS制作的轮播图效果 个人名片:  😊 作者简介:一名大一在校生,web前端开发专业  🤡  个人主页:几何小超  🐼 座右铭:懒惰受到的惩罚不仅仅是自己的失败,还有别人的成功。  🎅**学习目标:  坚持每一次的学习打卡 ,学好前端 首先是HTML部分

    2024年01月20日
    浏览(34)
  • Android Jetpack Compose实现轮播图效果

    在最近思索如何使用Compose方式改进我的开源TMDB电影列表应用程序的主屏幕时,一个激动人心的概念浮现在我的脑海中——为什么不整合一个吸引人的轮播图来展示即将上映的电影呢?在本文中,我将分享我的开发和实现自定义轮播图的经历,提供涉及不同步骤的见解。 首先

    2024年02月08日
    浏览(82)
  • 【Android】使用ViewPager2实现轮播图效果,手动/自动轮播图

    这里使用Gilde进行加载图片:Glide 使用Gilde可以加载网络图片还可以提高图片加载性能。 接下来新建一个子布局item_image,加载viewPage2的子布局。 ViewPage2就是使用recyclerView实现的,所以这里使用方法其实类似。 这里直接继承RecyclerView.Adapter即可,代码很简单不必多说。 创建一个

    2024年02月03日
    浏览(37)
  • uni-app小程序折叠3D轮播图效果实现。

    先来看效果图 实现原理: 通过小程序的触摸事件,来控制图片数组的变化实现动态样式;来改变图片的样式。 贴上轮播组件完整代码 组件使用 如果有自动轮播的需求,可以改造下组件加个定时器处理数组就OK了。

    2024年02月11日
    浏览(29)
  • 用Element-UI框架写轮播图,左右箭头点击轮播,下方小锚点对应轮播

    不好意思视频上传不成功看链接https://www.douyin.com/video/7158792800564235527 注:借鉴官网:链接: https://element.eleme.cn/#/zh-CN/component/carousel这里有更多的我们需要的框架

    2023年04月08日
    浏览(35)
  • 前端Vue自定义简单实用轮播图封装组件 快速实现轮播图

    前端Vue自定义简单实用轮播图封装组件 快速实现轮播图, 阅读全文下载完整代码请关注微信公众号: 前端组件开发 效果图如下: 使用方法 HTML代码实现部分

    2024年02月10日
    浏览(53)
  • Vue 实现轮播图功能

    Vue 是一款流行的前端框架,它提供了一系列的工具和组件,使得开发者可以更加便捷地创建交互式的 Web 应用程序。轮播图是 Web 应用程序中常见的一种交互式组件,可以用来展示图片、新闻、广告等内容。在 Vue 中,我们可以使用第三方组件库或自己编写代码来实现轮播图功

    2024年02月05日
    浏览(29)
  • Vue2+swiper基础实现轮播图

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 swiper的基础使用 提示:以下是本篇文章正文内容,下面案例可供参考 Swiper中文网-轮播图幻灯片js插件,H5页面前端开发         注意:我们用的是vue2所以推荐大家下载swiper5版本 示例: 查看安装是否完成

    2024年01月16日
    浏览(50)
  • 微信小程序中实现轮播图效果

    swiper是轮播图的外层容器,所以使用轮播图就必须使用到swiper标签。 存在默认样式: 1 width 100% 2 height 150px 只能放置在swiper组件中。表示每一个轮播项。 编译效果: 当切换机型后,就可以方向,图片的宽高与效果不一样 1.分析和升级版本,解决换机型的宽高问题 ①先找出

    2024年02月11日
    浏览(41)
  • 前端效果积累 |别具一格的3D酷炫轮播图效果收集

    📌 个人主页 :个人主页 ​🧀 推荐专栏 :前端开发成神之路 --【 这是一个为想要 入门和进阶前端开发专门开启的精品专栏 !从 个人到商业的全套开发教程 ,实打实的干货分享,确定不来看看? 😻😻】 📝 作者简介 : 从web开发,再到大数据算法,踩过了无数的坑,用

    2024年02月16日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包