HTML5音楽プレイヤーの実装:オーディオ再生コードプロジェクト

1. オーディオ要素の活用

1.1 オーディオタグの基本構文

HTML5の

<audio controls>
  <source src="sample.mp3" type="audio/mpeg">
  ブラウザがこの要素をサポートしていません。
</audio>

controls属性によりユーザーインターフェースが表示され、src属性でメディアファイルのパスを指定します。

1.2 複数フォーマット対応とエラー処理

ブラウザ互換性向上のため、複数形式のメディアファイルを提供する必要があります:

<audio controls>
  <source src="sample.mp3" type="audio/mpeg">
  <source src="sample.ogg" type="audio/ogg">
  ブラウザがこの要素をサポートしていません。
</audio>

非サポートブラウザでは代替手段としてFlashなどを使用できますが、現代では推奨されません。

1.3 高度な制御機能

以下の属性を使用して再生動作を制御可能です:

<audio autoplay loop>
  <source src="sample.mp3" type="audio/mpeg">
</audio>

JavaScriptによるDOM操作:

const audio = document.querySelector('audio');
audio.play(); // 再生
audio.pause(); // 暫定

2. CSS3によるUI最適化

2.1 スタイル設定技法

セレクターの活用例:

.container {
    width: 100%;
    margin: 0 auto;
}

#header {
    background-color: #f8f9fa;
}

スタイルプロパティの調整:

p {
    color: #333;
    background-color: #f5f5f5;
}

.input-field {
    border: 1px solid #ccc;
    border-radius: 4px;
}

2.2 レイアウト設計

Flexboxレイアウト:

.flex-container {
    display: flex;
    justify-content: space-between;
}

レスポンシブデザイン:

@media screen and (max-width: 768px) {
    .flex-container {
        flex-direction: column;
    }
}

2.3 アニメーション技術

キーフレームアニメーション:

@keyframes example {
    from {background-color: red;}
    to {background-color: yellow;}
}

.box {
    animation-name: example;
    animation-duration: 4s;
}

トランジション効果:

.button {
    transition: background-color 0.5s ease;
}

.button:hover {
    background-color: #45a049;
}

3. JavaScriptによるインタラクション処理

3.1 基本構文

変数宣言:

let str = "Hello, JavaScript!";
const num = 42;
let array = [1, 2, 3];
let obj = { name: "JavaScript", type: "Language" };

イベントリスナー:

document.getElementById("myButton").addEventListener('click', function(event) {
    console.log("Button clicked!");
});

3.2 ロジック構築

イベントハンドリング:

document.querySelector('.container').addEventListener('click', function(event) {
    console.log('Bubbling event: Container clicked!');
}, false);

DOM操作:

const list = document.getElementById('myList');
const newItem = document.createElement('li');
newItem.textContent = 'New List Item';
list.appendChild(newItem);

4. オーディオ制御実装

4.1 基本操作

再生・停止処理:

const audioPlayer = document.getElementById('my-audio');
audioPlayer.play();
audioPlayer.currentTime = 0;

音量調節:

audioPlayer.volume = 0.5;

4.2 状態管理

イベントリスナー:

audioPlayer.addEventListener('play', () => {
    console.log('再生開始');
});

audioPlayer.addEventListener('ended', () => {
    console.log('再生終了');
});

ロード状態:

audioPlayer.addEventListener('loadeddata', () => {
    console.log('データ読み込み完了');
});

5. プログレスバー実装

5.1 構造設計

カスタムプログレスバー:

<div id="progressContainer">
  <div id="progressIndicator"></div>
</div>

JavaScript同期:

audioPlayer.addEventListener('timeupdate', () => {
    const percent = (audioPlayer.currentTime / audioPlayer.duration) * 100;
    document.getElementById('progressIndicator').style.width = `${percent}%`;
});

5.2 交互処理

クリックイベント:

document.getElementById('progressIndicator').addEventListener('click', (event) => {
    const rect = progressIndicator.getBoundingClientRect();
    const clickPosition = event.clientX - rect.left;
    const percent = clickPosition / progressIndicator.offsetWidth;
    audioPlayer.currentTime = audioPlayer.duration * percent;
});

CSSアニメーション:

#progressIndicator {
    background-color: #4CAF50;
    height: 20px;
    width: 0;
    transition: width 0.5s;
}

タグ: HTML5オーディオ CSS3スタイル JavaScriptインタラクション プログレスバー実装 オーディオ制御

8月7日 23:38 投稿