上部の固定ナビゲーションバーによって 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 サーバーを構築する詳細なプロセス

推薦する

MySQL 5.7.21 履歴データディレクトリからデータを復元するチュートリアルの解凍バージョン

状況の説明: データベースが異常に起動およびシャットダウンしたため、サービスを再度起動したときに「起...

MySQLが内部一時テーブルを使用するタイミングについて簡単に説明します。

組合執行分析を簡単にするために、次のSQLを例として使用します。 テーブル t1 を作成します ( ...

HTML いくつかの特別な分割線効果

1. 基本ライン 2. 特殊効果(効果は独立しておらず、互いに組み合わせることができます) 1. 両...

ハイパーリンクに関するいくつかの質問

<br />ポテトチップスパーティーのこのエピソードに参加して、何人かの友達に会えてとて...

画像にマウスを置いたときにズームイン/ズームアウトするには JS を使用します

マウスが画像上にあるときにズームインおよびズームアウトするには、JS を使用します。具体的なコードは...

gbk utf8 GBK と UTF-8 ウェブページエンコーディングを正しく理解して使用する方法

Web ページ エンコーディングは英語では web page encoding と翻訳され、Web ...

Nginx ログ出力のリクエスト後パラメータを設定する方法

【序文】当プロジェクトの SMS 機能は、第三者に接続することです。第三者からの元の受信確認要求は ...

haslaylout と bfc 解析の理解

1. haslayout と bfc は IE 固有の標準属性です。 2. BFC はページ上の分離...

フォームのmethod=post/getの違い

フォームは、get と post の 2 つのデータ転送方法を提供します。どちらもデータを送信する方...

Vueデータ監視の原理の詳細な説明

目次1. はじめにII. 監視対象2.1 なぜオブジェクトを監視する必要があるのですか? 2.2 デ...

mysql mycat ミドルウェアの簡単な紹介

1. mycatとはエンタープライズアプリケーション開発のための完全にオープンソースの大規模データベ...

人気の宇宙飛行士ウォッチフェイスをJavaScriptで実装するための完全なコード

1. エフェクト表示JavaScript で書かれた宇宙飛行士のウォッチフェイス。 http://x...

uniapp プロジェクトで MQTT を使用する方法

目次1. uniappプラグインマーケットのリファレンスプラグイン2. 具体的な導入プロセス1. m...

VSCode と SSH を使用したリモート開発

0. リモート開発が必要な理由組み込み Linux を開発する場合、便宜上、通常は Windows ...

JavaScript の非同期処理で待機時間を節約できますか?

JavaScriptで非同期実行の結果を同期的に取得するには、 for ループ内でawaitを使用...