Skip to content

Commit 6cbf797

Browse files
committed
Merge branch 'develop'
2 parents 3985a8d + 452f25c commit 6cbf797

File tree

1 file changed

+59
-2
lines changed

1 file changed

+59
-2
lines changed

WebSite/assets/js/layout.js

Lines changed: 59 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,11 @@
22
* layout.js (refactored)
33
* --------------------------------------------------
44
* 共通レイアウト要素(ヘッダー/フッター)を動的に読み込むスクリプト。
5+
*
6+
* 変更点:
7+
* - モバイル(幅 <= 768px)の場合、`bread-pet` は完全に初期化対象外にする。
8+
* - DOM に要素が含まれていても、表示を消し、移動/マウス検知などのロジックは一切セットしない。
9+
* - デスクトップ時のみ従来の bread-pet の挙動を初期化する。
510
* --------------------------------------------------
611
*/
712

@@ -14,6 +19,12 @@ document.addEventListener("DOMContentLoaded", () => {
1419
return name && name.length > 0 ? name : "index.html";
1520
})();
1621

22+
// ブレークポイント判定: モバイルなら true を返す
23+
function isMobileViewport() {
24+
// CSS 側のメディアクエリと整合する (layout.css の @media (max-width: 768px) に合わせる)
25+
return window.matchMedia("(max-width: 768px)").matches;
26+
}
27+
1728
// ヘルパー: layout.js の読み込みパスから partials の相対パスを返す
1829
function getPartialsPath() {
1930
const scripts = document.getElementsByTagName("script");
@@ -134,11 +145,33 @@ document.addEventListener("DOMContentLoaded", () => {
134145
});
135146
}
136147

137-
// Bread Pet 初期化: 既存の挙動を保ちながら整理
148+
/**
149+
* Bread Pet 初期化
150+
*
151+
* 重要:
152+
* - モバイル判定 (isMobileViewport) の場合は何も初期化せず、要素を完全に非表示にして終了する。
153+
* - これにより移動ロジック、マウスオーバー監視、アニメーションループ等は一切登録されない。
154+
*/
138155
function initBreadPet() {
139156
const bread = document.getElementById("bread-pet");
140157
if (!bread) return;
141158

159+
// モバイルでは完全に非表示かつ初期化対象外とする
160+
if (isMobileViewport()) {
161+
// DOM 上にある場合でも、表示・相互作用を遮断する(CSS より優先されるように inline style を設定)
162+
try {
163+
bread.style.display = "none";
164+
bread.style.visibility = "hidden";
165+
bread.style.pointerEvents = "none";
166+
bread.setAttribute("aria-hidden", "true");
167+
bread.setAttribute("data-bread-disabled", "true");
168+
} catch (e) {
169+
// 何か失敗しても初期化は行わない。
170+
}
171+
return;
172+
}
173+
174+
// 以下はデスクトップ向けの既存ロジック(必要に応じて簡潔化はしていない)
142175
// 状態
143176
let targetX = 0;
144177
let targetY = 0;
@@ -322,7 +355,31 @@ document.addEventListener("DOMContentLoaded", () => {
322355
setupLanguageSwitch(currentPath);
323356
setupActiveNav(currentPath);
324357
setupNavToggle();
325-
initBreadPet();
358+
359+
// bread-pet はモバイル時は初期化しない(表示/ロジックともに除外)
360+
// 加えて、念のため header がすでに bread 要素を含む場合は非表示化する
361+
if (isMobileViewport()) {
362+
const breadEl =
363+
document.getElementById("bread-pet");
364+
if (breadEl) {
365+
try {
366+
breadEl.style.display = "none";
367+
breadEl.style.visibility = "hidden";
368+
breadEl.style.pointerEvents = "none";
369+
breadEl.setAttribute("aria-hidden", "true");
370+
breadEl.setAttribute(
371+
"data-bread-disabled",
372+
"true",
373+
);
374+
} catch (e) {
375+
// 無視
376+
}
377+
}
378+
// モバイルなので初期化はスキップ
379+
} else {
380+
// デスクトップ等の大きいビューでは従来通り初期化
381+
initBreadPet();
382+
}
326383
})
327384
.catch((err) => {
328385
console.error(

0 commit comments

Comments
 (0)