页面无缝滚动效果

前端多张图片无缝无限循环滚动 循环滚动实现思路:一个设定宽度并且隐藏超出它宽度的内容的容器demo,里面放demo1和demo2,demo1是滚动内容,demo2为demo1的直接克隆,通过不断改变demo1的scrollTop或者scrollLeft达到滚动的目的,当滚动至demo1与demo2的交界处时直接跳回初始位置,因为demo1与demo2一样,所以分不出跳动的瞬间,从而达到“无缝”滚动的目的。 阅读详情

目前我只使用两种方式,如果还有其他方式,希望推荐一下。

1、js+transform

使用定时器动态增加大小,再把值赋给 transform,实现位置偏移,来实现无缝滚动。

html
一定要循环两遍数据,这样的话,会出现两个一样的数据,在一个数据消失后,不会使页面空白,而这时transform归0,有从头开始,因为两个数据相同,归0后视觉上就像无缝滚动。

 <div style="height: 100%" @mouseenter="moveStar()" @mouseleave="moveLeave()">
      <table id="rollOne" border="1" :style="{transform:'translate(0px,'+flvPlayerTimer+'px)'}">
        <tr v-for="item in tableData" :key="item.index">
          <td width="25%">{{item.fxsj}}</td>
          <td width="15%">{{item.gjbh}}</td>
          <td width="35%">{{item.pzgs}}个</td>
          <td width="25%" style="cursor: pointer" @click="popu(2,item)"><span>详情</span></td>
        </tr>
      </table>
      <table border="1" :style="{transform:'translate(0px,'+flvPlayerTimer+'px)'}">
        <tr v-for="item in tableData" :key="item.index">
          <td width="25%">{{item.fxsj}}</td>
          <td width="15%">{{item.gjbh}}</td>
          <td width="35%">{{item.pzgs}}个</td>
          <td width="25%" style="cursor: pointer" @click="popu(2,item)"><span>详情</span></td>
        </tr>
      </table>
  </div>

js

		export default {
        name: "rolling",
        data() {
          return {
            flvPlayerTimer:0,
            timer:null
          }
        },
        props: {
          tableData: {
            type: Array
          },
        },
        mounted(){
          this.timer = setInterval(()=>{
            this.flvPlayerTimer-=1
            if(this.flvPlayerTimer== -($('#rollOne').height())){
              this.flvPlayerTimer =0
            }
          },100)
          // 别忘了定时器清除
          this.$once('hook:beforeDestroy',()=>{
            clearInterval(this.timer);
            this.timer = null;
          })
        },
        methods:{
         // 鼠标触碰停止
          moveStar(){
            clearInterval(this.timer);
            this.timer2 = null;
          },
          // 鼠标离开始
          moveLeave(){
            this.timer = setInterval(()=>{
              this.flvPlayerTimer-=1
              if(this.flvPlayerTimer== -($('#rollOne').height())){
                this.flvPlayerTimer =0
              }
            },100)
          },
        }
    }

css

.fxlx{
    height: 16vh;
    width: 100%;
    table,table tr td {
      border:1px solid   rgba(41,143,229,0.3);
    }
    table{
      width: 90%;
      margin: 0 auto;
      th{
        opacity: 0.7;
        background: linear-gradient(rgba(53,123,203,0.7), rgba(9,57,113,0.7));
        font-size: 9rem;
        font-family: PingFang SC Regular, PingFang SC Regular-Regular;
        font-weight: 400;
        color: #ffffff;
        height: 28rem;
      }
      td{
        opacity: 0.8;
        font-size: 9rem;
        height: 30rem;
        font-family: PingFang SC Regular, PingFang SC Regular-Regular;
        font-weight: 400;
        color: #ffffff;
        background:#001c38
      }
    }
  }

2、使用vue-seamless-scroll插件

1、安装vue-seamless-scroll

npm install vue-seamless-scroll --save 

2、引入组件
在某些时候实际页面渲染后会出现点击事件失效的情况。这个问题是因为vue-seamless-scroll是用重复渲染一遍内部元素来实现滚动的,而JS的onclick只检测页面渲染时的DOM元素。记得在入门原生JS的时候也经常会遇见这个问题,经过一般百度,采用事件委托的方式解决。
在section上绑定事件handleClick,捕获点击的DOM节点。事件中需求的数据可以直接用data绑在相应的dom上。

<div class="my-inbox" @click.stop="handleClick($event)">
      <vue-seamless-scroll :data="sendVal.body" :class-option="defaultOption">
        <!--        <div v-for="(item, index) in sendVal" :key="index" @click="jump(item)">-->
        <!--          <div class="wfjl1" v-show="index % 2 == 0">{{ item }}</div>-->
        <!--          <div class="wfjl2" v-show="index % 2 == 1">{{ item }}</div>-->
        <!--        </div>-->
        <table ref="movebox">
          <tr v-for="(item, index) in sendVal.body" :key="index">
            <td
              :data-obj="JSON.stringify(item)"
              :id="'xzq' + index"
              width="15%"
            >
              {{ item.range }}
            </td>
            <td
              :data-obj="JSON.stringify(item)"
              :id="'wflx' + index"
              width="20%"
            >
              {{ item.wflx }}
            </td>
            <td :data-obj="JSON.stringify(item)" :id="'sj' + index" width="25%">
              {{ item.sbsj }}
            </td>
            <td :data-obj="JSON.stringify(item)" :id="'zt' + index" width="20%">
              <img
                style="width: 71rem; height: 34rem; margin: 5rem 0"
                :src="item.image_result"
              />
            </td>
          </tr>
        </table>
      </vue-seamless-scroll>
    </div>

js

import vueSeamlessScroll from "vue-seamless-scroll";
export default {
  name: "my-marquee-top",
  props: {
    sendVal: Object,
  },
  data() {
    return {
      isShow: true,
      time: "",
      url: "",
    };
  },
  components: {
    vueSeamlessScroll,
  },
  computed: {
    defaultOption() {
      return {
        step: 0.2, // 数值越大速度滚动越快
        limitMoveNum: 2, // 开始无缝滚动的数据量 this.dataList.length
        hoverStop: true, // 是否开启鼠标悬停stop
        direction: 1, // 0向下 1向上 2向左 3向右
        openWatch: true, // 开启数据实时监控刷新dom/
      };
    },
  },
  methods: {
    handleClick(item) {
      let message = JSON.parse(item.target.dataset.obj);
      this.$emit("jump", message);
    },
  }
  },
};```

vue3-scroll-seamless 大屏无缝滚动 阅读详情

相关推荐

vue-seamless-scroll(一个简单的基于vue.js的无缝滚动)

一般在数据可视化项目中经常会看到无缝滚动的表格,即轮播表,我们可以使用 vue-seamless-scroll 来实现,使用起来也很方便。

专注于技术,分享实战经验,探索技术边界,用代码构建更美的数字世界。 5684

CSS3 用动画实现无缝滚动图效果

使用CSS3 实现无缝滚动窗口效果

xiongmouren_jy的博客 1万+

使用 HTML + CSS + JavaScript 实现无缝滚动轮播图

JavaScript 学习经典案例:使用 HTML + CSS + JavaScript 实现无缝滚动轮播图

Allen- 8278

手把手教你用原生js实现无缝滚动

效果展示 上图就是我们要实现的无缝滚动效果。 整体思路 按照惯例我们先来说一下思路,一开始图片静止,点击各个按钮,顾名思义都有相应的效果,无缝滚动最主要的效果就是图片一直保持匀速运动。 点击向右按钮(点击事件),红色框框内(框框相对定位)的图片(图片绝对定位)开始滚动,不停止(定时器),这里所有图片应该用一个容器包裹起来绝对定位给到这个图片的父级容器,然后,设置一个定时器,获取图片父级容器的left,每运行一次定时器,增加一次或减少一次left,这样就可以做出向...

Devil_ErKang的博客 5865

【html+jquery文本无缝滚动】

【代码】【html+jquery文本无缝滚动】

qq_35834763的博客 502

Aurora 8B/10B IP核介绍 —— Xilinx 技术文档Pg046

一、概述该IP核与用户接口之间支持AXI4-Stream协议,且基于ZYNQ SOC、A7、K7、V7以及UltraScale、UltraScale+系列FPGA的高速收发器(the high-speed serial transceivers)进行实现。多达 16 个连续绑定4 个连续绑定的 GTP 收发器framingstreaming以及全双工或单工加扰消扰CRC校验热插拔Aurora 8B/10B核心(图1-1)是一种可扩展的、轻量级的、用于高速串行通信的链路层协议;

qq_32147275的博客 1640

基于web API之WheelEvent API的鼠标滚轮事件,制作全屏页面无缝滚动效果

基于web API之WheelEvent API的鼠标滚轮事件,制作全屏页面无缝滚动效果

在无知中学习,在学习中成长,在成长中学习 456

成本会计(第九版)王忠孝课后习题答案解析

在掌握了基础知识之后,我们还需要培养自己的实际操作能力。此外,在学习过程中,遇到困难时,要及时向老师、同学请教,不要害怕暴露自己的不足。三人行,必有我师,每个人都有值得学习的地方。首先,我们需要认真阅读教材,把基础知识掌握牢固。在这里,我建议大家使用《成本会计(第九版)》的配套练习册,这样可以帮助我们检查学习效果。同时,网上的一些优质课程和论坛也是不错的学习资源,例如网易云课堂、中国大学MOOC等。别担心,这里我给大家推荐一些实用的学习资料和方法,帮助你更好地掌握这门课程。出版社: 大连理工大学出版社。

weixin_58833001的博客 1888

应用JavaScript搭建一个简易页面图片无缝滚动效果

  页面图片无缝滚动JavaScript原理:移动的区块包含图片内容,区块相对父级元素进行定位脱离文档流。再令区块的left值每隔固定的时间进行等量减少(或增大)从而实现区块的匀速运动。由于每次间隔移动的时间设置很短,会“欺骗”人的眼睛,形成无缝滚动效果。   脱离文档流:父元素为相对定位position:relative,区块为绝对定位;position:absolute。   每隔固定...

weixin_33705053的博客 156

小米万兆路由器里的Docker安装可道云(Kodexplorer)私有网盘

小米2022年12月份发布了万兆路由器,里面可以使用Docker。 今天尝试在小米的万兆路由器里安装[可道云](http://kodcloud.com/)(Kodexplorer)私有网盘。

engchina的专栏 1万+

嵌入式开发工程师笔试面试指南-Linux驱动

linux驱动

weixin_43491077的博客 473

常用页面中上下无缝滚动效果

常用web页面中设置上下无限滚动效果;(左右滚动类同) 代码如下: <div id="colee_left" class="news-right-cont" style="touch-action:none;height: 360px;overflow-y: hidden;"> <ul id="colee_left1">

onlylele的博客 894

Python爬虫实战:高效爬取华尔街日报文章的技术与代码详解

在当今信息爆炸的时代,金融数据和分析对于投资者、研究人员和企业决策者来说至关重要。华尔街日报(WSJ)作为全球最具影响力的财经媒体之一,其文章内容具有极高的价值。本文将详细介绍如何使用Python最新技术构建一个高效、稳定的华尔街日报文章爬虫,涵盖从基础到高级的各种技术要点。本文详细介绍了如何使用Python最新技术构建一个高效、稳定的华尔街日报文章爬虫。我们从基础爬虫实现开始,逐步添加了高级功能如分布式处理、反反爬虫策略、数据清洗和存储等。异步处理:使用asyncio和httpx实现高性能网络请求。

2201_76125261的博客 385

vue 停止页面滚动_vue实战开发010:JS实现字体上下无缝滚动效果

今天要实现的是字体上下无缝滚动效果,在友情链接这块,2345提供了很多的链接并且通过定时的无缝滚动让内容显示在窗口中,这里我也来写下这个功能,当页面载入时链接自动往上无缝滚动,当鼠标停留时滚动停止。首先我们先来实现字幕滚动效果,一般情况下如果是多个单条数据翻滚,比较单间的方法就是用css来实现,通过animation和@keyframes配合就可以快速的实现滚动,但是但是这时会有个问题,滚到最后一...

weixin_29022115的博客 140

【WRF-Urban运行】WRF-SLUCM耦合建模参数设置及模拟运行

WRF-SLUCM耦合建模参数设置及模拟运行

WW、forever的博客 1723

Unity之ASE如何实现UV扰动闪电效果

UV扰动,顾名思义,就是通过干扰原贴图的UV,使UV发生变化,导致贴图出现会动的效果,如果我们贴图和扰动的速度调整的刚好合适的话,会出现一些非常棒的效果,比如下图所示的闪电效果:好了,一个简单的UV扰动就讲完了,同学们可以发挥想象力,我们是否可以利用UV扰动的原理,做一点别的炫酷的效果出来,比如,交错流动,流光效果等等。很期待你的留言,这篇文章就到这里,希望对你有所帮助。

TxNet 1790

JavaScript中定时器案例(获取验证码60秒倒计时,页面打字机效果,无缝滚动特效)

获取验证码60秒倒计时 <head> <meta charset="UTF-8"> <title></title> <script type="text/javascript"> window.onload = function() { var btn = document.getElementById('btn...

WangY321的博客 1220

Spark Sql 连接mysql

转载请务必注明原创地址为:http://dongkelun.com/2018/03/21/sparkMysql/ 1、基本概念和用法(摘自spark官方文档中文版) Spark SQL 还有一个能够使用 JDBC 从其他数据库读取数据的数据源。当使用 JDBC 访问其它数据库时,应该首选 JdbcRDD。这是因为结果是以数据框(DataFrame)返回的,且这样 Spark SQL操作轻松或便......

主要分享大数据相关的知识,如Spark、Hudi 1万+

php 页面图片无缝滚动,js使用transition效果实现无缝滚动

前言无缝轮播一直是面试的热门题目,而大部分答案都是复制第一张到最后。诚然,这种方法是非常标准,那么有没有另类一点的方法呢?第一种方法是需要把所有图片一张张摆好,然后慢慢移动的,但是我能不能直接不摆就硬移动呢?如果你使用过vue的transition,我们是可以通过给每一张图片来添加入场动画和离场动画来模拟这个移动进场动画就是从最右侧到屏幕中央出场动画是从屏幕中央到左侧移出这样看起来的效果就是图片从...

weixin_36473057的博客 365

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

用CSS3实现无限循环的无缝滚动

导语: 在页面中循环展示信息的功能之前一般是用js来实现的,那么用CSS3该如何实现实现呢 有时候在页面的某个模块中,需要无限循环的滚动一些消息。那么如果我们用js实现无缝衔接滚动的思路是什么呢(比如我们这个模块是向上滚动的)? 克隆A一份完全一样的数据B放在原数据A的后面; 使用setInterval向上滚动A的父级容器; 当向上滚动的距离L正好的A的高度时(L==A.height()),L=0,重新开始滚动,无限循环。 克隆一份数据放在后面,是为了当A向上移动时,后面有数

源辰_付鹏程 1398

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

html无缝切换页面,jQuery实现轮播图无缝(无回滚)滚动切换效果

$.fn.slide = function(){var slideEle = $(this);var slideContent = slideEle.find('.slide-content');var slideNavLi = slideEle.find('.slide-nav li');var slideWidth = slideEle.width(); //显示窗口宽度var timer =...

weixin_33882158的博客 447

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

页面向上滚动

#页面或者div向上无缝滚动 1.css: body { margin: 0; padding: 0; overflow: hidden; } .container { position: relative; top: 0; } .container div { ...

weixin_30653023的博客 455

vue 页面效果插件---------------(无缝滚动,数组滚动)

文章目录数组滚动插件 ---------------cont-tovue-countTo---简单好用的一个数字滚动插件无缝滚动插件 ---------------vue-seamless-scroll 数组滚动插件 ---------------cont-to vue-countTo—简单好用的一个数字滚动插件 vue-countTo是一个无依赖,轻量级的vue组件,可以自行覆盖easingFn。 你可以设置 startVal 和 endVal,它会自动判断计数或倒计时。支持vue-ssr。vu

weixin_43617604的博客 667

[Javascript][jQuery]模拟Marquee无缝循环滚动

具体可见示例:模拟Marquee无缝滚动   代码如下: /*** @classDescription 模拟Marquee,无间断滚动内容* @author Aken Li(www.kxbd.com)* @DOM*       &lt;div id="marquee"&gt;*           &lt;ul&gt;*                &lt;li&gt;&lt;/li&gt...

tommy小屋 520

小程序上下页面滚动

话不多说,先来看效果: 1.html <view class="container container-fill"> <view class="scroll-fullpage" bindtouchstart="scrollTouchstart" bindtouchmove="scrollTouchmove" bindtouchend="scrollTouchend" style="transform:translateY(-{{scrollindex*100}}%);margin-to

qq_45954445的博客 398

marquee+js实现某个区域的“无缝滚动效果”

一、背景:   做项目的时候用户经常喜欢让你在首页中放一些滚动的信息,业务办理呀,通知信息呀什么的。正常用marquee就可以直接实现了,但是我们会遇到这种情况,就是如果滚动区域很大的情况下,你会发现滚动信息的末尾必须滚完才能从底下或者右边(从下往上或从右往左滚动)接着滚动,这样中间会留下很多空白区域,不太好看,如果你想把他做的完美一下,就可以结合js脚本来实现无缝滚动的效果。 二、...

weixin_30750335的博客 108
上一篇: 最新数组方法(包括es6)
下一篇: echarts双向柱状图
言只  石皮
博客等级 码龄7年 21粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

言只 石皮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值