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

<!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/C++读写csv文件

    博客转载自:http://blog.csdn.net/u012234115/article/details/64465398 C++ 读写CSV文件,注意一下格式即可 #include <ios ...

  2. 3dsmax里面的喷射器spray和超级喷射器superspray是个什么东西

    以前搜索过粒子系统的一些资料,最早有一篇什么论文里提到一种方法可以用计算机模拟一些看起来数目比较多的一些效果,比如 很多雨滴.下雪天的雪花,作者把这个东西叫particle system,就是粒子系统 ...

  3. opencv中读写视频

    1.介绍 OpenCV 读写视频之前,先介绍一下编解码器(codec) .如果是图像文件, 我们可以根据文件扩展名得知图像的格式.但是此经验并不能推广到视频文件中. 有些 OpenCV 用户会碰到奇怪 ...

  4. 多线程学习-基础( 十一)synchronized关键字修饰方法的简单案例

    一.本案例设计到的知识点 (1)Object的notify(),notifyAll(),wait()等方法 (2)Thread的sleep(),interrupt(). (3)如何终止线程. (4)如 ...

  5. docker网络模式----入门docker的难点

    众所周知,现在docker是轻量级虚拟化的典型代表!这段时间想要建立一个分布式系统,但是手头上主机没那么多,所以使用docker进行虚拟化,但是在使用的过程中对网络这一部分是一直不太理解,特别找了一篇 ...

  6. 将Winform程序及dll打包成可执行的exe

    使用场景 通常开发的Winform程序,引用了其他类库后,在输出目录下都会产生很多DLL文件,exe执行时必须依赖这些DLL.想要Winform程序只有一个可执行exe文件,又不想打包成安装包,就可以 ...

  7. CENTOS 7 升级安装 Python 3.5

    写在前面的话 本文采取源码的方式安装 Python 3.5.2,如果是其它版本会有或多或少的差异,且写这篇的时候官网最新的是 Python 3.7,个人使用 3.5 就足够了,没必要更新到最新,否则出 ...

  8. String类-小用

    字符串-string (1)string在Java中是一个引用类型,string变量可引用一个字符串对象 (2) 例1: s0,s1,s2引用同一个对象 New创建的两个string是不同的对象只是内 ...

  9. django中将views.py中的python方法传递给html模板文件

    常规的模板渲染 from django.db import models # Create your models here. class ArticalType(models.Model): cap ...

  10. Windows10远程报错:由于CredSSP加密Oracle修正(ps:Win10家庭版)

    Windows10远程桌面连接 报错信息 : 网上找到方法 但是奈何是 "Win10家庭版" 不能使用这个办法,具体操作可以看最后的引用链接 !!!! 策略路径:“计算机配置”-& ...