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

<!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. [转]CSS块级元素和行内元素

    原地址:http://www.studyofnet.com/news/398.html 本文导读:HTML中的元素可分为两种类型:块级元素和行级元素.这些元素的类型是通过文档类型定义(DTD)来指明. ...

  2. tar打包tar.gz文件

    命令格式: tar zcvf dir.tar.gz ./dir 压缩后的文件解压出来会是dir这个文件夹

  3. 通过id设置的css属性和通过元素设置的css属性冲突了,优先级哪个高?

    ---恢复内容开始--- <!DOCTYPE html> <html> <head> <title>div test</title> < ...

  4. javax.swing.Timer

    javax.swing 类 Timer java.lang.Object javax.swing.Timer 所有已实现的接口: Serializable public class Timerexte ...

  5. WordCountPro小程序

    WordCountPro小程序 基本任务 1.githu地址 https://github.com/JarrySmith/WordCountPro 2.psp2.1表   PSP2.1 PSP阶段 预 ...

  6. Altium Designer 3D模型的下载与添加

    先 先晒几个图:是不是很逼真啊..  ---------------------------------------教程---------------------------------------- ...

  7. yzm10的小简介

    yzm10,退役OIer,现役ACMer.大学生一枚,从高中开始接触编程(入门pascal...),过程基本自学,蒟蒻一只,在各大比赛划水打酱油..15年水得noip联二后退役,结束OI之旅.也是在1 ...

  8. [raspberry pi3] hadoop 编译搭建和配置

    Causion: 只有一个raspberry pi3的就随便玩玩吧,瓶颈不在在cpu, 1 G的内存实在是太少了,跑个hadoop就很辛苦了 下面是瞎折腾的过程: oracle的arm jdk的安装过 ...

  9. 抽象类(abstract)【转】

    抽象类(abstract) abstract修饰符可以和类.方法.属性.索引器及事件一起使用.在类声明中使用abstract修饰符以指示某个类只能是其它类的基类.标记为抽象或包含在抽象类中的成员必须通 ...

  10. github分支管理

    一. 需要创建的分支 1.master 主分支 2.dev 开发分支 3.bug 修改bug分支 4.release 预发布分支 二.分支使用 1.在master上创建dev,bug,release分 ...