Update index.html
Browse files- index.html +62 -5
index.html
CHANGED
@@ -7,6 +7,66 @@
|
|
7 |
<script>
|
8 |
eruda.init();
|
9 |
</script>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
10 |
<link rel="icon" type="image/svg+xml" href="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCIgdmlld0JveD0iMCAwIDIwMCAyMDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgbGFuZz0iamEiPjxkZWZzPiA8bGluZWFyR3JhZGllbnQgaWQ9ImdyYWQxIiB4MT0iMCUiIHkxPSIwJSIgeDI9IjAlIiB5Mj0iMTAwJSI+IDxzdG9wIG9mZnNldD0iMCUiIHN0b3AtY29sb3I9IiMzNDc0ZWIiIC8+IDxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iIzM0YThlYiIgLz4gPC9saW5lYXJHcmFkaWVudD4gPC9kZWZzPiA8IS0tIOWQhOS6uuWbvuWkjeS9nOWumuS7tuWkjeaWsOWIl+OBjOaWsOWIl+OBq+OBhOOBq+OBvuOBq+OCi+OCieWbvuWkjeOBjOOCjOOCieOCk+ODq+ODvOODrOODs+ODg+OCiwotLT4gPHBvbHlnb24gcG9pbnRzPSI1MCw1MCA1MCwxNTAgMTUwLDEwMCIgZmlsbD0idXJsKCNncmFkMSkiIHN0cm9rZT0iYmxhY2siIHN0cm9rZS13aWR0aD0iMiIgLz48L3N2Zz4=">
|
11 |
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
12 |
<link rel="preconnect" href="https://fonts.googleapis.com">
|
@@ -1335,21 +1395,18 @@
|
|
1335 |
}
|
1336 |
});
|
1337 |
|
1338 |
-
// startSyncCheck関数を修正
|
1339 |
function startSyncCheck() {
|
1340 |
if (isCheckingSync) return;
|
1341 |
isCheckingSync = true;
|
1342 |
if (syncCheckInterval) clearInterval(syncCheckInterval);
|
1343 |
syncCheckInterval = setInterval(checkSync, 1000);
|
1344 |
}
|
1345 |
-
|
1346 |
-
// stopSyncCheck関数を修正
|
1347 |
function stopSyncCheck() {
|
1348 |
isCheckingSync = false;
|
1349 |
if (syncCheckInterval) clearInterval(syncCheckInterval);
|
1350 |
}
|
1351 |
-
|
1352 |
-
// checkSync関数を修正(バックグラウンド時はチェックしない)
|
1353 |
function checkSync() {
|
1354 |
if (!isAudioCombined || !isPlaying || isBuffering || isInBackgroundTab) return;
|
1355 |
|
|
|
7 |
<script>
|
8 |
eruda.init();
|
9 |
</script>
|
10 |
+
<script>
|
11 |
+
//青いスクロールバーを追加
|
12 |
+
document.addEventListener("DOMContentLoaded", () => {
|
13 |
+
document.querySelectorAll("input[type='range']").forEach((slider) => {
|
14 |
+
const bubble = document.createElement("div");
|
15 |
+
bubble.style.position = "absolute";
|
16 |
+
bubble.style.background = "#333a";
|
17 |
+
bubble.style.color = "#fff";
|
18 |
+
bubble.style.padding = "4px 8px";
|
19 |
+
bubble.style.borderRadius = "4px";
|
20 |
+
bubble.style.fontSize = "12px";
|
21 |
+
bubble.style.pointerEvents = "none";
|
22 |
+
bubble.style.whiteSpace = "nowrap";
|
23 |
+
bubble.style.transform = "translate(-50%, -120%)";
|
24 |
+
bubble.style.transition = "opacity 0.1s";
|
25 |
+
bubble.style.opacity = "0";
|
26 |
+
bubble.style.zIndex = "1000";
|
27 |
+
document.body.appendChild(bubble);
|
28 |
+
|
29 |
+
let rect = null;
|
30 |
+
|
31 |
+
slider.addEventListener("mouseenter", () => {
|
32 |
+
rect = slider.getBoundingClientRect();
|
33 |
+
bubble.style.opacity = "1";
|
34 |
+
});
|
35 |
+
|
36 |
+
slider.addEventListener("mouseleave", () => {
|
37 |
+
bubble.style.opacity = "0";
|
38 |
+
});
|
39 |
+
|
40 |
+
slider.addEventListener("mousemove", (e) => {
|
41 |
+
if (!rect) rect = slider.getBoundingClientRect();
|
42 |
+
const min = parseFloat(slider.min || 0);
|
43 |
+
const max = parseFloat(slider.max || 100);
|
44 |
+
const step = parseFloat(slider.step || 1);
|
45 |
+
const relativeX = e.clientX - rect.left;
|
46 |
+
const percent = Math.min(Math.max(relativeX / rect.width, 0), 1);
|
47 |
+
let value = min + (max - min) * percent;
|
48 |
+
value = Math.round(value / step) * step;
|
49 |
+
|
50 |
+
// スライダーの値として表示
|
51 |
+
bubble.textContent = value;
|
52 |
+
|
53 |
+
// ツールチップの位置調整
|
54 |
+
const pageX = e.pageX;
|
55 |
+
const pageY = window.scrollY + rect.top;
|
56 |
+
bubble.style.left = `${pageX}px`;
|
57 |
+
bubble.style.top = `${pageY}px`;
|
58 |
+
});
|
59 |
+
|
60 |
+
window.addEventListener("scroll", () => {
|
61 |
+
rect = slider.getBoundingClientRect();
|
62 |
+
});
|
63 |
+
|
64 |
+
window.addEventListener("resize", () => {
|
65 |
+
rect = slider.getBoundingClientRect();
|
66 |
+
});
|
67 |
+
});
|
68 |
+
});
|
69 |
+
</script>
|
70 |
<link rel="icon" type="image/svg+xml" href="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCIgdmlld0JveD0iMCAwIDIwMCAyMDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgbGFuZz0iamEiPjxkZWZzPiA8bGluZWFyR3JhZGllbnQgaWQ9ImdyYWQxIiB4MT0iMCUiIHkxPSIwJSIgeDI9IjAlIiB5Mj0iMTAwJSI+IDxzdG9wIG9mZnNldD0iMCUiIHN0b3AtY29sb3I9IiMzNDc0ZWIiIC8+IDxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iIzM0YThlYiIgLz4gPC9saW5lYXJHcmFkaWVudD4gPC9kZWZzPiA8IS0tIOWQhOS6uuWbvuWkjeS9nOWumuS7tuWkjeaWsOWIl+OBjOaWsOWIl+OBq+OBhOOBq+OBvuOBq+OCi+OCieWbvuWkjeOBjOOCjOOCieOCk+ODq+ODvOODrOODs+ODg+OCiwotLT4gPHBvbHlnb24gcG9pbnRzPSI1MCw1MCA1MCwxNTAgMTUwLDEwMCIgZmlsbD0idXJsKCNncmFkMSkiIHN0cm9rZT0iYmxhY2siIHN0cm9rZS13aWR0aD0iMiIgLz48L3N2Zz4=">
|
71 |
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
72 |
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
|
1395 |
}
|
1396 |
});
|
1397 |
|
|
|
1398 |
function startSyncCheck() {
|
1399 |
if (isCheckingSync) return;
|
1400 |
isCheckingSync = true;
|
1401 |
if (syncCheckInterval) clearInterval(syncCheckInterval);
|
1402 |
syncCheckInterval = setInterval(checkSync, 1000);
|
1403 |
}
|
1404 |
+
|
|
|
1405 |
function stopSyncCheck() {
|
1406 |
isCheckingSync = false;
|
1407 |
if (syncCheckInterval) clearInterval(syncCheckInterval);
|
1408 |
}
|
1409 |
+
|
|
|
1410 |
function checkSync() {
|
1411 |
if (!isAudioCombined || !isPlaying || isBuffering || isInBackgroundTab) return;
|
1412 |
|