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;
}