美文网首页
在vue中修改audio的样式

在vue中修改audio的样式

作者: Yyyyyyyyyujie | 来源:发表于2020-09-24 15:19 被阅读0次
audio自带的样式是这样
浏览器中audio的默认样式

要更改audio样式 只要把controls去掉就可以 然后把自己需要的样式写上去操作audio

1.audio 组件

我这个demo是在循环中使用的 单个的自行修改

<audio :ref="'myAudio'+index" :src="audioSrc"></audio>
<!--代替audio的展示-->
<div class="audioControls" @click.stop="audioClick('myAudio'+index,index)">
   <i :class="item.played?'el-icon-video-pause':'el-icon-video-play'"></i>
   <span>{{item.duration}}</span>
</div>
2.操作
/**
* 操作audio
*/ 
      audioClick(ref, index) {
        let _this = this
        let audio =this.$refs[ref] //获取组件
        if (this.list[index].audioStatus && this.list[index].audioStatus == 'playing') {
          //当前组件正在播放 则暂停播放
          _this.$set(this.list[index], 'played', false) //记录播放还是暂停的状态
          _this.$set(this.list[index], 'audioStatus', 'pause') //
          audio.pause()
        } else {
          //如果没有播放状态 则开始播放
          this.$set(this.list[index], 'played', true)
          this.$set(this.list[index], 'audioStatus', 'playing')
          audio.play()
          audio.addEventListener("ended", function () {  
            //监听播放播放结束后 重置播放状态为初始状态  
            _this.$set(_this.list[index], 'played', false)
            _this.$set(_this.list[index], 'audioStatus', 'pause')
            audio.pause()
          });
        }
      }

使用时用到的问题

在单页面使用时 用this.$refs[ref]去使用组件没有问题
在复用组件中使用会报错 this.$refs.myAudio0.play is not a function
所以 我换成了用ID去取 同时添加了获取audio时间

下面是我使用的完整的代码

<audio :id="'myAudio'+index" :src="audioSrc" @canplay="getDuration('myAudio'+index,index)"></audio>

<div class="audioControls" @click.stop="summaryAudioClick('myAudio'+index,index)">
    <i :class="item.played?'el-icon-video-pause':'el-icon-video-play'"></i>
    <span>{{item.duration}}</span>
</div>
/**
* 操作audio
*/ 
      audioClick(id, index) {
        let _this = this
        let audio = document.getElementById(id)  //获取当前操作的audio
        if (this.list[index].audioStatus && this.list[index].audioStatus == 'playing') {
          //当前组件正在播放 则暂停播放
          _this.$set(this.list[index], 'played', false) //记录播放还是暂停的状态
          _this.$set(this.list[index], 'audioStatus', 'pause') //
          audio.pause()
        } else {
          //如果没有播放状态 则开始播放
          this.$set(this.list[index], 'played', true)
          this.$set(this.list[index], 'audioStatus', 'playing')
          audio.play()
          audio.addEventListener("ended", function () {  
            //监听播放播放结束后 重置播放状态为初始状态  
            _this.$set(_this.list[index], 'played', false)
            _this.$set(_this.list[index], 'audioStatus', 'pause')
            audio.pause()
          });
        }
      },
      getDuration(id,index){
        let audio = document.getElementById(id)
        this.$set(this.list[index], 'duration', Math.round(audio.duration))
      }
初次加载未播放状态
点击播放之后状态 再次点击暂停回到初始状态 okkkkk

相关文章

  • 在vue中修改audio的样式

    audio自带的样式是这样 要更改audio样式 只要把controls去掉就可以 然后把自己需要的样式写上去操作...

  • 修改Element控件的样式

    我们在vue中使用Element库的时候,vue组件中样式的scoped会导致我们无法修改控件的样式。 解决方法是...

  • vue:样式穿透

    一、什么叫 vue 样式穿透 在 vue 开发过程中,可能会遇到修改 iview UI 组件样式的时候,无效的问题...

  • vue-踩坑 通过v-html指令渲染的富文本无法修改样式的解决

    在最近的vue项目中遇到的问题:v-html渲染的富文本,无法在样式表中修改样式; 这应该是vue编译的规范吧,未...

  • vue样式作用域

    在vue中引入了scoped这个概念 ,scoped的设计思想就是让当前组件的样式不会修改到其它地方的样式 ,使用...

  • vue 自定义audio标签

    改变audio标签样式 改变原生audio样式 隐藏audio标签,用div实现一个样式 代码详细https://...

  • vue 修改第三方样式库并不影响别的页面

    vue 修改第三方样式库并不影响别的页面 1.需要场景 当 在vue中 style 标签有 scoped 属性时,...

  • vue 样式改写

    普通方式 通过在App.vue这个大组件中添加全局样式可以修改 添加 标签(配合 !important )改写,注...

  • vue-lazyload

    yarn add vue-lazyload main.js XXX.vue 各种样式修改

  • 修改element样式问题

    在开发中发现了修改elementUI样式的时候,添加了scoped的组件无法修改的样式首先我们要了解一下vue s...

网友评论

      本文标题:在vue中修改audio的样式

      本文链接:https://www.haomeiwen.com/subject/xxnzyktx.html