初踩坑JS加载与audio接口:点击头像开始/暂停背景音乐
2022/4/16 6:19:30
本文主要是介绍初踩坑JS加载与audio接口:点击头像开始/暂停背景音乐,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
背景
封楼期间难得空闲,也静不下心学习,空闲之余萌生了重做引导单页的想法。因为之前都是扒站(某大公司游戏官网)+小改,一来虽然很炫酷,但本人水平有限,仍有很大一部分JS无从下手,甚至是看不懂|-_-|;二来对方毕竟没有开源,无论道德还是法律都说不过去,所以……先从简单处写起,后续慢慢迭代吧!
大致布局:Flex
参见 阮一峰Flex布局教程
头像部分
手残党,暂时没有用CSS或者JS绘制特效,因为之前做头像留着底图,所以偷个懒。
CSS:鼠标指针指向头像切换gif,移开切换png。
JS:音乐播放切换gif,暂停切换png。
背景音乐部分
audio接口参见 HTML audio基础API完全使用指南
我只循环播放了一首歌,所以隐藏audio主体美观一些,然后控制按钮交给头像。有需要多首歌的,可以看一下开源的APlayer
遇到的问题:JS加载阻塞,获取不到元素id
在实现头像处鼠标事件时,一直获取不到头像的id,但是控制台调试发现代码无误。原来由于JS的机制是单线程,所以先运行JS代码,再构建相关DOM,需要在外部引用JS时加上属性async,等构建完DOM再获取。
<script src="./js/reashal.js" async="async"></script>
代码部分
HTML部分
<!DOCTYPE html> <html lang="chn"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,minimum-scale=1.0,user-scalable=no"> <title>你听|睿屿青衫</title> <meta name="author" content="reashal"> <meta name="description" content="不惦来路,轻装且行"> <link rel="stylesheet" href="./css/style.css"> <link rel="shortcut icon" href="https://images.reashal.com/resources/avator/reashal.png"> <link rel="stylesheet" href="https://cdn.staticfile.org/font-awesome/4.7.0/css/font-awesome.css"> <script src="https://images.reashal.com/resources/js/music.js" async="async"></script> </head> <body> <div class="box"> <div class="about" id="bor"> <img src="https://images.reashal.com/resources/avator/reashal.png" id="ava" title="点我有惊喜哦" alt="头像/音乐控件"> <div id="reashal"> <h2><b>睿屿青衫</h2> <p>不惦来路,轻装且行</p> <div class="fgx"></div> <div class="icon"> <ul id="ctr"> <li><a href="https://www.reashal.com/" title="Home" target="blank"><i class="fa fa-paper-plane fa-lg"></i></a></li> <li><a href="https://www.reashal.com/index.php/cross.html" title="Mood" target="blank"><i class="fa fa-pencil fa-lg"></i></a></li> <li><a href="http://wpa.qq.com/msgrd?v=3&uin=532266666&site=ivrpano.com&menu=yes" title="QQ" target="blank"><i class="fa fa-qq fa-lg"></i></a></li> <li><a href="mailto:88811@88.com" title="Mail" target="blank"><i class="fa fa-envelope fa-lg"></i></a> </li> </ul> </div> </div> </div> </div> <div class="footer"> <a target="_blank" href="https://beian.miit.gov.cn/"> <p>鲁ICP备18004237号</p> </a> </div> <div> <!--鼠标点击泡泡特效--> <canvas class="fireworks" style="position:fixed;left:0;top:0;z-index:99999999;pointer-events:none;"></canvas> <script type="text/javascript" src="https://images.reashal.com/resources/js/djtx.js"></script> </div> <div> <audio controls id="music" loop> <source src="https://images.reashal.com/resources/music/LettingGo.mp3" type="audio/mpeg"> </audio> </div> </body> </html>
CSS部分
html, body { height: 100%; width: 100%; margin: 0; padding: 0; } body { background-image: linear-gradient(to right, #ec6fa3, #2f4af2); } .box { position: fixed; height: 100%; width: 100%; /* box铺满屏幕,需要html和body取消边距 */ display: flex; align-items: center; justify-content: center; /* 盒子内部水平垂直居中对齐 */ } .about { width: 70%; max-width: 750px; background-color: rgba(219, 245, 245, 0.1); padding: 1%; } #ava { display: block; width: 100px; height: 100px; border: 2px solid #1eccef; margin: auto; margin-top: 3%; border-radius: 100px; } #ava:hover { content: url("https://images.reashal.com/resources/avator/dyAva.gif"); } #reashal { color: rgb(255, 255, 255); text-align: center; margin: auto; } .fgx { height: 1px; background-color: white; } ul, li { display: inline-block; list-style: none; padding: 1vh; margin: auto; } i:hover { color: #ec6fa3; } .footer { bottom: 3%; width: 100%; position: fixed; text-align: center; } a, p { color: white; font-size: 16px; text-decoration: none; } #music { display: none; }
JS部分
音乐部分
var x = document.getElementById('ava'); // 单击头像开始/暂停背景音乐 var music = document.getElementById('music'); x.onclick = function () { if (music.paused) { music.play(); } else { music.pause(); } } //播放音乐旋转头像 music.onplay = function () { x.src = 'https://images.reashal.com/resources/avator/dyAva.gif'; x.title = '点击暂停背景音乐'; } //暂停音乐停止旋转头像 music.onpause = function () { x.src = 'https://images.reashal.com/resources/avator/reashal.png'; x.title = '点击开启背景音乐'; }
点击特效部分
不贴了,想要的自己从我这里下载,别人写的我也看不懂……
暂时完工
后续 想起什么 学会点新东西再加
成品展示 以后慢慢 更新 吧
这篇关于初踩坑JS加载与audio接口:点击头像开始/暂停背景音乐的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-16Vue3资料:新手入门必读教程
- 2024-11-16Vue3资料:新手入门全面指南
- 2024-11-16Vue资料:新手入门完全指南
- 2024-11-16Vue项目实战:新手入门指南
- 2024-11-16React Hooks之useEffect案例详解
- 2024-11-16useRef案例详解:React中的useRef使用教程
- 2024-11-16React Hooks之useState案例详解
- 2024-11-16Vue入门指南:从零开始搭建第一个Vue项目
- 2024-11-16Vue3学习:新手入门教程与实践指南
- 2024-11-16Vue3学习:从入门到初级实战教程