丰富歌曲页页面

在网易云的歌曲页中, 我们看到有一个封面. 当音乐播放时, 封面转动.

首页让我们更新下song.html的页面结构:

<div class="page" id="app">
        <audio src="#"></audio>
        <div class="disc-container">
            <img class="pointer" src="" alt=""><!--链接略-->
            <div class="disc">
                <div class="icon-wrapper">
                    <svg class="icon icon-play">
                        <use xlink:href="#icon-bofang"></use>
                    </svg>
                    <svg class="icon icon-pause">
                        <use xlink:href="#icon-zanting"></use>
                    </svg>
                </div>
                <img class="ring" src="" alt=""><!--链接略-->
                <img class="light" src="" alt=""><!--链接略-->
                <img class="cover" src="" alt=""><!--通过song/app.js获取封面-->
            </div>
        </div>
        <div class="song-description">
            <h1>{{name}}</h1><!--通过song/app.js获取歌名-->
            <div class="lyric">
                <div class="lines">
                    <!--通过song/app.js获取歌词-->
                </div>
            </div>
        </div>
        <div class="links">
            <a href="#">打开</a>
            <a class="main" href="#">下载</a>
        </div>
    </div>

这一节我们先不获取歌词. 现将封面做好. 在song.html中引入css. 我们先看最后的结果如图:
这里写图片描述
可以看到, 封面上有一个播放/暂停按钮, 那是通过svg实现的. 下方是一个歌名(歌名下还有个歌词, 下一节做). 封面后面还有一个背景图片. 而且在播放时, 封面转动, 暂停时, 封面停止转动.

在前面的几节中, 并没有考虑封面, 不过这不用担心, 我们在前面的代码中加上即可. 本节不讨论.

render(data) {
    let {song, status} = data
    //渲染页面
      $(this.el).css('background-image', `url(${song.cover})`)//添加背景
      $(this.el).find('img.cover').attr('src', song.cover)//添加封面
      $(this.el).find('.song-description > h1')[0].innerText = song.name//添加歌名

      if ($(this.el).find('audio').attr('src') !== song.url) {
       $(this.el).find('audio').attr('src', song.url)
        }
        //控制封面转动
      if (status === 'playing') {
          $(this.el).find('.disc-container').addClass('playing')
      } else {
          $(this.el).find('.disc-container').removeClass('playing')
      }
}

render(data)用于渲染页面.
封面根据是否播放来转动. 我们需要监听click事件.

 $(this.view.el).on('click', '.icon-play', ()=>{
      this.model.data.status = 'playing'
      this.view.render(this.model.data)
      this.view.play()
  })
  $(this.view.el).on('click', '.icon-pause', ()=>{
      this.model.data.status = 'pasued'
      this.view.render(this.model.data)
      this.view.pause()
  })
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值