注冊

微信小程序音樂播放器,音樂播放器小程序制作步驟(渲染頁面)

2018-01-05
導讀:為了解決這個問題,我們給圖片添加一個漸變的遮罩,就像圖10-8那樣,這樣到達文字部分時,背景就變成了黑色,不會影響文字的顯示,而且達到了由圖片到底下列表顏色漸變的效果,...

  頁面渲染

  

  為了解決這個問題,我們給圖片添加一個漸變的遮罩,就像圖10-8那樣,這樣到達文字部分時,背景就變成了黑色,不會影響文字的顯示,而且達到了由圖片到底下列表顏色漸變的效果,非常美觀。

  這個效果主要靠我們的格式文件實現(xiàn),我們先寫我們熟悉的部分。

  1. .list-top {
  2.     position: relative;
  3.     height: 100%;
  4. }
  5. .list-top::after {         
  6.     content: " ";
  7.     display: block;
  8.     padding-top: 100%;
  9. }
  10. .top-info {
  11.     position: absolute;
  12.     bottom: 0;
  13.     width: 100%;
  14.     z-index: 3;
  15. }
  16. .top-img {
  17.     width: 100%;
  18.     height: 100%;
  19.     position: absolute;
  20. }
  21.  
  22. .top-info-inner {
  23.     display: -webkit-box;
  24.     -webkit-box-align: center;
  25.     margin: 0 15px 25px;
  26.     color: #fff;
  27. }
  28.  
  29. .top-info-text {
  30.     -webkit-box-flex: 1;
  31.     margin-right: 10px;
  32. }
  33. .top-info-title {
  34.     font-size: 24px;
  35.     line-height: 36px;
  36.     white-space: nowrap;
  37.     overflow: hidden;
  38. }
  39. .top-info-base {
  40.     font-size: 14px;
  41.     line-height: 20px;
  42. }
復制代碼

 

  “::after”表示在“.list-top”后邊添加,為了是在不修改布局文件的情況下,添加視圖以達到美化的效果。

  

  我們需要添加的遮罩為布局里“top—back”這部分,格式文件為:

  1. .tl-top-b {
  2.     position: absolute;
  3.     bottom: 0;
  4.     width: 100%;
  5.     background-image: -webkit-linear-gradient(top,transparent,currentColor 80%);
  6. }
  7. .tl-top-b::after {
  8.     content: " ";
  9.     display: block;
  10.     padding-top: 60%;
  11. }
復制代碼

 

  -webkit-linear-gradient(top,transparent,currentColor 80%)這行代碼為我們建立了線性漸變的效果,這樣我們的圖片底部就會出現(xiàn)漸變?yōu)楹谏男Ч恕?/font>

  剩下播放按鈕的樣式,這里因為用到了漸變的遮罩和背景圖,為了達到最好的效果,這個按鈕就不能用圖片來顯示了,我們使用代碼來創(chuàng)建一個播放按鈕。

  1. .tl-top-play {
  2.     position: relative;
  3.     display: block;
  4.     width: 42px;
  5.     height: 42px;
  6.     margin-left: 10px;
  7.     border: solid 3px;
  8.     border-radius: 999px;
  9. }
  10. .tl-top-play::after {
  11.     content: " ";
  12.     position: absolute;
  13.     left: 50%;
  14.     top: 50%;
  15.     margin-top: -10px;
  16.     margin-left: -5px;
  17.     display: inline-block;
  18.     vertical-align: middle;
  19.     width: 0;
  20.     height: 0;
  21.     border-style: solid;
  22.     border-width: 10px 16px;
  23.     border-color: transparent transparent  transparent #fff;
  24. }
復制代碼

 

  視圖建立完畢,開始為視圖填充數(shù)據(jù)。

  1. //加載網(wǎng)絡請求函數(shù)
  2. var MusicService = require('../../services/music');
  3. //獲取應用實例
  4. var app = getApp();
  5.  
  6. Page({
  7.     data: {
  8.         // text:"這是一個頁面"
  9.         songList: [],
  10.         imgUrl: '',
  11.         id: 0,
  12.         topinfo: {},
  13.         update_time: '',
  14.     },
  15.     onLoad: function (options) {
  16.         // 頁面初始化 options為頁面跳轉(zhuǎn)所帶來的參數(shù)
  17.         var self = this;
  18.         var id = app.globalData.topListId;
  19.         this.setData({
  20.             id: id
  21.         });
  22.         MusicService.getTopListInfo(id, this.getTopListCallback)
  23.     },
  24. })
復制代碼

 

  這里我們獲取了保存于全局變量里的topListId(即我們點擊的排行分類的ID),然后使用這個ID請求網(wǎng)絡。

  1. getTopListCallback: function (data) {
  2.         var imgUrl = data.topinfo.pic_album;
  3.         this.setData({
  4.             topinfo: data.topinfo,
  5.             update_time: data.update_time
  6.         });
  7.         this.setSongList(data.songlist);
  8.     },
復制代碼

 

  使用回調(diào)函數(shù)為我們的data賦值之后,這里調(diào)用了setSongList這個方法,通過這個方法我們把返回數(shù)據(jù)里我們需要的內(nèi)容保存到songList里。

  1. setSongList: function (songs) {
  2.         var list = [];
  3.         for (var i = 0; i < songs.length; i++) {
  4.             var item = songs[i];
  5.             var song = {};
  6.             var album = {};
  7.  
  8.             album.mid = item.data.albummid
  9.             album.id = item.data.albumid
  10.             album.name = item.data.albumname;
  11.             album.desc = item.data.albumdesc
  12.  
  13.             song.id = item.data.songid;
  14.             song.mid = item.data.songmid;
  15.             song.name = item.data.songname;
  16.             song.title = item.data.songorig;
  17.             song.subTitle = '';
  18.             song.singer = item.data.singer;
  19.             song.album = album;
  20.             song.time_public = item.time_public;
  21.             song.img = 'http://y.gtimg.cn/music/photo_new/T002R150x150M000' + album.mid + '.jpg?max_age=2592000'
  22.             list.push(song);
  23.         }
  24.         this.setData({
  25.             songList: list
  26.         })
  27.     }
復制代碼

 

  最好完成此頁面里的點擊事件:

  1. mainTopTap: function (e) {
  2.         var list = this.data.songList;
  3.         app.setGlobalData({                //使用全局變量playList來保存我們當前的list
  4.             playList: list,
  5.             playIndex: 0                    //表示從第一首歌曲開始播放
  6.         });
  7.         wx.navigateTo({
  8.             url: '../play/play'            //跳轉(zhuǎn)到播放頁
  9.         });
  10.     },
  11.     musicItemTap: function (e) {
  12.         var dataSet = e.currentTarget.dataset;
  13.         var index = dataSet.index;                //獲取點擊的item的序號
  14.         var list = this.data.songList;
  15.         app.setGlobalData({
  16.             playList: list,
  17.             playIndex: index                      //從點擊歌曲開始播放
  18.         });
  19.         wx.navigateTo({
  20.             url: '../play/play'
  21.         });
  22.     },
復制代碼

 

  上一節(jié):微信小程序小白項目開發(fā)案例之音樂播放器-獲取列表頁數(shù)據(jù)

  下一節(jié):微信小程序小白項目開發(fā)案例之音樂播放器-完成相似頁面

  

重磅推薦:小程序開店目錄

第一部分:小商店是什么

第二部分:如何開通一個小商店

第三部分:如何登錄小商店

第四部分:開店任務常見問題

第五部分:小商店可以賣什么

第六部分:HiShop小程序特色功能

第七部分:小程序直播

第八部分:小程序收貨/物流

第九部分:小程序怎么結(jié)算

第十部分:小程序客服

第十一部分:電商創(chuàng)業(yè)

第十二部分:小程序游戲開發(fā)