WordPress自定义域与HTML5简洁的音乐播放器
 Sixianqiu主题,一个简洁、多形式(标准、图像、相册、音乐、视频、引用与链接),专门为四弦秋发表诗集的Wordpress博客主题。对于音乐和视频本来是打算用网易云音乐和优酷视频,而萨龙龙的所有站点都使用https来访问,网易云音乐与优酷视频并不支持https访问,所以就使用本地HTML5音乐与视频播放器。
本文就来介绍下如何打造一款Wordpress简洁HTML5音乐播放器,并通过自定义域来获取音乐的地址。
Sixianqiu主题,一个简洁、多形式(标准、图像、相册、音乐、视频、引用与链接),专门为四弦秋发表诗集的Wordpress博客主题。对于音乐和视频本来是打算用网易云音乐和优酷视频,而萨龙龙的所有站点都使用https来访问,网易云音乐与优酷视频并不支持https访问,所以就使用本地HTML5音乐与视频播放器。
本文就来介绍下如何打造一款Wordpress简洁HTML5音乐播放器,并通过自定义域来获取音乐的地址。
HTML5代码
添加到需要显示HTML5音乐播放器的地方
	- <?php if(get_post_meta($post->ID, "audio", true)) { ?>
- <section class="player">
- <audio preload="auto" controls>
-     <source src="<?php $values = get_post_custom_values("audio"); echo $values[0]; ?>">
- </audio>
- </section>
- <?php } ?>
 
代码中判断了是否有自定义域audio这个值,如果没有就不输出整段代码。
JS代码
添加到主题的JS文件中
	
	- $(function() {
-     $('audio').audioPlayer();
- });
- (function(e, t, n, r) {
-     var i = "ontouchstart" in t,
-         s = i ? "touchstart" : "mousedown",
-         o = i ? "touchmove" : "mousemove",
-         u = i ? "touchend" : "mouseup",
-         a = i ? "touchcancel" : "mouseup",
-         f = function(e) {
-             var t = Math.floor(e / 3600),
-                 n = Math.floor(e % 3600 / 60),
-                 r = Math.ceil(e % 3600 % 60);
-             return (t == 0 ? "" : t > 0 && t.toString().length < 2 ? "0" + t + ":" : t + ":") + (n.toString().length < 2 ? "0" + n : n) + ":" + (r.toString().length < 2 ? "0" + r : r)
-         },
-         l = function(e) {
-             var t = n.createElement("audio");
-             return !!(t.canPlayType && t.canPlayType("audio/" + e.split(".").pop().toLowerCase() + ";").replace(/no/, ""))
-         };
-     e.fn.audioPlayer = function(t) {
-         var t = e.extend({
-                 classPrefix: "audioplayer",
-                 strPlay: "播放",
-                 strPause: "暂停",
-                 strVolume: "音量"
-             }, t),
-             n = {},
-             r = {
-                 playPause: "playpause",
-                 playing: "playing",
-                 time: "time",
-                 timeCurrent: "time-current",
-                 timeDuration: "time-duration",
-                 bar: "bar",
-                 barLoaded: "bar-loaded",
-                 barPlayed: "bar-played",
-                 volume: "volume",
-                 volumeButton: "volume-button",
-                 noVolume: "novolume",
-                 mute: "mute",
-                 mini: "mini"
-             };
-         for (var u in r) n[u] = t.classPrefix + "-" + r[u];
-         this.each(function() {
-             if (e(this).prop("tagName").toLowerCase() != "audio") return false;
-             var r = e(this),
-                 u = r.attr("src"),
-                 c = r.get(0).getAttribute("autoplay"),
-                 c = c === "" || c === "autoplay" ? true : false,
-                 h = r.get(0).getAttribute("loop"),
-                 h = h === "" || h === "loop" ? true : false,
-                 p = false;
-             if (typeof u === "undefined") {
-                 r.find("source").each(function() {
-                     u = e(this).attr("src");
-                     if (typeof u !== "undefined" && l(u)) {
-                         p = true;
-                         return false
-                     }
-                 })
-             } else if (l(u)) p = true;
-             var d = e('<div class="' + t.classPrefix + '">' + (p ? e("<div>").append(r.eq(0).clone()).html() : '<embed src="' + u + '" width="0" height="0" volume="100" autostart="' + c.toString() + '" loop="' + h.toString() + '" />') + '<div class="' + n.playPause + '" title="' + t.strPlay + '"><a href="#">' + t.strPlay + "</a></div></div>"),
-                 v = p ? d.find("audio") : d.find("embed"),
-                 v = v.get(0);
-             if (p) {
-                 d.find("audio").css({
-                     width: 0,
-                     height: 0,
-                     visibility: "hidden"
-                 });
-                 d.append('<div class="' + n.time + " " + n.timeCurrent + '"></div><div class="' + n.bar + '"><div class="' + n.barLoaded + '"></div><div class="' + n.barPlayed + '"></div></div><div class="' + n.time + " " + n.timeDuration + '"></div><div class="' + n.volume + '"><div class="' + n.volumeButton + '" title="' + t.strVolume + '"><a href="#">' + t.strVolume + '</a></div></div>');
-                 var m = d.find("." + n.bar),
-                     g = d.find("." + n.barPlayed),
-                     y = d.find("." + n.barLoaded),
-                     b = d.find("." + n.timeCurrent),
-                     w = d.find("." + n.timeDuration),
-                     E = d.find("." + n.volumeButton),
-                     S = d.find("." + n.volumeAdjust + " > div"),
-                     x = 0,
-                     T = function(e) {
-                         theRealEvent = i ? e.originalEvent.touches[0] : e;
-                         v.currentTime = Math.round(v.duration * (theRealEvent.pageX - m.offset().left) / m.width())
-                     },
-                     N = function(e) {
-                         theRealEvent = i ? e.originalEvent.touches[0] : e;
-                         v.volume = Math.abs((theRealEvent.pageY - (S.offset().top + S.height())) / S.height())
-                     },
-                     C = setInterval(function() {
-                         y.width(v.buffered.end(0) / v.duration * 100 + "%");
-                         if (v.buffered.end(0) >= v.duration) clearInterval(C)
-                     }, 100);
-                 var k = v.volume,
-                     L = v.volume = .111;
-                 if (Math.round(v.volume * 1e3) / 1e3 == L) v.volume = k;
-                 else d.addClass(n.noVolume);
-                 w.html("…");
-                 b.text(f(0));
-                 v.addEventListener("loadeddata", function() {
-                     w.text(f(v.duration));
-                     S.find("div").height(v.volume * 100 + "%");
-                     x = v.volume
-                 });
-                 v.addEventListener("timeupdate", function() {
-                     b.text(f(v.currentTime));
-                     g.width(v.currentTime / v.duration * 100 + "%")
-                 });
-                 v.addEventListener("volumechange", function() {
-                     S.find("div").height(v.volume * 100 + "%");
-                     if (v.volume > 0 && d.hasClass(n.mute)) d.removeClass(n.mute);
-                     if (v.volume <= 0 && !d.hasClass(n.mute)) d.addClass(n.mute)
-                 });
-                 v.addEventListener("ended", function() {
-                     d.removeClass(n.playing)
-                 });
-                 m.on(s, function(e) {
-                     T(e);
-                     m.on(o, function(e) {
-                         T(e)
-                     })
-                 }).on(a, function() {
-                     m.unbind(o)
-                 });
-                 E.on("click", function() {
-                     if (d.hasClass(n.mute)) {
-                         d.removeClass(n.mute);
-                         v.volume = x
-                     } else {
-                         d.addClass(n.mute);
-                         x = v.volume;
-                         v.volume = 0
-                     }
-                     return false
-                 });
-                 S.on(s, function(e) {
-                     N(e);
-                     S.on(o, function(e) {
-                         N(e)
-                     })
-                 }).on(a, function() {
-                     S.unbind(o)
-                 })
-             } else d.addClass(n.mini);
-             if (c) d.addClass(n.playing);
-             d.find("." + n.playPause).on("click", function() {
-                 if (d.hasClass(n.playing)) {
-                     e(this).attr("title", t.strPlay).find("a").html(t.strPlay);
-                     d.removeClass(n.playing);
-                     p ? v.pause() : v.Stop()
-                 } else {
-                     e(this).attr("title", t.strPause).find("a").html(t.strPause);
-                     d.addClass(n.playing);
-                     p ? v.play() : v.Play()
-                 }
-                 return false
-             });
-             r.replaceWith(d)
-         });
-         return this
-     }
- })(jQuery, window, document)
 
CSS代码
添加到主题文件的CSS文件中
[successbox]一个简洁的HTML5音乐播放器就设计好了,很方便的集成到Wordpress主题中,你也可以修改其中的代码来匹配自己主题的样式,更详细的说明可以下方第一个按钮。[/successbox][scbutton link="http://tympanus.net/codrops/2012/12/04/responsive-touch-friendly-audio-player/" target="blank" variation="blue"]原文地址(黑色的音乐播放器)[/scbutton][scbutton link="https://sixianqiu.com" target="blank" variation="green"]四弦秋的诗演示(简洁的音乐播放器)[/scbutton]本文原创,作者:萨龙龙,其版权均为萨龙网络所有。
如需转载,请注明出处:https://salongweb.com/html5-audio-player.html 一个平平常常的人,热爱生活、旅行和摄影,骑行去过西藏,一直计划再去。14年从江西骑行来到大理,现栖居于洱海边,食人间烟火,过简单生活,做简约设计!CSS3有太多实用、创新的网页交互效果,而今天跟大家介绍一个让人激动的3D图像旋转效果,使网页更加的生动、漂亮。
国外在HTML5/CSS…曾经也为写HTML/CSS代码而烦恼过,不愿再写下去,感觉很烦琐,写那么多的尖括号,用的标签都是在重复写,而且绝大多数标题都需要闭合标签,再多几…Emmet缩写可以快速地生成HTML代码的结构化标签,在我们编写HTML代码时节省了很多时间,提高了工作效率,让前端开发人员也不会感觉太繁琐,今…[infobox]前端开发工具Emmet的介绍,Emmet快速编写HTML代码和Emmet快速编写CSS样式分别介绍了Emmet的用途,编写HT…个性化的web字体,如萨龙网络的标题、页脚小工具标题、宣传语等都用的是个性化的web字体,在CSS3之前,web设计师们都只能使用电脑中安装好的…作为一个企业站点,客户可以通过电话、QQ等通讯方式很方便的联系到企业,但联系表单是一个必要的功能。
萨龙网络建站一般都使用wordpres…这篇文章我们来创建一个很酷的CSS3模拟弹窗效果,也许你看到过很多类似的弹窗效果,但都是通过jQuery来实现。
通过CSS3模拟弹窗效果…前面我们通过《前端开发利器Emmet的介绍》简单介绍了Emmet以及在编辑器中的安装,今天我们再来看用Emmet超高速的编写HTML代码。
…
一个平平常常的人,热爱生活、旅行和摄影,骑行去过西藏,一直计划再去。14年从江西骑行来到大理,现栖居于洱海边,食人间烟火,过简单生活,做简约设计!CSS3有太多实用、创新的网页交互效果,而今天跟大家介绍一个让人激动的3D图像旋转效果,使网页更加的生动、漂亮。
国外在HTML5/CSS…曾经也为写HTML/CSS代码而烦恼过,不愿再写下去,感觉很烦琐,写那么多的尖括号,用的标签都是在重复写,而且绝大多数标题都需要闭合标签,再多几…Emmet缩写可以快速地生成HTML代码的结构化标签,在我们编写HTML代码时节省了很多时间,提高了工作效率,让前端开发人员也不会感觉太繁琐,今…[infobox]前端开发工具Emmet的介绍,Emmet快速编写HTML代码和Emmet快速编写CSS样式分别介绍了Emmet的用途,编写HT…个性化的web字体,如萨龙网络的标题、页脚小工具标题、宣传语等都用的是个性化的web字体,在CSS3之前,web设计师们都只能使用电脑中安装好的…作为一个企业站点,客户可以通过电话、QQ等通讯方式很方便的联系到企业,但联系表单是一个必要的功能。
萨龙网络建站一般都使用wordpres…这篇文章我们来创建一个很酷的CSS3模拟弹窗效果,也许你看到过很多类似的弹窗效果,但都是通过jQuery来实现。
通过CSS3模拟弹窗效果…前面我们通过《前端开发利器Emmet的介绍》简单介绍了Emmet以及在编辑器中的安装,今天我们再来看用Emmet超高速的编写HTML代码。
…