soiz1 commited on
Commit
ffc23ee
·
1 Parent(s): e7f415a

Update index.html

Browse files
Files changed (1) hide show
  1. 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