从零开始制作H5应用(3)——V3.0版,loading,背景音乐及自动切换

H5 开发经验:从入门到精通 H5 开发是一个充满挑战和机遇的领域,掌握 HTML5、CSS3、JavaScript 和常用 H5 API 是必不可少的。通过不断学习和实践,你也可以成为一名优秀的 H5 开发者。 阅读详情

标签:

我们的第一个H5应用经过V1.0与V2.0的制作,已经越来越惊艳了,这一次,我们继续来给她梳妆打扮,让她更漂亮。

任务

1、加入页面加载完成前的loading动画,提升用户体验; 
2、加入背景音乐,自动播放,并添加控制图标,可以控制播放与暂停 
3、让页面实现自动切换。

实现

第一步:Loading动画

index.html 


……
<body>
<div class=‘loader loader--spinningDisc‘></div>
<div id="pages">
……

style.css 


.loader {
    margin: 10em auto;
    z-index:10000;
}

.loader--spinningDisc {
    border: solid 0.5em #9b59b6;
    border-right-color: transparent;
    border-left-color: transparent;
    padding: 0.5em;
    width: 2em;
    height: 2em;
    border-radius: 50%;
    background: #3498db;
    background-clip: content-box;
    animation: spinDisc 1.5s linear infinite;
}
@keyframes spinDisc {
    50% {
        border-top-color: #3498db;
        border-bottom-color: #3498db;
        background-color: #2ecc71;
    }
    100% {
        transform: rotate(1turn);
    }
}

效果:

技术分享

我们让它在页面加载完成之后就自动隐藏,并且让下面的箭头在页面完成加载后再出现:

myfn.js


window.onload = function(){
    $(".loader").css("z-index","1");
    $(".upicon").css("z-index","1000");
}

style.css

.upicon {
  width: 60px;
  height: 60px;
  position: absolute;
  left: 50%;
  bottom: 20px;
  margin-left: -30px;
  z-index: 1; //注意这里与之前的不同
}

好了,loading动画就处理好了。

第二步:背景音乐

我们先要准备好背景音乐的素材,最好是纯音乐的,并且经过剪切的,因为是移动端,既要考虑流量问题,也要考虑到我们整个应用的时长,并且充分利用循环播放的特性。

由于移动端浏览器基本上都是支持H5的,而我们做的也是基于H5的应用,所以我们直接采用H5的标签来在页面中插入音乐。

index.html 


……
<audio src="1.mp3" autoplay="autoplay" id="audio" hidden="hidden"></audio>

……

再次刷新浏览器,便可听到我们插入的悦耳的音乐了。

现在,我们加入控制图标并在myfn.js里编写控制播放与暂停的功能。

我们准备两张png格式的图片,分别在音乐播放与暂停时来显示,如图:

技术分享

在页面中加入一个ID为audioPlay的div,负责显示图片:

index.html

……
<audio src="1.mp3" autoplay="autoplay" id="audio" hidden="hidden"></audio>
<div id="audioPlay"></div>
……

style.css


#audioPlay {
  width:38px;
  height: 38px;
  background-image: url("imgs/music_play.png");
  background-repeat: no-repeat;
  background-size: 100% 100%;
  position: absolute;
  top: 5%;
  right: 5%;
  z-index: 9999999;
}

效果如图:

技术分享

然后我对myfn.js进行改造,将页面切换部分的代码封装为一个独立的功能函数,方便后面自动切换使用,为了避免与音乐控制按钮发生冲突,将页面切换监听事件绑定到.page之上。改造后的myfn.js全部代码如下:

myfn.js

$(function(){
    var curpage=1;
    var totalpage,nextpage,lastpage,nexttotalpage;
    totalpage = $(".page").length;
    nexttotalpage = totalpage + 1;

    window.onload = function(){
        $(".loader").css("z-index","1");
        $(".upicon").css("z-index","1000");
        initAudio("audio");
    }

    var audio;
    function initAudio(id){
        audio =  document.getElementById(id);
    }

    document.addEventListener(‘touchmove‘,function(event){
        event.preventDefault(); },false);

//控制音乐播放停止和音乐ico图标变换

    $(".page").swipeUp(function(){
        swichpage();
    })

    $("#audioPlay").on(‘click‘,function(){
        if(audio.paused){
            audio.play();
            this.style.backgroundImage="url(imgs/music_play.png)";
        }else{
            audio.pause();
            this.style.backgroundImage="url(imgs/music_pause.png)";
        }
    });

    function swichpage() {

//判断当前页是否为最后一页

        //获取总页数,以及总页数的+1后的序号,供后面for循环使用

        //如果是最后一页,显示第一页,并移除所有page上的所有css效果类,否则显示下一页,并移除上一页的切换动画效果
        if (curpage == totalpage) {
            for (var i = 1; i < nexttotalpage; i++) {
                $(".page" + i).removeClass("hide");
                $(".page" + i).removeClass("show");
                $(".page" + i).removeClass("pt-page-moveFromBottomFade");
            }
            $(".page1").addClass("show");
            $(".page1").addClass("pt-page-moveFromBottomFade");
            curpage = 1;
        } else {
            nextpage = curpage + 1;
            lastpage = curpage - 1;
            $(".page" + curpage).removeClass("pt-page-moveFromBottomFade");
            $(".page" + curpage).addClass("pt-page-moveToTopFade");
            $(".page" + curpage).removeClass("show");
            $(".page" + curpage).addClass("hide");
            $(".page" + nextpage).removeClass("hide");
            $(".page" + nextpage).addClass("show");
            $(".page" + nextpage).addClass("pt-page-moveFromBottomFade");
            $(".page" + lastpage).removeClass("pt-page-moveToTopFade");
            curpage = nextpage;
        }
    }
})
//the end

再次刷新浏览器,初始状态下音乐自动播放,并且控制按钮为亮色的,点击控制按钮后,音乐暂停播放,图标变为暗色,如下图:

技术分享

第三步:自动切换

实现自动切换的原理其实就是一个典型的定时器功能,代码如下:

myfn.js 

……
            curpage = nextpage;
        }
    }
  setInterval(function(){
        swichpage();
    },4000);
})
// the end

这样就实现了页面每四秒自动切换至下一页的功能。

好了,这一次的改造相对来说比较简单,V3.0版本就大功告成了。

H5页面背景音乐,C33 360°旋转效果 在做H5页面的时候,经常会需要用到背景音乐,音乐图标自动旋转 HTML代码如下: 1 &lt;div id="audio_btn" class="rotate"&gt; 2 &lt;audio loop src="bg_audio.mp3" id="media" autoplay="" preload=""&gt;&lt;/audio& 阅读详情

相关推荐

网页音乐播放插件:从基础到实战

本文还有配套的精品资源,点击获取 简介:音乐插件是网页设计中的关键元素,能提升用户体验,尤其对于音乐相关网站来说至关重要。本资源提供了一个为网页设计的音乐播放功能插件,帮助开发者轻松集成音乐播放功能。音乐插件通常为JavaScript或HTML5代码库,支持多种音频格式,并确保跨平台兼容性。在选择和使用音乐插件时,需注意兼容性、用户交互、响应式设计、性能优化和版权问题。样式...

weixin_36047538的博客 1857

从零开始学习制作H5应用——V3.0版,loading,背景音乐及自动切换

我们的第一个H5应用经过V1.0与V2.0的制作,已经越来越惊艳了,这一次,我们继续来给她梳妆打扮,让她更漂亮。任务 1、加入页面加载完成前的loading动画,提升用户体验; 2、加入背景音乐,自动播放,并添加控制图标,可以控制播放与暂停 3、让页面实现自动切换。 实现第一步:Loading动画index.html …… <body> <div class='loader loa

林中路 3778

html5旋转音乐图标,控制背景音乐jquery.rotate

仿照易企秀制作html5背景音乐控制按钮,可以暂停,开始h5中的背景音乐

audio插入背景音乐_HTML5添加背景音乐 3种方法个人推荐audio

这里推荐两种方法,就是两个标签或者常用 +css布局 隐藏播放器 做网站比较实用!html5添加音乐说明:1、src毫无疑问写路径.2、使用hidden="true"表示隐藏音乐播放按钮,相反使用hidden="false"表示开启音乐播放按钮。3、使用autostart="true" 表示是打开网页加载完后自动播放。4、使用loop="true"表示 循环播放 如仅想播放一次则为:loop...

weixin_39611161的博客 1091

H5学习资料

H5的入门的资料特别适合初学者,其中包括了CSS和JSP的入门学习资料

从NASA DataPort下载到PyTorch Dataset:手把手处理USGS光谱库的AVIRIS数据

本文详细介绍了如何从NASA DataPort下载USGS光谱库的AVIRIS高光谱数据,并将其转化为PyTorch Dataset对象。内容涵盖数据获取、预处理、辐射定标及高效数据加载技巧,特别针对AVIRIS数据的水吸收波段剔除和波段分组标准化进行了重点讲解,为环境监测、地质勘探等领域的研究者提供实用指南。

weixin_30607659的博客 281

html背景音乐

点关注

m0_74012486的博客 1万+

告别‘火龙’:实测BES2800/RK2108等主流芯片,聊聊AI眼镜的功耗与散热‘内卷’实战

本文深入探讨了AI智能眼镜在功耗与散热方面的挑战,重点分析了恒玄BES2800和瑞芯微RK2108等主控芯片的能效表现。通过实测数据和优化策略,揭示了在6nm工艺、异构计算和系统级散热方案下的实战经验,为AI眼镜的功耗管理提供了实用解决方案。

weixin_30839881的博客 945

v-loading在可变高度元素上使用

v-loading在可变高度元素上使用时,元素出现竖向滚动条时,loading无法全覆盖此时可用v-loading.body指令即可

bian2021的博客 1577

STM32G4实战:用CubeMX+Keil五分钟搞定FreeRTOS多任务LED控制(避坑指南)

本文详细介绍了如何在STM32G4系列芯片上使用CubeMX和Keil快速配置FreeRTOS实现多任务LED控制,包括环境准备、时钟配置、任务创建及常见问题解决方案。重点解决了时钟源冲突等高频问题,并提供了优化建议和进阶应用示例,帮助开发者高效完成嵌入式开发任务。

joy55的博客 222

别再只画版图了!用ADS RFPro的Circuit模型,快速评估滤波器加电容后的性能变化

本文详细介绍了如何利用ADS RFPro的Circuit模型功能,实现射频滤波器设计中版图与集总元器件的高效协同仿真。通过混合仿真技术,工程师可以快速评估滤波器加电容后的性能变化,大幅缩短设计迭代周期,提升工作效率。文章还提供了实战案例和高级技巧,帮助读者掌握这一创新设计方法。

weixin_28559803的博客 257

v-loading在可变高度元素上使用(超出父级元素时,loading遮罩未完全覆盖)

父级元素设置overflow:auto;子级元素高度超过父级元素时,子级元素滚动到上方,调用loading,此时loading遮罩未完全覆盖。v-loading 参数。

weixin_42646650的博客 1270

30、航空公司调度问题的数学模型解析

本文详细解析了航空公司调度问题中的核心数学模型,包括航班时刻表生成、机组人员排班和飞机调度的建模方法与求解技术。通过定义变量、约束条件及目标函数,结合线性规划、整数规划等方法,帮助航空公司实现高效调度。文章还探讨了模型的优化策略、简化方法以及实际应用案例,为提升航空运营效率提供了理论支持和实践指导。

beer8的博客 258

v-loading使用(来自官网介绍)

记录使用Element-UI的v-loading指令。Element提供了两种调用Loading的方法:指令和服务。 指令 对于自定义指令 v-loading,只需要绑定 Boolean即可,默认情况下,loading遮罩会插入到绑定元素的子节点通过添加 body修饰符,可以使遮罩插入至DOM中的body上。 自定义加载文案、图标和背景色 在绑定了v-loading指令的元素上添加elemen...

sherpan的博客 6万+

在 VS Code 里配置 SAP Joule for Developers 的 ABAP AI side-by-side 能力

摘要: 随着ABAP开发工具链的演进,VS Code逐渐融入ABAP开发流程,SAP Joule for Developers的ABAP AI能力通过side-by-side模式(基于BTP中央服务)为多系统开发提供统一AI支持。该模式避免了各ABAP后端独立升级AI能力的碎片化问题,由管理员配置BTP订阅URL后,开发者可在ADT或VS Code中全局调用。实际落地需注意角色分工(管理员配置服务,开发者填写URL)、AI units资源规划及配置细节(如区分全局与项目级设置)。建议将Joule URL纳入

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 120

Open3D (C++) 计算点云坐标最值及其索引

使用C++版本的Open3D计算点云最值点及其对应的下标索引

点云侠的博客 728

Element UI三十三Loading加载

简介 在Element中,并没有提供组件用于加载,而是通过指令或服务的方法调用Loading。指令指的是v-loading,它需要绑定一个Boolean。默认情况下,Loading遮罩会插入到绑定元素的子节点,若添加body修饰符则可以使遮罩插入DOM中的body上。 <el-table v-loading="loading" :data="tableData" style="width: 100%;"> <el-table-column pro

海恩的博客 1792

外骨骼机器人(五):步态分析之正常步态

研究病理步态之前,需要了解正常步态,作为判断标准。但是需要记住两个问题:1.“正常”因人而异,性别、年龄、身体情况都需要考虑在内,因此,需要对不同的个体选择合适的正常标准;2.即使病人的步态与正常步态有某种不同,这也不能说明这是不可取的,也不能说明应该把它变成“正常”步态。许多步态异常是对病人的一些问题的一种补偿,尽管异常,但它们仍然是有用的。步态周期的定义是连续为两次发生重复行走事件之间的时间间隔。尽管可以选择任何事件来定义步态周期,但通常使用一只脚接触地面的瞬间(“初始接触”)是方便的。

行者无疆的博客 1993

H5页面点击按钮时的loading图

今天一个H5页面要求发送数据请求时增加一个loading的图层,于是就自己写了一个。 实现的原理很简单,两个div,z-index设置的大一些,一个div是loading的背景,另外一个自然是旋转的菊花图。 html如下: css样式也比较简单: .modal-bg{ display: none; position: a

a527749703的专栏 6728

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain&#39;s apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath(&#39;DeepLearnToolbox&#39;));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand(&#39;state&#39;,0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W&#39;); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand(&#39;state&#39;,0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = &#39;sigm&#39;;%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, &#39;Too big error&#39;);```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand(&#39;state&#39;,0)sae = saesetup([784 100]);sae.ae{1}.activation_function = &#39;sigm&#39;;sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)&#39;)% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = &#39;sigm&#39;;nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, &#39;Too big error&#39;);```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x&#39;,28,28,60000))/255;test_x = double(reshape(test_x&#39;,28,28,10000))/255;train_y = double(train_y&#39;);test_y = double(test_y&#39;);%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you&#39;ll get around 1.2% errorrand(&#39;state&#39;,0)cnn.layers = { struct(&#39;type&#39;, &#39;i&#39;) %input layer struct(&#39;type&#39;, &#39;c&#39;, &#39;outputmaps&#39;, 6, &#39;kernelsize&#39;, 5) %convolution layer struct(&#39;type&#39;, &#39;s&#39;, &#39;scale&#39;, 2) %sub sampling layer struct(&#39;type&#39;, &#39;c&#39;, &#39;outputmaps&#39;, 12, &#39;kernelsize&#39;, 5) %convolution layer struct(&#39;type&#39;, &#39;s&#39;, &#39;scale&#39;, 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, &#39;Too big error&#39;);```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, &#39;Too big error&#39;);%% ex2 neural net with L2 weight decayrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex3 neural net with dropoutrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex4 neural net with sigmoid activation functionrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.activation_function = &#39;sigm&#39;; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex5 plotting functionalityrand(&#39;state&#39;,0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = &#39;softmax&#39;; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand(&#39;state&#39;,0)nn = nnsetup([784 20 10]); nn.output = &#39;softmax&#39;; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

H5非常炫酷的加载特效loading

非常酷炫的前端加载特效 loading 动态停止方法: .spinner-loader:not(:required) { -moz-animation: spinner-loader 1500ms infinite linear; -webkit-animation: spinner-loader 1500ms infinite linear;//去掉就能停止动画 an

不积跬步无以至千里 1万+

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

h5音乐播放器,自定义外观。(纯原生)

选型思路,首先三件套是基础,vue2主要是因为公司的项目比较老旧,所以没有选择最新的vue3框架,后期会考虑往vue3迁徙。主要是因为手写一个进度条太浪费时间,而且实现进度条的技术难度很低,自己实现一个进度条可以说是既浪费时间又没有什么提升。none表示不进行预加载,metadata表示不进行预加载但会获取进度长度,auto表示对资源进行预加载。进度条可拖拽,可暂停播放,可调整音量。这个音乐播放器是基于简单需求进行开发的,后期应该不会再升级更复杂的功能,此播放器的开发被我暂停在了1.0初级版本。

lucklyff的博客 1746

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Vue3开发一个v-loading的自定义指令

使用loading组件再创建一个vue实例,然后将实例保存到mounted(el)的el中(这个实例只会在mounted中创建一次),这样就可以在其他的钩子函数中也可以获取到这个实例了。v-loading指令主要是将loading组件生成的DOM动态插入到指令作用的DOM对象上(v-loading=true),如果v-loading=false那么就删除动态插入的。通过看样式代码我们发现,loading组件依赖于父元素有定位,那么如果父元素没有定位的情况下,是不是应该给父元素动态的添加一个相对定位的样式?

3066

html5中自动播放,HTML5自动播放一次(HTML5 autoplay once)

HTML5自动播放一次(HTML5 autoplay once)以下javascript函数提供并自动播放音频文件(通过HTML 5音频标签),在6秒时切换mp3播放并从头开始循环+自动播放音频。JavaScript的:function updateaudio() {var a_str = '';document.getElementById('audio_span').innerHTML = a...

weixin_42498892的博客 815

Vue进阶(六十一):v-loading 实现加载效果及elementUI 中 el-date-picker中弹出的日期和时间的输入框设置为只读

在项目开发过程中,需要使用el-date-picker日期控件,需求是elementUI 中 el-date-picker中弹出的日期和时间的输入框设置为只读。在接口未请求到数据之前,显示加载中,直到请求到数据后消失。下的顶层元素上的话,就不会触发全屏。在接口的回调函数中,将。,到达加载动画效果。

IT全栈 华强工作室 6万+

h5背景音乐播放代码

ios下音乐不会自动播放,需要手动触发才会播放。但是在微信环境下可以做到自动播放。所以我们可以用下面的代码来实现兼容性自动播放。 //背景音乐开始 //添加一个音乐标签 let el_audio = new Audio(); window.el_audio = el_audio; //把音乐源文件加入到标签上 el_audio.setAttribute("src", require("./audi...

weixin_34289744的博客 2279

h5 audio 背景音乐播放开关控制

现在的活动h5基本都会有bgm的需求,下面提供一个通用的做法。 上面是开关的按钮,页面刚加载进来的时候,音乐是自动播放的。点击开关按钮可以控制音乐的播放和暂停。 产品:需求很简单,怎么实现我不管! 开发:好!那我给你来个五彩斑斓的黑 html: &lt;!--背景音乐--&gt; &lt;audio id="music" loop="loop" style="display:...

开心大表哥 8428
上一篇: 从零开始制作H5应用(2)——V2.0版,多页单张图片滑动,透明过渡及交互指示
下一篇: 从零开始制作H5应用(4)——V4.0,加入文字并给文字加特效
普通网友
博客等级 码龄14年 46粉丝 94原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值