本文实例为大家分享了vue实现横屏滚动公告效果的具体代码,供大家参考,具体内容如下

HTML文件
<template> <div id="box" ref="box"> <div class="marquee-box" ref="marquee" @mouseover="menter" @mouseleave="mleave"> <p ref="cmdlist" id="pWidth"> <img style="width: 12px;height: 12px" src="../assets/logo.png" alt="vue实现横屏滚动公告效果_vue.js" alt="">累计练习时长1小时,可以获得1次抽奖机会,奖品有。。。。。 </p> </div> </div> </template>
JS文件内容
export default {    name: 'HelloWorld',    data () {      return {        value: 0,        timer: '',//计时器        pwidth:0,//公告文本的宽度        windowWidth:document.documentElement.clientWidth,// 设备屏幕的宽度        }      },      mounted() {      let element = this.$refs.cmdlist;      this.pwidth = document.defaultView.getComputedStyle(element,'').width.split('px');      this.timer = setInterval(this.clickCommend, 20);    },        watch:{      value(newValue, oldValue) {        let allWidth= parseInt(this.windowWidth)+parseInt(this.pwidth[0]);        if(newValue <= -allWidth){          this.$refs.cmdlist.style.marginLeft = this.windowWidth+"px";          this.value = 0;        }      },    },        methods:{      clickCommend(e) {        let _this = this;        this.$nextTick(() => {          this.value -=1;          this.$refs.cmdlist.style.marginLeft = _this.windowWidth+this.value+"px";        });      },      menter(){        clearInterval(this.timer);      },      mleave(){        this.timer = setInterval(this.clickCommend, 20);      },    },    beforeDestroy() {      clearInterval(this.timer);    }  } CSS样式
<style scoped>  #box {    width: 100%;    height: 50px;    margin-top: 50px;    position: relative;  }  .marquee-box  {    position: relative;    width: 100%;    height: 100%;    overflow:auto;    background-color: #f8f8f8;  }  #pWidth{    width: 100%;    height: 50px;    padding: 0;    margin: 0;    line-height: 50px;    display: block;    word-break: keep-all;    white-space: nowrap;    overflow:hidden;    font-family: 微软雅黑; fontSize:14px;    background-color: #f8f8f8  }  ::-webkit-scrollbar {    width: 0 !important;  }  ::-webkit-scrollbar {    width: 0 !important;height: 0;  }  </style>