本文概述
- A.强制显示容器并将其再次隐藏
- B.手动指定波形宽度
WaveSurfer存在此问题, 当不可见应绘制波形的容器或父容器, 因此没有定义尺寸(宽度和高度), 因此, 在将fillParent属性设置为true的情况下初始化WaveSurfer时, 波形当然是绘制的, 但是宽度为0px, 因为它不能确定容器的宽度!
在这篇简短的文章中, 我们将向你介绍在容器最初被隐藏时如何使用WaveSurfer从音频中绘制波形。
A.强制显示容器并将其再次隐藏对于某些人来说可能有问题的第一个解决方案是在绘制波形后不久使div可见, 然后在短时间内将其隐藏。这样可确保不会出现没有尺寸的隐藏div的问题, 因为将绘制div, 因此它具有浏览器指定的尺寸, 并且Wavesurfer将能够自动确定波形宽度。
【当容器不可见(隐藏)时,WaveSurfer.js波形不出现】例如, 给定以下标记, 其中隐藏了波形的容器:
<
div id="hidden-container" style="display: none;
">
<
div id="waveform">
<
/div>
<
/div>
即使最初使用以下JavaScript隐藏容器, 我们也应该能够正确渲染波形:
// Initialize a simple instance of WaveSurfervar wavesurfer = WaveSurfer.create({container: '#waveform'});
// Load an audio filewavesurfer.load('/myaudio.mp3');
// Attach on ready listener to WaveSurferwavesurfer.on('ready', function () {// Make the container temporarily visibledocument.getElementById("hidden-container").style.display = '';
// Draw the waveswavesurfer.drawBuffer();
// Hide the container once again ! Now WaveSurfer should have been rendered normallydocument.getElementById("hidden-container").style.display = 'none';
});
B.手动指定波形宽度如上所述, 初始化wavesurfer实例时最初隐藏容器或波形本身时会发生问题。因此, 如果你不想应用第一个解决方案, 则可以选择该解决方案, 从而解决了手动指定波形宽度的问题。可以在初始化期间将fillParent属性设置为false, 并通过minPxPerSec属性为在波上渲染的每一秒指定最小宽度(以像素为单位)。
这种方法的缺点是失去了插件提供的响应能力:
// Initialize a simple instance of WaveSurfervar wavesurfer = WaveSurfer.create({container: '#waveform', // Prevent autosizefillParent: false, // Define a minimum amount of pixels that should be used// to draw a single second of the sound. This defines a// specific width to the minPxPerSec: 10});
// Load an audio filewavesurfer.load('/myaudio.mp3');
即使容器或元素本身是隐藏的, 使用任何上述解决方案也可以保证波形的呈现。
编码愉快!
推荐阅读
- 从内部类内部访问局部变量,需要将其声明为final(java)
- 云原生的进阶之路|「Docker入门指北」容器很难理解(带你从头到尾捋一遍)
- ultraiso u盘装系统,本文教您如何制作u盘打开
- u盘不显示文件怎样办,本文教您怎样处理
- u盘变成文件夹怎样办,本文教您如何处理
- u盘怎样低格式化,本文教您如何低格式化
- 怎样把u盘当电脑内存来运用,本文教您如何设置
- 一键u盘v3.3如何安装系统,本文教您如何安装
- u盘打开盘装系统,本文教您如何安装系统