vue+j简单的实现轮播效果,滚动公告,衔接

目录
  • 分析
  • 初步实现
  • 衔接
  • 完善
  • 全部代码

前言:

滚动起来很容易实现;但是需要前后衔接,就需要处理一下了。以下主要用vue去实现前后衔接的功能。

分析

  • 1、 需要实现上图的html树形结构;(红框)需要展示的盒子;然后里面包裹着一个盒子(绿框);绿框内有多个需要滚动的数据(黄框);
  • 2、 我们需要看到的内容只会展示在红框内;所以需要设置超出隐藏overflow:hidden;;这样多出来的绿框数据就看不到了;
  • 3、 现在我们打算用定位的top来控制绿框展示在红框的位置;这样就能实现展示我们需要的内容;
  • 4、用定时器让他们动起来;定时器控制top位置--;
  • 5、每个内容需要停顿2秒,再继续滚动;

初步实现

先声明一个变量,用于控制绿框的top,绑定到绿框:

//html
<div class="list" :style="{top:listTop+'px'}">
...
</div>

//data
listTop:0;

这里我希望是向上滚动,所以需要控制listTop--;

setInterval(()=>{
    this.listTop-=1;
},20)

现在绿框盒子已经滚动起来了。

但是我们需要把上下衔接起来,不至于到最后停止滚动,或者突兀的直接跳到了顶部。

衔接

为了解决衔接,我们引入一个思路:

在滚动到第二个元素的时候,把第一个元素插入到元素的最后,然后把盒子的top重置为0

这样的话,我们只会滚动前面的两个元素,然后操作元素的位置,把第一个插入到最后;因为我是用vue遍历数组的方式实现的,所以我只需要操作数组,同理原生js就是操作dom了。

//data
list:[1111,2222,3333],
listTop:0,

//methods
//假设我设置了每个元素的高度为40px;
setInterval(()=>{
    this.listTop-=1;
    if(this.listTop===40){
        this.list.push(this.list.splice(0,1)[0]);//删除数组第一个元素,插入到数组后面
        this.listTop=0;//重置top
    }
},20)

完善

上面已经实现了元素滚动效果。

但是我们现在需要每个元素展示2秒,再继续切换。这样控制定时器的执行时间就可以了。

//data
list:[1111,2222,3333],
listTop:0,

//methods
//假设我设置了每个元素的高度为40px;
setScroll(){
    var t = setInterval(()=>{
        this.listTop-=1;
        if(this.listTop===-40){
            this.list.push(this.list.splice(0,1)[0]);//删除数组第一个元素,插入到数组后面
            this.listTop=0;//重置top
            clearInterval(t);//取消定时器
            //设置一个2秒后执行的定时器,重新开启滚动
            setTimeout(()=>{
                this.setScroll();
            },2000)
        }
    },20)
}

全部代码

贴上全部代码,以下为vue语法:

//html
<div class="box">
    <div class="list" :style="{top:listTop+'px'}">
        <div v-for="(item,index) in list" :key="index">
        {{item}}
        </div>
    </div>
</div>
//css
.box{
    height:40px;
    line-height:40px;
    overflow:hidden;
    position:relative;
}
.list{
    position:absolute;
    left:0;
}
//js
data(){
    return {
        list:[1111,2222,3333],
        listTop:0,
    }
},
mounted(){
    this.setScroll();
},
methods:{
    setScroll(){
        var t = setInterval(()=>{
            this.listTop-=1;
            if(this.listTop===-40){
                this.list.push(this.list.splice(0,1)[0]);//删除数组第一个元素,插入到数组后面
                this.listTop=0;//重置top
                clearInterval(t);//取消定时器
                //设置一个2秒后执行的定时器,重新开启滚动
                setTimeout(()=>{
                    this.setScroll();
                },2000)
            }
        },20)
    }
}

到此这篇关于vue+j简单的实现轮播效果,滚动公告,衔接的文章就介绍到这了,更多相关 vue衔接功能内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • vue利用better-scroll实现轮播图与页面滚动详解

    前言 better-scroll 也很强大,不仅可以做普通的滚动列表,还可以做轮播图.picker 等等...所以本文主要给大家介绍了关于vue用better-scroll实现轮播图与页面滚动的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 1.安装better-scroll 在根目录中package.json的dependencies中添加: "better-scroll": "^0.1.15" 然后 npm i 安装. 2.封装代码

  • js轮播图无缝滚动效果

    在做轮播图时如果首尾不能连起来的话,效果会有点丑,下面介绍一种我常用的方法: 先文字说明一下: 如果要展示5张图,分别为1,2,3,4,5  那么在代码的引入中是这样的:1,2,3,4,5,1 按顺序的轮播在此就不多说,重点说的是5>1和1>5的轮播 i  表示当前图片的索引 pre 表示上一张图片的按钮 next 表示下一张图片的按钮 ul 表示图片列表 (1)  5>1>2...   当"next"按钮从5到1时按顺序正常轮播,当前图片为第二个"1

  • 原生Js 实现的简单无缝滚动轮播图的示例代码

       简单无缝滚动轮播图存在很多漏洞,就是后期增加图片时会很不方便,需要改动的地方也很多,耦合性也很强,只适用于一部分程序,所以我们可以通过改动图片结构和计算折算点的方式,升级代码.       原简单的滚动轮播代码 <html> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> &

  • 如何使用JavaScript实现无缝滚动自动播放轮播图效果

    在一些项目开发中,我们经常需要使用到轮播图,但是没有深入学习的情况下做轮播图是非常困难的. 思路 分成小问题来解决 1. 动态生成序号12345 页面有多少li(图片),就有多少序号 2. 点击序号.显示高亮.切换图片 2.1 给序号注册onclick事件 2.2 取消其他序号高亮显示,让当前点击的序号高亮显示 2.3 点击序号,动画的方式切换到当前点击的图片位置(设置自定义属性,记录当前索引,有了索引就可用动画进行移动) 3. 鼠标放到盒子上的时候显示左右箭头,移开时候隐藏 onmouseen

  • 解决vue-seamless-scroll滚动加点赞衔接处数据不同步问题

    VUE使用vue-seamless-scroll自动滚动加点赞,因为有两个overhidden导致点击不同同步dom,在代码中会出现两处vue-seamless-scroll上下悬接,悬接处点赞触发没反应,导致原因:下方悬接vue-seamless-scroll是静态的,没同步DOM 解决办法:加上this.$refs.seamlessScroll.reset() 表示重置意思 到此这篇关于解决vue-seamless-scroll滚动加点赞衔接处数据不同步问题的文章就介绍到这了,更多相关vue

  • JavaScript滚动轮播图制作原理详解

    本文实例为大家分享了JavaScript滚动轮播图制作原理,供大家参考,具体内容如下 滚动轮播图 滚动轮播图布局关键:是所有图片并排在一起,所以unit的宽要足够宽.克隆第一张图片追加到最后一张右按钮拉动策略:先拉动,再瞬移左按钮拉动策略:先瞬移,再拉动与呼吸轮播图一样,需要做防流氓策略 复制代码:将我代码中的图片更换为你的图片,注意图片路径,还需要引入js库,我引入的是jquery-1.12.3.min.js的版本,引入的时候注意路径 举例: <!DOCTYPE html> <html

  • vue+j简单的实现轮播效果,滚动公告,衔接

    目录 分析 初步实现 衔接 完善 全部代码 前言: 滚动起来很容易实现:但是需要前后衔接,就需要处理一下了.以下主要用vue去实现前后衔接的功能. 分析 1. 需要实现上图的html树形结构:(红框)需要展示的盒子:然后里面包裹着一个盒子(绿框):绿框内有多个需要滚动的数据(黄框): 2. 我们需要看到的内容只会展示在红框内:所以需要设置超出隐藏overflow:hidden;:这样多出来的绿框数据就看不到了: 3. 现在我们打算用定位的top来控制绿框展示在红框的位置:这样就能实现展示我们需要

  • Vue封装Swiper实现图片轮播效果

    图片轮播是前端中经常需要实现的一个功能.最近学习Vue.js,就针对Swiper进行封装,实现一个简单的图片轮播组件. 一.Swiper 在实现封装之前,先介绍一下Swiper. Swiper是纯Javascript打造的滑动特效插件,面向手机.平板电脑等移动终端. Swiper能实现触屏焦点图.触屏Tab切换.触屏多图切换等常用效果. Swiper开源.免费.稳定.使用简单.功能强大,是架构移动终端网站的重要选择. Swiper的应用场景广泛,实现效果很好,下面个这实际案例就是Swiper的典

  • jquery实现简单的banner轮播效果【实例】

    朋友给我看了一个轮播效果,把js下载一看,丫丫的一个这么简单的效果,这么的就能写个几百行的,严重影响浏览器加载速度嘛,以为人家宽带流量不要钱玩的哦..无奈之下给他写了个简单的,把所有代码放上去都没有超过70行,还有圆角的那个CSS,不是每个浏览器都是圆角的,不过不影响美观,嘻嘻. <html xmlns="http://www.w3.org/1999/xhtml" > <head> <title>无标题页</title> <scri

  • vue swipe自定义组件实现轮播效果

    本文实例为大家分享了vue swipe自定义组件实现轮播效果的具体代码,供大家参考,具体内容如下 <template> <layout-div :style="getStyle" class="over-h posi-r"> <layout-div :style="getChildStyle" class="flex" @load="loadHandle"> <sl

  • js实现简单的无缝轮播效果

    本文实例为大家分享了js实现简单无缝轮播效果的具体代码,供大家参考,具体内容如下 *{ margin: 0; padding: 0; } #box{ width: 500px; height: 200px; padding: 5px; margin: 50px auto; border: 1px solid #999999; } .inner{ width: 500px; height: 200px; overflow: hidden; position: relative; } ul,ol{

  • 简单实现jQuery轮播效果

    本文实例为大家分享了jQuery轮播效果展示的具体代码,供大家参考,具体内容如下 jQ代码: 在写jQuery代码之前一定要先导库,此处我用的是3.0的库 <script src="jquery-3.0.0.js"></script> <script type="text/javascript"> var timer; $(function() { //设置图片向左移 imgshow(); //点击暂停按钮事件 $(".

  • jquery+css实现简单的图片轮播效果

    开发过程中需要用到图片轮播的插件,在网上找了几个插件之后还是决定自己码一个,比较简洁的功能,以后说不定还会有用. ps: 功能比较简单,整个框并不能根据图片的大小自动调节,这里所用的图片是1170*500的,如果需要改成其他大小的图片,自行修改.pic-list下img的宽度. .pic-list中的宽度为整个横幅的宽度,如果需要轮播的图片数量很多,.pic-list的宽度应大于数量*单张宽度, html <div class="banner"> <!--第一张图片为

  • 使用jQuery制作基础的Web图片轮播效果

    首先看一下效果: 就这么个意思,没截动图哈~ 轮播效果分析: 轮播效果大致可以分为3个部分:轮播图片(图片或者是包含容器),控制轮播图显示的按钮(向左.向右按钮,索引按钮(例如上面效果图的顶部的数字按钮)),每隔一段时间轮流显示轮播图片. 轮播图的显示:要显示的轮播图显示,不需要显示的轮播图隐藏:通常将这些轮播图片以定位的方式重叠在一起,每次显示一张轮播图片. 控制按钮:鼠标点击或者移到索引按钮上面时,显示对应索引位置的轮播图:向上.向下按钮负责控制显示上一张.下一张轮播图片. 其它:一般索引按

  • Jquery代码实现图片轮播效果(一)

    文章写的不好,还请各位高手指教,不废话了,先上张效果图吧看下: 在线演示         下载源码 首先是初始化部分:将除了第一张轮播图片意外的图片都隐藏,并且隐藏向前.向后按钮,使第一个索引按钮处于激活状态. 事件部分:通过jquery的hover()绑定鼠标上悬以及离开时的事件处理, jquery的bind()方法绑定鼠标点击事件处理向前.向后翻动.轮播控制:pre(), next(), play(), start()开始自动轮播,stop()停止自动轮播. 下篇是一个纯粹的jquery轮播

  • vue自定义js图片碎片轮播图切换效果的实现代码

    定义一个banner.js文件,代码如下 ;window.requestAnimationFrame = window.requestAnimationFrame||function(a){return setTimeout(a,1000/60)}; window.cancelAnimationFrame = window.cancelAnimationFrame||clearTimeout; var FragmentBanner = function(option) { //实例化时,可传的参

随机推荐