グーグルで見つけた webkit-transition を使用していくつかのバリエーションを試しましたが、うまくいきませんでした。クリックイベントで表示するオーディオコントロールがいくつかありますが、突然ぎくしゃくして表示されるので、フェードインしたいと思います。ターゲットブラウザーは iOS なので、webkit 拡張機能を試しています。
これは私が現在持っているものです:
<div id = "controls">
<audio id = "audio" controls></audio>
</div>
#controls {
position:absolute;
top: 35px;
left:73px;
height: 20px;
width: 180px;
display:none;
}
#audio {
opacity:0.0;
}
audio.src = clip;
audio.addEventListener('pause', onPauseOrStop, false);
audio.addEventListener('ended', onPauseOrStop, false);
audio.play();
audioControls.style.display = 'block';
audio.style.setProperty("-webkit-transition", "opacity 0.4s");
audio.style.opacity = 0.7;
webkit-transition のドキュメントには、プロパティの変更で有効になると記載されているため、最後の行で style.opacity を変更すると開始されると想定していました。
コントロールは不透明度 0.7 で表示されますが、フェードインしたいのですが、アニメーションが発生していません。
私もこれを試しました:
#audio {
opacity:0.0;
-webkit-transition-property: opacity;
-webkit-transition-duration: 1s;
-webkit-timing-function: ease-in;
}
また試した
audio.style.webkitTransition = "opacity 1.4s";
この投稿からJavaScriptを使用してCSS3トランジションを設定するには?
何も動作しません。iOS、Safari デスクトップ、および Chrome でテストしています。それらのすべてで同じ非結果。
アップデート:
コントロールがスムーズに表示されるようになった場合の回答に従いますが、フェードアウトは機能しません(すぐに消えます。それが起こっていることを確認するために長い時間を入れました)
if (audioControls.style.display && audioControls.style.display === 'block') {
// controls are currently displayed
audio.removeEventListener('pause', onPauseOrStop, false);
audio.removeEventListener('ended', onPauseOrStop, false);
audio.pause();
audioControls.style.display = 'none';
setTimeout(function () {
audioControls.style.webkitTransition = "opacity 4.0s";
audioControls.style.opacity = 0.0;
}, 0);
}
else {
// controls are not displayed, display them and play the audio
audio.src = clip;
audio.addEventListener('pause', onPauseOrStop, false);
audio.addEventListener('ended', onPauseOrStop, false);
audio.play();
audioControls.style.display = 'block';
setTimeout(function () {
audioControls.style.webkitTransition = "opacity 4.0s";
audioControls.style.opacity = 0.7;
}, 0);
}