This article example shares the specific code of vue to achieve seamless scrolling of the list for your reference. The specific content is as follows HTML part code <template> <div id="box" class="wrapper"> <div class="contain" id="con1" ref="con1" :class="{anim:animate==true}"> <List v-for="(item,index) in cloudList" :key="index" :listData="item" :index="index" :date="date" ></List> </div> </div> </template> List is a single list component and can also be replaced by li. CSS part code <style scoped> .wrapper { width: 96vw; height: 90vh; position: absolute; left: 2vw; top: 1rem; overflow: hidden; } .contain > div:nth-child(2n) { //This style is required for my project and has nothing to do with seamless scrolling. Margin-left: 2vw can be ignored; } .anim { transition: all 0.5s; margin-top: -7vh; } </style> My List component is set to float: left, so the div with id="con1" has no height js part of the code <script> import List from './List'; export default { name: 'Contain', data () { return { cloudList: [], //Array used to store list data date: '', //Latest data update date animate: false, time: 3000, //Timed scrolling interval setTimeout1: null, setInterval1: null }; }, components: List }, methods: { // Get json data and update date getCloudListData () { const _this = this; _this.$api.getCloudListData().then(res => { _this.cloudList = res; }); var newDate = new Date(); _this.date = _this.dateFtt('yyyy-MM-dd hh:mm:ss', newDate); }, // Date format dateFtt (fmt, date) { var o = { 'M+': date.getMonth() + 1, // Month 'd+': date.getDate(), // Day 'h+': date.getHours(), // Hours 'm+': date.getMinutes(), // Minutes 's+': date.getSeconds(), // Seconds 'q+': Math.floor((date.getMonth() + 3) / 3), // Quarter S: date.getMilliseconds() // Milliseconds }; if (/(y+)/.test(fmt)) { fmt = fmt.replace( RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length) ); } for (var k in o) { if (new RegExp('(' + k + ')').test(fmt)) { fmt = fmt.replace( RegExp.$1, RegExp.$1.length === 1 ? o[k] : ('00' + o[k]).substr(('' + o[k]).length) ); } } return fmt; }, // Scroll scroll () { const _this = this; _this.animate = true; clearTimeout(_this.setTimeout1); _this.setTimeout1 = setTimeout(() => { var parent = document.getElementById('con1'); var first = document.getElementById('con1').children[0]; var second = document.getElementById('con1').children[1]; parent.removeChild(first); parent.removeChild(second); parent.appendChild(first); parent.appendChild(second); _this.animate = false; }, 500); } }, created () { const _this = this; _this.getCloudListData(); //The timer updates the data every 24 hours setInterval(() => { _this.getCloudListData(); }, 24 * 60 * 60 * 1000); }, mounted () { const _this = this; var contain = document.getElementById('box'); _this.setInterval1 = setInterval(_this.scroll, _this.time); var setInterval2 = null; //Mouse moves into the scrolling area to stop scrolling contain.onmouseenter = function () { clearInterval(_this.setInterval1); var count = 0; // If the mouse does not move for more than ten seconds, start scrolling setInterval2 = setInterval(function () { count++; if (count === 10) { _this.scroll(); _this.setInterval1 = setInterval(_this.scroll, _this.time); } }, 1000); //Stop scrolling as soon as the mouse moves and set the count to 0 contain.onmousemove = function () { count = 0; clearInterval(_this.setInterval1); }; }; // The mouse moves out of the scrolling area contain.onmouseleave = function () { clearInterval(setInterval2); clearInterval(_this.setInterval1); _this.scroll(); _this.setInterval1 = setInterval(_this.scroll, _this.time); }; } }; </script> The above is the full content of this article. I hope it will be helpful for everyone’s study. I also hope that everyone will support 123WORDPRESS.COM. You may also be interested in:
|
<<: How to set PATH environment variable in Linux system (3 methods)
>>: Kill a bunch of MySQL databases with just a shell script like this (recommended)
1. Construction 1. Prepare htpasswd.txt file The ...
To remove the underline of a hyperlink, you need t...
Table of contents Introduction to frm files and i...
After the changes: innodb_buffer_pool_size=576M -...
The specific code is as follows: <!DOCTYPE htm...
Introduction to the polling algorithm Many people...
When inserting data, I found that I had never con...
Table of contents 1. Automatic installation using...
<br />This article has briefly explained the...
Recently, in order to realize the course design, ...
Recently, I used vuethink in my project, which in...
About Nginx, a high-performance, lightweight web ...
This article shares the specific code of JS to ac...
Table of contents 1. Installation: 2. Use: 3. Bui...
The reason why Docker is so popular nowadays is m...