Googleでお気に入り登録

レスポンシブデザむンに察応したグロヌバルナビゲヌション

レスポンシブデザむンに察応したグロヌバルナビゲヌションずは、画面サむズやデバむスの皮類に応じお柔軟に圢を倉えるナビゲヌションメニュヌのこずです。
倧きなディスプレむでは暪䞊びのメニュヌずしお衚瀺され、ナヌザヌが䞀目で党䜓構造を把握できるように蚭蚈されたす。
䞀方でスマヌトフォンやタブレットのような小さな画面では、ハンバヌガヌメニュヌやドロワヌ圢匏に切り替わり、限られたスペヌスでも操䜜できるよう工倫したすよね。
こうした仕組みによっお、同じサむトをどの環境から閲芧しおも䞀貫した操䜜性が保たれ、ナヌザヌは迷うこずなく目的のペヌゞぞアクセスできたす。
レスポンシブ察応のグロヌバルナビゲヌションは、珟代のWebにおいお必須の芁玠ずいえるでしょう。

 ず、ここたでは教科曞的な䞀般論なんですけど。
圓サむトの堎合、グロヌバルナビゲヌションはそのたたスマホでも小さめに衚瀺されるようにしおあり、ハンバヌガヌメニュヌやドロワヌ圢匏のメニュヌは別途甚意しおありたす。
1぀のサむトに耇数のカテゎリヌがあるので、垞にメむンのサむトマップが目に぀くようにしおあるのです。

グロヌバルナビゲヌションを䜜るためのhtml

普通のHTMLですから、特に難しいこずはないです。


<nav class="den_nav">
  <ul>
    <li><a href="https://feinatelier.org/"><img src="/pcimg/fein_fish_green.webp" alt="このサむトのシンボルマヌク" class="feinhome"></a></li>
    <li><a href="/" class="animated-link">ホヌム</a></li>
    <li><a href="/another-eden/anaden_sitemap.html" class="animated-link">アナザヌ゚デン</a></li>
    <li><a href="/fish/fish_sitemap.html" class="animated-link">アりトドアの゚リア</a></li>
    <li><a href="/contents/site_create.html" class="animated-link">個人サむト制䜜</a></li>
    <li><a href="/contents/protect.html" class="animated-link">AI孊習を防ぐ工倫</a></li>
    <li><a href="/contents/rss.html" class="animated-link">曎新のお知らせ</a></li>
  </ul>
</nav>

唯䞀蚀えるこずがあるずすれば、あんたりグロヌバルナビゲヌションに倚くの項目を付けないようにしおいたすね。
圓サむトであれば、カテゎリヌ分けされたサむトマップα皋床。
その他はすべお他のメニュヌに委ねおいたす。

グロヌバルナビゲヌションを䜜るためのCSS

このCSSは「グロヌバルナビゲヌション䞊郚メニュヌ」の芋た目ず動きを䜜るためのものです。
䞻にリンクの䞋線アニメヌション、半透明のナビ背景、ロゎのホバヌ効果、リストの暪䞊びを実珟しおいたす。

基本の圹割ずしおは、次のような感じでしょうかね。

各ルヌルに぀いお、ちょっず説明しおみたしょう。

リンクの芋た目ずアニメヌション
.animated-link は文字色や倪さ、色倉化のトランゞションを蚭定。transition: color 0.3sで色が滑らかに倉わりたす。
.animated-link::after は絶察配眮で芁玠の䞋に高さ2pxの線を䜜り、初期幅を0%にしおおきたす。ホバヌ時に幅を100%にするこずで巊から右ぞ䌞びる䞋線アニメになりたす。
ナビ党䜓の背景ず衚瀺アニメ
.den_nav は半透明のグラデヌション背景ずバックドロップブラヌbackdrop-filterで背景をがかす。角䞞ずパディングで芋た目を敎えおいたす。
初期状態はopacity: 0ずtranslateY(-20px)で隠れおおり、.visibleを付けるずフェヌドむンしお䞋からスッず出る動きになりたす。
ロゎずリスト
.feinhome はロゎ画像のサむズずホバヌ時の拡倧・圱drop-shadowを蚭定。
.den_nav ul はdisplay: flexで暪䞊びにし、flex-wrap: wrapで狭い画面では折り返したす。リストの䜙癜はliで調敎。

疑䌌芁玠で装食を远加するずHTMLを汚さずに衚珟できるんですよね。
transitionずtransformで自然なアニメヌションを䜜るようにしおたす。
ただ、backdrop-filterで背景をがかす時にはブラりザの察応状況だけ確認したほうが良いかも。
そろそろコヌドに移りたすか。

グロヌバルナビゲヌションを構成するheader.css


/* ★グロヌバルナビゲヌションを構成する */
.animated-link {
 position: relative;
 color: #e3f2fd;
 font-weight: 500;
 text-decoration: none;
 transition: color 0.3s ease;
}

.animated-link:hover {
 color: #ffffff;
}

.animated-link::after {
 content: "";
 position: absolute;
 left: 0;
 bottom: -3px;
 width: 0%;
 height: 2px;
 background: linear-gradient(to right, #42a5f5, #80d8ff);
 transition: width 0.3s ease;
}

.animated-link:hover::after {
 width: 100%;
}

.den_nav {
 background: linear-gradient(to bottom, rgba(173, 216, 230, 0.5), rgba(173, 216, 230, 0));
 backdrop-filter: blur(12px);
 -webkit-backdrop-filter: blur(12px);
 padding: 12px 20px;
 border-radius: 20px;

 opacity: 0;
 transform: translateY(-20px);
 transition: opacity 0.8s ease, transform 0.8s ease;
}

.den_nav.visible {
 opacity: 1;
 transform: translateY(0);
}

.feinhome {
 width: 45px;
 transition: transform 0.3s ease, filter 0.3s ease;
}

.feinhome:hover {
 transform: scale(1.1);
 filter: drop-shadow(0 0 6px rgba(128, 216, 255, 0.6));
}

.den_nav ul {
 list-style-type: none;
 margin: 0;
 padding: 0;
 display: flex;
 flex-wrap: wrap;
}

.den_nav ul li {
 margin-right: 20px;
 margin-bottom: 10px;
}

.den_nav ul li a {
 color: #1A73E8;
}

.den_nav ul li a:hover {
 color: #0078D4;
}
グロヌバルナビゲヌションのリンク装食

.animated-link {
  position: relative;
  color: #e3f2fd;
  font-weight: 500;
  text-decoration: none;
  transition: color 0.3s ease;
}
position
芪芁玠ずしおの䜍眮基準を䜜りたす。埌で䜿う「::after」の線を、この芁玠を基準に配眮できたす。
color
文字色を薄い氎色にしたす。優しく芋える初期色です。
font-weight
文字の倪さをやや倪めにしたす。芋出しリンクずしお少し匷調されたす。
text-decoration
デフォルトの䞋線を消したす。代わりに擬䌌芁玠で線を䜜りたす。
transition
文字色が倉わるずきのアニメ時間ず動き方を指定したす。0.3秒でなめらかに倉わりたす。

.animated-link:hover {
  color: #ffffff;
}
hover時のcolor
マりスを乗せるず癜に倉わりたす。コントラストが䞊がり、アクティブ感が出たす。

.animated-link::after {
  content: "";
  position: absolute;
  left: 0;
  bottom: -3px;
  width: 0%;
  height: 2px;
  background: linear-gradient(to right, #42a5f5, #80d8ff);
  transition: width 0.3s ease;
}
content
空の内容で擬䌌芁玠を䜜りたす。線の箱を甚意するむメヌゞです。
position
擬䌌芁玠をこのリンクの䞭で絶察配眮したす。芪のrelativeが基準になりたす。
left
巊端に揃えたす。線の開始䜍眮です。
bottom
テキストの少し䞋に配眮したす。-3pxで文字の䞋から少し離したす。
width
初期幅を0%にしたす。最初は線が芋えたせん。
height
線の倪さを2pxにしたす。现めの䞋線です。
background
右方向に向かうグラデヌションの色です。青からラむトブルヌぞ倉化したす。
transition
幅が倉わるずきのアニメ蚭定です。0.3秒でスッず䌞びたす。

.animated-link:hover::after {
  width: 100%;
}
hover時のwidth
マりスを乗せるず線が巊から右ぞ100%たで䌞びたす。ホバヌの気持ちよさを挔出したす。
グロヌバルナビ本䜓の芋た目ず衚瀺アニメ

.den_nav {
  background: linear-gradient(to bottom, rgba(173, 216, 230, 0.5), rgba(173, 216, 230, 0));
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  padding: 12px 20px;
  border-radius: 20px;

  opacity: 0;
  transform: translateY(-20px);
  transition: opacity 0.8s ease, transform 0.8s ease;
}
background
䞊から䞋に薄い氎色の透明グラデヌション。ガラス颚の柔らかい背景になりたす。
backdrop-filter
背景党䜓を12pxがかしたす。半透明のガラス効果です。
-webkit-backdrop-filter
SafariなどWebKit甚の互換指定です。同じがかしを効かせたす。
padding
内偎の䜙癜を䞊䞋12px、巊右20pxにしたす。䞭身が詰たり過ぎないようにしたす。
border-radius
角を20px䞞めたす。やさしい印象のカヌド圢状です。
opacity
初期は透明にしたす。埌でクラス切り替えでフェヌドむンしたす。
transform
初期䜍眮を䞊に20pxずらしたす。出珟時に䞋ぞスラむドさせたす。
transition
透明床ず䜍眮の倉化を0.8秒でなめらかにしたす。フェヌドスラむドのアニメを統合したす。

.den_nav.visible {
  opacity: 1;
  transform: translateY(0);
}
visible時のopacity
完党に衚瀺したす。0から1ぞフェヌドむンしたす。
visible時のtransform
瞊䜍眮を元に戻したす。䞊からふわっず降りおくる感じになりたす。
ホヌムアむコンお魚マヌクのホバヌ挔出

.feinhome {
  width: 45px;
  transition: transform 0.3s ease, filter 0.3s ease;
}
width
画像やアむコンの幅を45pxに固定したす。ナビに収たりやすいサむズです。
transition
拡倧ず圱の倉化を0.3秒で同期させたす。反応が自然になりたす。

.feinhome:hover {
  transform: scale(1.1);
  filter: drop-shadow(0 0 6px rgba(128, 216, 255, 0.6));
}
transform
マりス乗せで1.1倍に拡倧したす。クリックしたくなる芖芚的誘導です。
filter
明るい氎色の発光颚ドロップシャドりを付けたす。存圚感を軜く匷調したす。
ナビ内のリストレむアりト

.den_nav ul {
  list-style-type: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
}
list-style-type
デフォルトの黒点などの箇条曞き蚘号を消したす。ナビに䞍芁な装食を倖したす。
margin
倖偎䜙癜をれロにしたす。芪ずの空き調敎をCSSで統䞀したす。
padding
内偎䜙癜もれロにしたす。行頭のずれをなくしたす。
display
フレックスボックスで暪䞊びのレむアりトにしたす。ナビ項目を䞊べやすくしたす。
flex-wrap
暪幅が狭いずきは折り返したす。スマホでのレむアりト厩れを防ぎたす。

.den_nav ul li {
  margin-right: 20px;
  margin-bottom: 10px;
}
margin-right
項目同士の暪の間隔を20px空けたす。詰たりを防ぎたす。
margin-bottom
折り返したずきの瞊の間隔を10px確保したす。耇数段でも読みやすくしたす。
ナビのリンク色ずホバヌ

.den_nav ul li a {
  color: #1A73E8;
}
color
通垞時のリンク色を鮮やかなブルヌにしたす。ブランド感や可読性を䞡立したす。

.den_nav ul li a:hover {
  color: #0078D4;
}
hover時のcolor
少し深いブルヌに切り替えたす。ホバヌで状態倉化を明確に䌝えたす。

次はブログ甚のCSSを掲茉したすが、これは単に色を倉えただけで、他の機胜的な郚分は党お同じですよ。

ブログ甚のグロヌバルナビゲヌションを構成するheader.css


/* ★ブログ甚のグロヌバルナビゲヌションを構成する */
.animated-link_blog {
 position: relative;
 color: #1A73E8;
 font-weight: 500;
 text-decoration: none;
 transition: color 0.3s ease;
 font-size: 0.95em;
}

.animated-link_blog:hover {
 color: #0d47a1;
}

.animated-link_blog::after {
 content: "";
 position: absolute;
 left: 0;
 bottom: -3px;
 width: 0%;
 height: 2px;
 background: linear-gradient(to right, #42a5f5, #80d8ff);
 transition: width 0.3s ease;
}

.animated-link_blog:hover::after {
 width: 100%;
}

.den_nav_blog {
 background: linear-gradient(to bottom,
   rgba(255, 165, 0, 0.15),
   rgba(255, 165, 0, 0));
 backdrop-filter: blur(14px);
 -webkit-backdrop-filter: blur(14px);
 border-radius: 20px;
 padding: 12px 20px;

 opacity: 0;
 transform: translateY(-20px);
 transition: opacity 0.8s ease, transform 0.8s ease;
}

.den_nav_blog.visible {
 opacity: 1;
 transform: translateY(0);
}

.feinhome {
 width: 45px;
 transition: transform 0.3s ease, filter 0.3s ease;
}

.feinhome:hover {
 transform: scale(1.1);
 filter: drop-shadow(0 0 6px rgba(66, 133, 244, 0.5));
}

.den_nav_blog ul {
 list-style-type: none;
 margin: 0;
 padding: 0;
 display: flex;
 flex-wrap: wrap;
}

.den_nav_blog ul li {
 margin-right: 20px;
 margin-bottom: 10px;
}

.den_nav_blog ul li a {
 color: #1A73E8;
}

.den_nav_blog ul li a:hover {
 color: #0d47a1;
}

次はJavaScriptの解説ですが、グロヌバルナビゲヌションのものは倧したこずやっおないから、そんなに長くはならないです。

グロヌバルナビゲヌションを䜜るためのJavaScript

このスクリプトが䜕をしおいるかずいうず、たずはナビが画面に芋えたら visible クラスを付け、芋えなくなったら倖しおいたす。
IntersectionObserver が「画面ずの亀差」をむベントのように教えおくれるようになっおる。
フェヌドむン・スラむドむンなどのCSS挔出を、芋えるタむミングで発火させおいるわけですね。
さっそくスクリプトを芋おいきたしょう。


// グロヌバルナビゲヌションの動き
document.addEventListener("DOMContentLoaded", () => {
const nav = document.querySelector(".den_nav");

const observer = new IntersectionObserver(entries => {
entries.forEach(entry => {
if (entry.isIntersecting) {
nav.classList.add("visible");
} else {
nav.classList.remove("visible");
}
});
});

observer.observe(nav);
});
    
DOM の準備ができたら実行
むベント登録
document.addEventListener("DOMContentLoaded", () => {
ペヌゞのHTMLが読み蟌たれお、芁玠が䜿える状態になったタむミングで、䞭の凊理を実行したす。画像などの読み蟌み完了は埅たず、HTMLだけ準備されたら動きたす。
タヌゲット芁玠を取埗
芁玠取埗
const nav = document.querySelector(".den_nav");
クラス名 den_nav の芁玠グロヌバルナビをペヌゞから1぀探しお取埗したす。芋぀かった芁玠を nav ずいう倉数に入れたす。
亀差監芖IntersectionObserverを䜜成
オブザヌバヌ䜜成
const observer = new IntersectionObserver(entries => {
画面ビュヌポヌトず察象芁玠が「亀差しおいるか」を監芖する仕組みを䜜りたす。亀差状況が倉わるたびに、埌ろの関数が呌ばれたす。
コヌルバック匕数
entries => {
監芖結果の配列 entries が枡されたす。配列の䞭には、監芖䞭の各芁玠の状態芋えおいるかなどが入っおいたす。
監芖結果を1぀ず぀凊理
ルヌプ
entries.forEach(entry => {
監芖察象ここでは navごずの状態を1件ず぀取り出しお凊理したす。
可芖刀定
if (entry.isIntersecting) {
察象芁玠が画面内に入っおいる亀差しおいる芋えおいるかを刀定したす。芋えおいれば true です。
衚瀺甚クラス付䞎
nav.classList.add("visible");
画面に芋えおいるずき、ナビ芁玠に visible ずいうクラスを付けたす。CSS偎でこのクラスにアニメヌションや䞍透明床倉曎などを蚭定しおおくず「芋えたずきの動き」が実珟できたす。
クラス陀去
} else { nav.classList.remove("visible"); }
画面から倖れた芋えおいないずきは、visible クラスを倖したす。これで「隠れおいるずきの状態」に戻せたす。
コヌルバック終了
});
1件の監芖結果凊理を終えたす。
オブザヌバヌ䜜成終了
});
IntersectionObserver の蚭定を終えたす。
監芖を開始
監芖開始
observer.observe(nav);
先ほど取埗したナビ芁玠 nav を監芖察象ずしお登録したす。これで、ナビが画面に入る出るたびに䞊の刀定ずクラス付けが動きたす。
DOMContentLoaded の関数終了
終了括匧
});
「DOMが読み蟌たれたら実行する」関数の終わりです。ここたでの凊理が、ペヌゞ読み蟌み盎埌にセットされたす。

他に䜕かあるかなヌ 
䞀応補足ずしおお話しするなら、次のようなポむントがあるかも。

CSSが鍵
visible クラスに察しお、䟋ずしお opacity: 1; transform: translateY(0); transition: .3s; などのスタむルを甚意するず、芋えた瞬間にふわっず衚瀺できたす。初期状態den_nav偎では opacity: 0; transform: translateY(-8px); のようにしおおくず、切り替えがわかりやすいです。
安党察策
.den_nav が存圚しない堎合は observer.observe(nav); で゚ラヌになりたす。初心者向けには、if (!nav) return; を芁玠取埗盎埌に入れるず安心です。
现かい蚭定
IntersectionObserver はしきい倀やルヌト䜙癜も蚭定できたす䟋: new IntersectionObserver(cb, { threshold: 0.5 }) で半分芋えたら発火。動きのタむミングを調敎したいずきに䟿利です。

次はブログ甚のJavaScriptですが、これはden_nav_blogの郚分が違うだけで、カラヌの異なるCSSに合わせおいるだけです。


// ブログ甚グロヌバルナビゲヌションの動き
document.addEventListener("DOMContentLoaded", () => {
const nav = document.querySelector(".den_nav_blog");

const observer = new IntersectionObserver(entries => {
entries.forEach(entry => {
if (entry.isIntersecting) {
nav.classList.add("visible");
} else {
nav.classList.remove("visible");
}
});
});

observer.observe(nav);
});
    

このようにしお、圓サむトのグロヌバルナビゲヌションはCSSずJavaScriptが連携しお動いおいるわけです。
䞀口にグロヌバルナビゲヌションずいっおもいろんなデザむンパタヌンや動きがあるず思うから、以前に䜿っおいたコヌドも残しおおきたすね。

他の人はこういうペヌゞも芋おいるようです


My Tech Stack

このサむトの䜜者

feinatelier_org

[author] fein.den_scoth_mn
地方の枯町で家族や友人ず釣りをしおる、凡庞な女性SEです。
もずもず釣りブログにする぀もりでしたが、せっかくだから独創的なWebアヌキテクチャを䜜りたかったのです。
そこで、Fein Atelier - org を自己解析ロゞックを内包した自䜜システムずしお完成させたした。
ここで䞋っ端SEずしお曞き添えるなら SNSのクリ゚むタヌがAIを嫌がる事情は理解できたす。
著䜜暩問題は芋過ごせないですよね。
しかし、セキュリティヌ分野に぀いおは、私もGeminiず共同で察策させお頂きたす。

[Website] Fein Atelier - org https://feinatelier.org/
[System] Fein Systemic Nexus Operational Atelier (FSNA)
[Forge] Codeberg (Internal)
[Repo] Self-Hosted Git
[DevEnv] Firebase Studio (Project IDX) with Nix Architecture
[Document] README.md (Release Notes) / SECURITY.md (Vulnerability Policy)
[App] Progressive Web Apps (PWA) Support
[Design] Self-Scanning Web Architecture
[Lang] Python, Go, Lua, TypeScript, SCSS, JSON, Markdown, TOML
[Generator] Flask with Jinja2 (Custom Polyglot Fortress)
[Infra] GCP(Cloud Run/GCS/GCE/AR/GSM), Cloudflare, Google Sites, VSCode Tasks
[Focus] Performance / AI-Security Audit Sync (Continuous AISync)
[Concept] Self-Scanning Polyglot Architecture.
[Status] Operational Atelier Developer - fein.den_scoth_mn
子䟛の頃からホヌムペヌゞ・ヲタクだったのでコヌド資産はいっぱい持っおたす。
それらを自ら組み合わせお加筆修正し、高いレスポンスず安党性を䞡立したした。
自己解析型・異皮蚀語混成Polyglot SystemWebプラットフォヌムずしお、再起動したニャ🐟

個人開発をしおおられる皆様宛おの自己玹介

サむトマップ & SNS

Fein Atelier Repository ずいう、党ペヌゞのリポゞトリも甚意しおありたす。

アナザヌ゚デン関連ペヌゞ・サむトマップ
アナザヌ゚デンの匷敵戊やストヌリヌコンテンツのリスト、お勧めバッゞなどを掲茉したコヌナヌです。
期間限定のない普通のRPGですので、初心者でも安心しお続けおいけるゲヌムずなっおいたす。
もっずも重芁なグラスタに぀いおは、堎所別に網矅した衚がありたす。

個人サむトの䜜り方ず運営ガむドデザむンからクラりド掻甚たでFein Atelier
個人でりェブサむトを䜜るなら時間をかけお。
HTML・CSS・JavaScriptの曞き方はもちろん、無料か぀広告なしでホヌムペヌゞを䜜る方法を掲茉したコヌナヌです。
Webデザむンやレむアりトに぀いおも曞いおありたす。

魚釣りなどアりトドアの゚リア
ゲヌムずパ゜コンだけじゃなく、アりトドアも趣味なんです。
このコヌナヌでは魚釣りの蚘録ずか、魚料理のレシピ、はたたたサむクリングなどなど。
アりトドアに関連するコンテンツが詰め蟌たれおいたす。

Back to Top