自己写的一个模仿微信语音播放的小功能,实现的主要功能是:点击播放,点击暂停,播放切换,,,  代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<style>
li {
list-style: none;
width: 100px;
height: 30px;
border: 1px solid #ccc;
margin-bottom: 10px;
}
.voice_play {
display: none;
}
</style>
<script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
<ul>
<li id="1" data-time="5">
<audio preload="auto" hidden="true"><source src="./明智之举.mp3" type="audio/mpeg"></audio>
<img src="./i_voice_other.png" alt="" class="voice_stop">
<img src="./i_voice_other.gif" alt="" class="voice_play">
</li>
<li id="2" data-time="10">
<audio preload="auto" hidden="true"><source src="./tik_tok.mp3" type="audio/mpeg"></audio>
<img src="./i_voice_other.png" alt="" class="voice_stop">
<img src="./i_voice_other.gif" alt="" class="voice_play">
</li>
<li id="3" data-time="14">
<audio preload="auto" hidden="true"><source src="./You&I.mp3" type="audio/mpeg"></audio>
<img src="./i_voice_other.png" alt="" class="voice_stop">
<img src="./i_voice_other.gif" alt="" class="voice_play">
</li>
</ul>
</body>
<script>
  // 展示语音播放和暂停是通过两张图片切换,一张静态图,一张GIF动图,这里就不传图片,下载的时候自己放入图片即可
  // 语音的时长这里是模拟的,一般是后台会返回,根据实际时长取
$('li').click(function () {
var val = $(this).attr('val')
// 每次点击前清除定时器
clearTimeout(timeId)
var audio = $(this).children("audio")[0]
// 语音的时长
var time = $(this).data('time')
// console.log(time)
// 判断当前点击的是否已经在播放, value的值是自己设置的用来区分播放状态和暂停状态的,1是未播放状态,2是已经在播放状态
if (val && val == 2) {
// console.log('if')
$(this).children('.voice_play').hide()
$(this).children('.voice_stop').show()
audio.pause() // 暂停
// 重新设置为空,方便下一次点击
$(this).attr('val', 1)
} else {
// console.log('else')
// 找到除点击之外的其他语音,判断这次点击之前是否已经有歌曲在播放,如果是从其他的语音跳转过来,
// 要把以前播放的状态改变,,总体思路:页面上只能有一个语音在播放,只有一个val为2 $('li').attr('val', 1)
$(this).attr('val', 2)
var audiolist = $('li').children("audio")
// 暂停其他播放
for (let i = 0; i < audiolist.length; i++) {
// console.log(audiolist[i])
audiolist[i].pause()
}
$('li').children('.voice_play').hide()
$('li').children('.voice_stop').show()
$(this).children('.voice_play').show()
$(this).children('.voice_stop').hide()
audio.load() //加载
audio.play() //播放
}
// console.log($('li').children("audio")) // 语音播放完切换动画
var timeId = setTimeout(() => {
// console.log('set',time)
$(this).children('.voice_play').hide()
$(this).children('.voice_stop').show()
$(this).attr('val', 1)
}, time * 1000)
})
</script>
</html>

js模仿微信语音播放的小功能的更多相关文章

  1. js仿微信语音播放

    html结构如下: <div class="app-voice-you" voiceSrc="xx.mp3"> <img class=&quo ...

  2. 纯css3配合vue实现微信语音播放效果

    前言 每次写点东西都扯两句-0-,这几天一半精力放在移动端,一半维护之前的项目.书也少看了,不过还好依旧保持一颗学习的心.对于css3我是之前有专门整理过的,因此对于原理之前也算了解.今天是项目中遇到 ...

  3. html5的audio实现高仿微信语音播放效果

    效果图 前台大体呈现效果图如下: 点击就可以播放mp3格式的录音.点击另外一个录音,当前录音停止! 思路 关于播放动画,这个很简单,我们可以用css3的逐帧动画来实现.关于逐帧动画,我之前的文章也写过 ...

  4. 网站开发---js与java实现的一些小功能

    记录一下网站开发过程中的一些小功能 1.js获取当前年份: <span>Copyright © 2017-<script>document.write( new Date(). ...

  5. Android模仿微信语音聊天功能

    项目效果如下: 项目目录结构如下: 代码如下: AudioManager.java import java.io.File; import java.io.IOException; import ja ...

  6. html5的audio实现高仿微信语音播放效果(实际项目)

    HTML部分: <div class="tab-pane fade dialog-record" id="dialogRecord"> <vo ...

  7. iOS 类微信语音播放之切换听筒和扬声器的方法解决方案

    [[UIDevice currentDevice] setProximityMonitoringEnabled:NO];   //建议在播放之前设置yes,播放结束设置NO,这个功能是 //添加监听 ...

  8. html5的audio实现高仿微信语音播放效果Demo

    HTML部分: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <t ...

  9. iOS下微信语音播放之切换听筒和扬声器的方法解决方案

    [[UIDevice currentDevice] setProximityMonitoringEnabled:YES]; //建议在播放之前设置yes,播放结束设置NO,这个功能是开启红外感应 // ...

随机推荐

  1. C++输出斐波那契数列的几种方法

    定义: 斐波那契数列指的是这样一个数列:0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, ... 这个数列从第三项开始,每一项都等于前两项之和. 以输出斐波那 ...

  2. Git 之 与Github交互

    我们不可能只在一台电脑上开发,白天在公司用公司电脑,晚上在家可以用自己电脑.但是这个代码怎么让两台电脑同步呢?总不能用U盘复制粘贴.太繁琐. 这里我们就可以找个代码托管的平台,帮我们做这件事. Git ...

  3. super-smack

    我有个办法,不过不是用LR,是用super-smack,如果只对数据库进行抗压力测试,应该管用.Super-smack 现在是1.3版,源码下载地址如下:http://vegan.net/tony/s ...

  4. Dojo Javascript 编程规范(转)

    前言 相当不错的 Javascript 编程风格规范,建议大家采用此规范编写 Javascript.原文链接: http://dojotoolkit.org/developer/StyleGuide ...

  5. 说“DPI”

    作者:马健邮箱:stronghorse_mj@hotmail.com发布:2007.03.08更新:2007.04.02 目录一.基本概念二.图像文件中的DPI三.PDG文件中的DPI四.PDF文件中 ...

  6. Gazebo学习随记2 SDF和XML

    Model 模型 一个模型数据库会拥有的文件 database.config:有关数据库的元数据,从CMakeList自动填充『本地不需要』 model文件夹 一个模型[奏是辣个文件夹]会有的文件 m ...

  7. c++位运算符 | & ^ ~ && ||,补码,反码

    一:简介 1 位逻辑运算符: & (位   “与”)  and       ^  (位   “异或”)       |   (位    “或”)   or       ~  (位   “取反” ...

  8. 如何理解虚拟React的DOM(转)

    目录: 1 前言 2 对前端应用状态管理思考 3 Virtual DOM 算法 4 算法实现 4.1 步骤一:用JS对象模拟DOM树 4.2 步骤二:比较两棵虚拟DOM树的差异 4.3 步骤三:把差异 ...

  9. HDU - 1166 敌兵布阵 方法一:(线段树+单点修改,区间查询和) 方法二:利用树状数组

    C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了.A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任务就是要监视这些工兵营地的活动情况.由于 ...

  10. web.xml 有什么用?(Java框架)

      1.每个javaEE工程中都有web.xml文件,那么它的作用是什么呢?它是每个web.xml工程都必须的吗? 一个web中可以没有web.xml文件,也就是说,web.xml文件并不是web工程 ...