当前位置: 首页 > news >正文

做网站获取手机号码专门做爬虫的网站

做网站获取手机号码,专门做爬虫的网站,玉山电商网站建设,我想建网站在这里我用HTML5从头开始一步一步来制作一个简约的音乐播放器#xff0c;大家可以参考一下#xff0c;接下来正式开始。 音乐播放器效果 播放器分析 这里将播放器分两块来做#xff1a; 视图层#xff08;html css#xff09;逻辑层 ( js ) 视图层分析 视图中包含大家可以参考一下接下来正式开始。 音乐播放器效果 播放器分析 这里将播放器分两块来做 视图层html css逻辑层 ( js ) 视图层分析 视图中包含 播放器容器 播放器名称音乐专辑图音乐信息 歌曲名 歌手专辑名控制区 上一曲播放下一曲播放进度条播放时间 当前时间歌曲总时间音频控件 页面背景 逻辑层分析 逻辑层处理包括 加载歌单渲染歌曲信息 专辑图歌曲名歌手专辑名歌曲时长歌曲音频地址监听控制按钮 播放按钮 修改播放状态上一曲判断歌单边界重新渲染歌曲信息下一曲判断歌单边界重新渲染歌曲信息定时器 同步歌曲当前时间和播放进度条歌曲播放完自动切换下一曲 好了播放器基本分析完成接下来开始编码了先进行视图层的编写。 视图层结构编写 根据我在上面的视图层分析来构建HTML结构。 建立index.html结构编码如下 !-- 页面背景 -- body!-- 播放器容器 --div classplayer!-- 播放器名称 --div classheader音乐播放器/div!-- 音乐专辑图 --div classalbumPic/div!-- 音乐信息 --div classtrackInfo!-- 歌曲名 --div classname/div!-- 歌手 --div classartist/div!-- 专辑名 --div classalbum/div/div!-- 播放进度条 --div classprogress/div!-- 控制区 --div classcontrols!-- 播放 --div classplayi classicon-play/i/div!-- 上一曲 --div classpreviousi classicon-previous/i/div!-- 下一曲 --div classnexti classicon-next/i/div/div !-- 播放时间 --div classtime!-- 当前时间 --div classcurrent/div!-- 歌曲总时间 --div classtotal/div/div!-- 音频控件 --audio idaudiosource src/audio/div /body 好了结构编写完毕接下来编写视图层样式。 视图层样式编写 注这里我是用LESS写的CSS后面我会贴出完整代码或者到 CSDN CODE 下载源码 先重置标记样式 html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, embed, figure, figcaption, footer, header, hgroup, menu, nav, output, ruby, section, summary, time, mark, audio, video {margin: 0;padding: 0;border: 0;font-size: 100%;font: inherit;vertical-align: baseline; } /* HTML5 display-role reset for older browsers */ article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section {display: block; } body {line-height: 1; } ol, ul {list-style: none; } blockquote, q {quotes: none; } blockquote:before, blockquote:after, q:before, q:after {content: ;content: none; } table {border-collapse: collapse;border-spacing: 0; } 设置body //这里主要设置背景和flex布局用于播放器垂直居中 body-bg: #111;html,body{height: 100%; }body{background-color: body-bg;display: flex;align-items: center;justify-content: center;color: #fff;font: 16px 微软雅黑; } 设置播放器容器 .player //主要设置播放器的大小、背景颜色、定位等信息 player-bg: lighten(body-bg, 10%); player-w: 375px; player-h: 550px;.player{width: player-w;height: player-h;background-color: player-bg;border-radius: 10px;position: relative; } 设置播放器名称.header样式 .player{ .header{padding: 15px 0;text-align: center;} } 专辑图.albumPic样式 .player{.albumPic{background-image: url(http://p3.music.126.net/SR9eFEjRB0NsscxN7-fHMw/3344714372906000.jpg); //这里先放一张临时图片用于看效果编写完成后把这条属性删除即可background-size: cover; //背景模式width: player-w * 0.72; //通过计算设置宽高可直接用百分比height: player-w * 0.72;margin: auto; //居中border-radius: 10px;} } 专辑信息区域样式 .player{.trackInfo{text-align: center;padding: 20px 0 15px;font-size: 14px;white-space: nowrap;//单独将歌曲名设置一下大小.name{font-size: 24px;margin-bottom: 10px;font-weight: bold;}} } 播放进度条样式 .player{.progress{width: 30%; //这里用于看效果制作完成后设置为0height: 20%;position: absolute; //用绝对定位放到播放器容器最下面和最左面bottom: 0;left: 0;background-image: linear-gradient(top, rgba(255, 255, 255, 0), #0099FF); //背景采用从上到下的线性渐变border-bottom-left-radius: 10px;border-bottom-right-radius: 10px;opacity: .4;} } 按钮控制区域样式设置 .player{.controls{//位置方面不用再额外设置了按照对上面的设置当前控制区的位置正好position: relative;//播放按钮同样采用flex布局用于对内部的网络字体按钮垂直居中.play{cursor: pointer;width: 75px;height: 75px;border: 2px solid #ccc;border-radius: 50%; //加个圆框margin: auto;display: flex;align-items:center;justify-content:center;color: #fff;font-size: 35px;:hover{font-size: 40px; //鼠标经过变大字体}}//上、下一曲 共用样式.btn(){cursor: pointer;position: absolute; top: 25px;font-size: 30px;:hover{font-size: 32px;}}//设置一下按钮位置.previous{ .btn; left: 60px;}.next{.btn;right: 60px;}} } 播放时间区域设置 .player{.time{width: player-w - 40px; //计算pdding后的宽度可自行计算display: flex;position: absolute;bottom: 0;padding: 20px;align-items: center;justify-content: space-between; //两端分布} } 好了通过上面的样式设置播放器的视图层已完毕看下效果三个播放控制按钮是引用的字体 接下来开始编写逻辑层。 逻辑层编写 逻辑层用到了Jquery和歌曲清单数据playlist.js先引用一下 script typetext/javascript srcjs/jquery.min.js/script script typetext/javascript srcjs/playlist.js/script playlist.js就是一堆json的歌单数据数据是从网易云音乐上获取的基本内容如下 //因为做静态页有跨域问题所以就直接把数据拿出来赋值给playlist这个对象上了下面只保留了需要用到的数据对象 var playlist {result: {tracks: [{name: 歌曲名,artists: [{name: 演唱者,}],album: {name: 专辑名,picUrl:专辑图,duration: 时长ms,mp3Url: 音乐地址},...//等等等],}, }; 网易云音乐歌单json数据接口http://music.163.com/api/playlist/detail?idxxx 建立index.js开始编码 先定义一个播放状态对象playStatus //当前播放器状态 var playStatus {currentTrackLen: playlist.result.tracks.length, //歌单歌曲数currentTrackIndex: 0, //当前播放的歌曲索引默认加载第一首歌currentTime: 0, //当前歌曲播放的时间currentTotalTime: 0, //当前歌曲的总时间playStatus: true, //true为播放状态false为暂停状态 }; 因为要用到时间的转换所以编写一个时间转换函数 var timeConvert function(timestamp){var minutes Math.floor(timestamp / 60);var seconds Math.floor(timestamp - (minutes * 60));if(seconds 10) {seconds 0 seconds;}timestamp minutes : seconds;return timestamp; }; 接下来编写一个对象内部方法是控制播放器的 //播放器控制方法对象 var playerControls {//歌曲基本信息设置trackInfo: function(args){//playerlist是playlist.js中的歌单数据根据需求进行数据读取即可var obj playlist.result.tracks[playStatus.currentTrackIndex];args args || {name:obj.name,artist:obj.artists[0].name,album:obj.album.name,albumPic:obj.album.picUrl ?param270y270,total:obj.duration,src: obj.mp3Url,};$(.player .trackInfo .name).text(args.name);$(.player .trackInfo .artist).text(args.artist);$(.player .trackInfo .album).text(args.album); $(.player .albumPic).css(background,url( args.albumPic )); $(.player .time .total).text(timeConvert(args.total / 1000)); //因为歌单数据中的播放长度用ms表示的所以这里 / 1000playStatus.currentTotalTime Math.floor(args.total / 1000);$(#audio source).attr(src,args.src); //切换音乐通过修改source中的src},//播放、暂停状态处理playStatus: function(){$(.player .controls .play i).attr(class, icon- (playStatus.playStatus?pause:play));if(playStatus.playStatus){//用jquery获取audio对象必须加上[0]$(#audio)[0].play();}else{$(#audio)[0].pause();}},//当前时间和进度处理playTime: function(){$(.player .time .current).text(timeConvert(playStatus.currentTime));$(.player .progress).css(width, playStatus.currentTime / playStatus.currentTotalTime * 100 %); //同步进度条}}; 还剩下一个初始化方法了 var init function(){//置一下歌曲信息和播放状态playerControls.trackInfo(); playerControls.playStatus();//播放按钮事件监听$(.player .controls .play).click(function(){//修改播放状态playStatus.playStatus !playStatus.playStatus; //置播放信息playerControls.playStatus();});//上一曲按钮事件监听$(.player .controls .previous).click(function(){//边界判断if(playStatus.currentTrackIndex - 1 0){alert(已经没有上一首了);}else{playStatus.currentTrackIndex --;}//此处切换歌曲功能原来打算采用直接修改src的方法实现但是修改src后之前播放的音乐还继续播放着切换后的音乐却不播放所以最终采用移除audio再加入audio的方式来切换音乐$(#audio).remove();$(.player).append(audio idaudiosource src/audio); //更新音轨信息和播放状态 playerControls.trackInfo();playerControls.playStatus();});//下一曲按钮事件监听$(.player .controls .next).click(function(){if(playStatus.currentTrackIndex 1 playStatus.currentTrackLen){alert(已经没有下一首了);}else{playStatus.currentTrackIndex ;}//换src的方法没法切换声音试了好几种方法都不行只能删了再重建了$(#audio).remove();$(.player).append(audio idaudiosource src/audio); playerControls.trackInfo();playerControls.playStatus();});//用时钟来实时修改当前播放时间及播放完当前曲目自动下一曲setInterval(function(){playStatus.currentTime $(#audio)[0].currentTime; playerControls.playTime();if(playStatus.currentTime playStatus.currentTotalTime){$(.player .controls .next).click();}}, 300); }; 其后再加入init()执行一下就OK了。 完整代码 index.html !DOCTYPE html html langen headmeta charsetUTF-8titleH5音乐播放器/titlelink relstylesheet typetext/css hrefcss/index.cssscript typetext/javascript srcjs/jquery.min.js/scriptscript typetext/javascript srcjs/playlist.js/scriptscript typetext/javascript srcjs/index.js/script /head bodydiv classplayerdiv classheader音乐播放器/divdiv classalbumPic/divdiv classtrackInfodiv classname/divdiv classartist/divdiv classalbum/div/divdiv classprogress/divdiv classcontrolsdiv classplayi classicon-play/i/divdiv classpreviousi classicon-previous/i/divdiv classnexti classicon-next/i/div/div div classtimediv classcurrent/divdiv classtotal/div/divaudio idaudiosource src/audio/div /body /html index.css import reset.css; import fonts.css; html, body {height: 100%; } body {background-color: #111111;display: -webkit-box;display: -webkit-flex;display: -ms-flexbox;display: flex;-webkit-box-align: center;-webkit-align-items: center;-ms-flex-align: center;align-items: center;-webkit-box-pack: center;-webkit-justify-content: center;-ms-flex-pack: center;justify-content: center;color: #fff;font: 16px 微软雅黑; } .player {width: 375px;height: 550px;background-color: #2b2b2b;border-radius: 10px;position: relative; } .player .header {padding: 15px 0;text-align: center; } .player .albumPic {background-size: cover;width: 270px;height: 270px;margin: auto;border-radius: 10px; } .player .trackInfo {text-align: center;padding: 20px 0 15px;font-size: 14px;white-space: nowrap; } .player .trackInfo .name {font-size: 24px;margin-bottom: 10px;font-weight: bold; } .player .progress {width: 0;height: 20%;position: absolute;bottom: 0;left: 0;background-image: -webkit-linear-gradient(top, rgba(255, 255, 255, 0), #0099ff);background-image: linear-gradient(top, rgba(255, 255, 255, 0), #0099ff);border-bottom-left-radius: 10px;border-bottom-right-radius: 10px;opacity: .4; } .player .controls {position: relative; } .player .controls .play {cursor: pointer;width: 75px;height: 75px;border: 2px solid #ccc;border-radius: 50%;margin: auto;display: -webkit-box;display: -webkit-flex;display: -ms-flexbox;display: flex;-webkit-box-align: center;-webkit-align-items: center;-ms-flex-align: center;align-items: center;-webkit-box-pack: center;-webkit-justify-content: center;-ms-flex-pack: center;justify-content: center;color: #fff;font-size: 35px; } .player .controls .play:hover {font-size: 40px; } .player .controls .previous {cursor: pointer;position: absolute;top: 25px;font-size: 30px;left: 60px; } .player .controls .previous:hover {font-size: 32px; } .player .controls .next {cursor: pointer;position: absolute;top: 25px;font-size: 30px;right: 60px; } .player .controls .next:hover {font-size: 32px; } .player .time {width: 335px;display: -webkit-box;display: -webkit-flex;display: -ms-flexbox;display: flex;position: absolute;bottom: 0;padding: 20px;-webkit-box-align: center;-webkit-align-items: center;-ms-flex-align: center;align-items: center;-webkit-box-pack: justify;-webkit-justify-content: space-between;-ms-flex-pack: justify;justify-content: space-between; }index.js $().ready(function(){//当前播放器状态var playStatus {currentTrackLen: playlist.result.tracks.length,currentTrackIndex: 0,currentTime: 0,currentTotalTime: 0,playStatus: true,};//播放器控制方法var playerControls {//歌曲基本信息trackInfo: function(args){var obj playlist.result.tracks[playStatus.currentTrackIndex];args args || {name:obj.name,artist:obj.artists[0].name,album:obj.album.name,albumPic:obj.album.picUrl ?param270y270,total:obj.duration,src: obj.mp3Url,};$(.player .trackInfo .name).text(args.name);$(.player .trackInfo .artist).text(args.artist);$(.player .trackInfo .album).text(args.album); $(.player .albumPic).css(background,url( args.albumPic )); $(.player .time .total).text(timeConvert(args.total / 1000));playStatus.currentTotalTime Math.floor(args.total / 1000);$(#audio source).attr(src,args.src);},//播放、暂停状态处理playStatus: function(){$(.player .controls .play i).attr(class, icon- (playStatus.playStatus?pause:play));if(playStatus.playStatus){$(#audio)[0].play();}else{$(#audio)[0].pause();}},//当前时间和进度处理playTime: function(){$(.player .time .current).text(timeConvert(playStatus.currentTime));$(.player .progress).css(width, playStatus.currentTime / playStatus.currentTotalTime * 100 %);}};var timeConvert function(timestamp){var minutes Math.floor(timestamp / 60);var seconds Math.floor(timestamp - (minutes * 60));if(seconds 10) {seconds 0 seconds;}timestamp minutes : seconds;return timestamp;};(function(){playerControls.trackInfo(); playerControls.playStatus();$(.player .controls .play).click(function(){playStatus.playStatus !playStatus.playStatus; playerControls.playStatus();});$(.player .controls .previous).click(function(){if(playStatus.currentTrackIndex - 1 0){alert(已经没有上一首了);}else{playStatus.currentTrackIndex --;}$(#audio).remove();$(.player).append(audio idaudiosource src/audio); playerControls.trackInfo();playerControls.playStatus();});$(.player .controls .next).click(function(){if(playStatus.currentTrackIndex 1 playStatus.currentTrackLen){alert(已经没有下一首了);}else{playStatus.currentTrackIndex ;}//换src的方法没法切换声音试了好几种方法都不行只能删了再重建了$(#audio).remove();$(.player).append(audio idaudiosource src/audio); playerControls.trackInfo();playerControls.playStatus();});setInterval(function(){playStatus.currentTime $(#audio)[0].currentTime; playerControls.playTime();if(playStatus.currentTime playStatus.currentTotalTime){$(.player .controls .next).click();}}, 300);})();}); 代码下载 下载完整源码 博客名称王乐平博客 博客地址http://blog.lepingde.com CSDN博客地址http://blog.csdn.net/lecepin
http://www.pierceye.com/news/557578/

相关文章:

  • 杭州高端设计网站建设大学生个人简历电子版
  • 北京旅游外贸网站建设手机制作手书app软件
  • 响应式网站 分辨率泉州教育网站
  • 企业在线购物网站建设做画册的网站
  • 做网站图片自动切换怎么建立官网
  • 河南制作网站电话免费的网站登录模板
  • 鹰潭做网站的建筑工程公司取名
  • 网站建设与运营实验开发一个网站的成本
  • 自考网站建设与管理资料郑州高端网站建设哪家好
  • 网站设计开发维护设计云网站
  • 北京工商局网站怎么做增资h5个人页面制作
  • 北京好的网站建设12个 网站模板 管理办法
  • vs2017 如何做网站最近一周新闻热点大事件
  • wordpress建站欣赏解释网站为什么这样做
  • 网站建设模板登录界面七牛wordpress插件
  • 手机 网站制作上饶企业网站建设
  • 网站建设需要知道什么软件深达网站制作深圳公司
  • 怎么做监控网站Wordpress页面函数
  • 梁平网站建设百度搜索排名优化哪家好
  • 芜湖网站建设芜湖狼道cad精品课网站建设
  • qq空间认证的网站后台根目录seo和sem是什么意思
  • 中国建设集团门户网站装修公司做网站
  • 东莞seo建站公司哪家好怎么把网站推广出去
  • 网站建设什么时候好豆瓣wordpress
  • 动漫网站设计报告最好的wordpress商城主题
  • 陕西餐饮加盟网站建设如何做一个网站代码
  • 合浦住房和城乡规划建设局网站网页设计培训机构学什么好
  • 做网站需要注意的地方模板ppt
  • 自己建立公司网站自助建站系统
  • 淅川微网站开发wordpress 侧边收起