vue实现横屏滚动公告效果

 更新时间:2022年04月08日 10:09:27   作者:张艳伟_Laura  
这篇文章主要为大家详细介绍了vue实现横屏滚动公告效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了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="">累计练习时长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>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • vue实现点击某个div显示与隐藏内容功能实例

    vue实现点击某个div显示与隐藏内容功能实例

    最近做项目有用到某个div显示与隐藏内容,所以下面这篇文章主要给大家介绍了关于vue实现点击某个div显示与隐藏内容功能的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-12-12
  • element-ui 远程搜索组件el-select在项目中组件化的实现代码

    element-ui 远程搜索组件el-select在项目中组件化的实现代码

    这篇文章主要介绍了element-ui 远程搜索组件el-select在项目中组件化,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • 详解Vue监听数据变化原理

    详解Vue监听数据变化原理

    本篇文章主要介绍了Vue监听数据变化,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03
  • Vue基于NUXT的SSR详解

    Vue基于NUXT的SSR详解

    这篇文章主要介绍了Vue基于NUXT的SSR详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-10-10
  • vue中组件的过渡动画及实现代码

    vue中组件的过渡动画及实现代码

    这篇文章主要介绍了vue中组件的过渡动画,并通过实例代码给大家介绍了过渡动画的实例代码,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-11-11
  • vue3搭配pinia的踩坑实战记录

    vue3搭配pinia的踩坑实战记录

    Pinia是一个同时支持Vue2和Vue3的应用状态管理工具,简单来说就是为了管理整个应用中的响应式数据,解决各个组件交互时数据状态的不好管理的问题,下面这篇文章主要给大家介绍了关于vue3搭配pinia踩坑的相关资料,需要的朋友可以参考下
    2022-04-04
  • Vuex提升学习篇

    Vuex提升学习篇

    本篇文章主要介绍了Vuex提升学习篇,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-01-01
  • vue+canvas实现炫酷时钟效果的倒计时插件(已发布到npm的vue2插件,开箱即用)

    vue+canvas实现炫酷时钟效果的倒计时插件(已发布到npm的vue2插件,开箱即用)

    这篇文章主要介绍了vue+canvas实现炫酷时钟效果的倒计时插件(已发布到npm的vue2插件,开箱即用) ,需要的朋友可以参考下
    2018-11-11
  • 使用vue.js实现checkbox的全选和多个的删除功能

    使用vue.js实现checkbox的全选和多个的删除功能

    这篇文章主要介绍了使用vue.js实现checkbox的全选和多个的删除功能,需要的朋友可以参考下
    2017-02-02
  • Vue2 轮播图slide组件实例代码

    Vue2 轮播图slide组件实例代码

    这篇文章主要介绍了Vue2 轮播图slide组件实例代码,代码简单易懂,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-05-05

最新评论