朋友的項目里要實現一個消息無縫滾動的效果,中途遇到了一點小bug,每組消息滾動完再次循環時會出現停留兩倍的時間間隔問題,我研究了一天終于解決了這個1S的小問題

創新互聯公司專注為客戶提供全方位的互聯網綜合服務,包含不限于網站建設、成都做網站、岐山網絡推廣、微信小程序定制開發、岐山網絡營銷、岐山企業策劃、岐山品牌公關、搜索引擎seo、人物專訪、企業宣傳片、企業代運營等,從售前售中售后,我們都將竭誠為您服務,您的肯定,是我們最大的嘉獎;創新互聯公司為所有大學生創業者提供岐山建站搭建服務,24小時服務熱線:18982081108,官方網址:www.yijiale78.com
項目環境vue-cli ,請自行配置好相應的,環境及路由,這里主要介紹實現的方法
第一步在模板中 使用v-for方法循環出消息列表
<template>
<div id="box">
<ul id="con1" ref="con1" :class="{anim:animate==true}">
<li v-for='item in items'>{{item.name}}</li>
</ul>
</div>
</template>
第二步在<script>標簽中放置消息數組和具體的method 方法。
<script>
export default {
data() {
return {
animate:false,
items:[ //消息列表對應的數組
{name:"馬云"},
{name:"雷軍"},
{name:"王勤"}
]
}
},
created(){
setInterval(this.scroll,1000) // 在鉤子函數中調用我在method 里面寫的scroll()方法,注意此處不要忘記加this,我在這個位置掉了好幾次坑,都是因為忘記寫this。
},
methods: {
scroll(){
let con1 = this.$refs.con1;
con1.style.marginTop='-30px';
this.animate=!this.animate;
var that = this; // 在異步函數中會出現this的偏移問題,此處一定要先保存好this的指向
setTimeout(function(){
that.items.push(that.items[0]);
that.items.shift();
con1.style.marginTop='0px';
that.animate=!that.animate; // 這個地方如果不把animate 取反會出現消息回滾的現象,此時把ul 元素的過渡屬性取消掉就可以完美實現無縫滾動的效果了
},500)
}
}
}
</script>
<style>
*{
margin: 0 ;
padding: 0;
}
#box{
width: 300px;
height: 32px;
line-height: 30px;
overflow: hidden;
padding-left: 30px;
border: 1px solid black;
transition: all 0.5s;
}
.anim{
transition: all 0.5s;
}
#con1 li{
list-style: none;
line-height: 30px;
height: 30px;
}
</style>
以上就是這篇文章的全部內容,希望對大家的學習有所幫助,也希望大家多多支持創新互聯。
網站欄目:vue實現消息的無縫滾動效果的示例代碼
瀏覽路徑:http://www.yijiale78.com/article46/pchchg.html
成都網站建設公司_創新互聯,為您提供域名注冊、靜態網站、App開發、網站營銷、云服務器、網站設計
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯