上部の固定ナビゲーションバーによって CSS アンカーの配置がブロックされる問題の解決方法

上部の固定ナビゲーションバーによって CSS アンカーの配置がブロックされる問題の解決方法

多くのウェブサイトでは、ユーザーが簡単に検索したり他のページに移動したりできるように、上部にナビゲーション バーが固定されています。

同時に、長い文書をユーザーが閲覧しやすくするために、目次が追加されます。段落のタイトルをクリックすると、段落の場所にジャンプします。

図に示すように:

アンカーを使用してディレクトリにジャンプすると、固定ナビゲーション バーによってタイトルが隠れてしまうという問題が発生する可能性があります。

1. アンカー位置決め機構

スクロールバーがない場合、アンカーは無効です。

スクロール バーがある場合、スクロール バーは、アドレス ハッシュ (アドレス内の # 記号の後の内容) に対応するアンカー要素のpadding-boxの上端までスクロールします。

2. 解決策

ソースコードの例

サンプルオンラインプレビュー

(1)パディング+マージン

パディングはアンカー要素の配置に影響しますが、マージンはアンカー要素の配置には影響しません。そのため、ジャンプ後のアンカー要素の位置を調整するためにパディングが使用され、レイアウトに対するパディングの影響を相殺するためにマージンのために使用されます。

<h3 class="見出し最初" id="最初">
    1. 出現時期と場所が異なる</h3>
。初め {
    padding-top: 60px;/* 60pxはナビゲーションバーの高さです*/
    上マージン: -60px;
 } 

アドバンテージ

このソリューションでは追加の要素を追加する必要はなく、CSS を使用して直接問題を解決できます。

欠点

見出しのドキュメント レベルが段落のドキュメント レベルと一致していない場合、他の要素が見えにくくなる可能性があります。

たとえば、タイトルではrelative配置を使用してドキュメントの階層を高めます。レイアウトによってブロックされているタイトルの上の段落はマウスで選択できず、ドキュメントをコピーできなくなります。

(2)アンカー要素としてスパンまたはタグを使用する

置換されないインライン要素のpaddingレイアウトには影響しませんが、アンカーの位置には影響する可能性があります。

<h3 class="見出し">
    <span id="second" class="title_placeholder">
    2. require/exports は実行時に動的にロードされ、import/export は静的にコンパイルされます</span>
</h3>
.title_placeholder {
    パディング上部: 60px;
} 

欠点

解決策(1)と同じ

(3)ダークアンカーポイント

配置する必要がある要素の上に、レイアウトに影響を与えない空のアンカー要素を追加します。

ジャンプ後のアンカー ポイントの位置は要素のpadding-boxの上端に配置されることになるため、 heightを設定するとアンカー ポイントの位置に影響し、 margin-topを設定するとレイアウト上の暗いアンカーの影響が相殺されます。

<div class="dark_anchor" id="third"></div>
<h3 class="見出し">
    3. require/exports は値のコピーを出力しますが、import/export モジュールは値への参照を出力します</h3>
.ダークアンカー{
    高さ: 60px;
    上マージン: -60px;
} 

アドバンテージ

他の要素のマウス選択には影響しません

欠点

このソリューションでは、配置された要素のmarginアンカーがジャンプした後の位置に影響するため、タイトルをアンカー要素として直接設定することと矛盾します。

たとえば、タイトル (配置された要素) には 20 ピクセルの余白があり、アンカー ポイントがジャンプした後も 20 ピクセルの余白は保持されます。アンカー ポイントがジャンプした後、 marginの影響を受けずにタイトルを上部に固定したい場合は、このソリューションを慎重に使用してください。

(4)ターゲット擬似クラス

:target CSS 疑似クラスは、ID が現在の URL フラグメントと一致する一意のページ要素 (ターゲット要素) を表します。
4. 一貫性のない使用
:ターゲット{
    パディング上部: 60px;
    上マージン: -60px;
  } 

このソリューションはソリューション(1)と似ています。特定のアンカーポイント(クラス)にジャンプする場合、アンカーポイント要素は:targetスタイルを適用します。

:targetブラウザの互換性:

3. 参考文献

URLアンカーHTML位置決め技術の仕組み、応用と問題点

ウェブページの内部アンカーポイントがジャンプしたときに上下のオフセットを実現する純粋なCSS

アンカーポイントが固定位置に遭遇すると

上部の固定ナビゲーション バーによって CSS アンカーの配置がブロックされる問題の解決策に関するこの記事はこれで終わりです。上部の固定ナビゲーション バーによって CSS アンカーの配置がブロックされる問題の関連コンテンツの詳細については、123WORDPRESS.COM で以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

<<:  HTML と CSS の命名規則の概要

>>:  Docker の NFS-Ganesha イメージを使用して NFS サーバーを構築する詳細なプロセス

推薦する

nginx ssl を設定して https アクセスを実装する手順 (初心者向け)

序文サーバーを展開した後、私は大きな喜びを感じながら自分の Web サイトにアクセスし、見たものすべ...

Vue プロジェクトで SVG コンポーネントをパッケージ化して構成する手順

最近新しい会社に入社しました。プロジェクトに携わった後、タイトルアイコンが svg で作られていると...

MySQL の重要なパフォーマンス インデックスの計算と最適化方法の概要

1 QPS 計算 (1 秒あたりのクエリ数) MyISAMエンジンベースのDBの場合 MySQL&g...

ベスト HTML/CSS デザインおよび開発フレームワーク 15 選を紹介します

プロフェッショナルな Web デザインは複雑で時間がかかります。 HTML と CSS フレームワー...

JavaScript を使用した Web 計算機の作成

この記事は主にJavaScriptを使用してWeb計算機を実現する効果を記録し、参考として掲載してい...

MySQL で行を列に変換したり、列を行に変換したりする詳細な例

mysql 行から列へ、列から行へ難しい文章ではないので、詳しく説明はしません。文章を読むときは、一...

JavaScript による Web ページ カルーセルの超詳細な実装

目次HTML ページの作成js部分の機能を実装する1. 左ボタンと右ボタン2. 小さな円を動的に生成...

Linuxのdateコマンドの使用

1. コマンドの紹介date コマンドは、現在の時刻または指定された時刻を指定された形式で表示するた...

コンテンツ領域の周囲を回転する CSS 動的グラデーション ボーダーの効果 (サンプル コード)

レンダリング ネットで関連情報を調べたところ、現在のダイナミックグラデーションボーダーの実装方法のほ...

MySQL バージョン 5.7.24 のデータベース インストール プロセスの詳細なグラフィック説明

MySQL は最も人気のあるリレーショナル データベース管理システムです。WEB アプリケーションに...

MySQL 8.0.24 のインストールと設定方法のグラフィックチュートリアル

この記事では、MySQL 8.0.24のインストールチュートリアルを参考までに紹介します。具体的な内...

MySQLのエンコードの不一致によって発生する可能性のある問題

ストアドプロシージャとコーディングMySQL ストアド プロシージャでは、テーブルとデータのエンコー...

HTML ブロックレベルタグとインラインタグの違い

1. ブロックレベル要素: 独立して存在できる能力を指します。通常、ブロックレベル要素は改行によって...

MySQL MHA の高可用性構成とフェイルオーバーの詳細な導入手順

目次1. MHAの紹介1. MHAとは何ですか? 2. MHAの構成3. MHAの特徴2. MySQ...