同じレベルの要素で Position:fixed と margin-top を一緒に使用する場合の CSS の問題

同じレベルの要素で Position:fixed と margin-top を一緒に使用する場合の CSS の問題

問題の説明

CSS を使用して上部の固定効果を実現したいと思います。

margin-top と position:fixed を実装してみます。コードは次のようになります。

<!DOCTYPE html>
<html>
<ヘッド>
  <メタ文字セット="utf-8">
  <meta name="ビューポート" content="width=デバイス幅">
  <title>テスト</title>
  <スタイル タイプ="text/css">
      .ヘッダー{
          位置: 固定;
          高さ: 20px;
          幅: 100%;
      }
      。コンテンツ {
          上マージン: 30px;
      }
      .aside {
          フロート: 左;
          幅: 200ピクセル;
          背景: オレンジ;
      }
      。主要 {
          オーバーフロー:自動;
          背景: 黄色;
      }
  </スタイル>
</head>
<本文>
    <div class="header">123</div>
    <div class="content">
        <div class="aside">脇に</div>
        <div class="main">メイン</div>
    </div>
</本文>
</html>

その結果、ヘッダーは上部に配置されず、コンテンツの上部の margin-top 距離が空けられます。

position:fixed の定義によれば、ヘッダーはドキュメント フローから分離されており、コンテンツ レイアウトの影響を受けないはずですが、実際はそうではありません。

問題の探索

1. コンテンツの margin-top を padding-top に変更します。期待した効果が得られます。
2. コンテンツは margin-top と padding-top を同時に設定します。margin-top のスペースはそのまま残ります。
3. body に padding-top を設定します。これにより、body の padding-top にスペースが確保され、期待される効果が得られます。
4. body に margin-top を設定すると、max(body->margin-top,content->margin-top) の距離が確保されます。
5. ヘッダーの上部をtop: 0;のように設定します。本文やコンテンツのレイアウトには影響されません。

未定: 詳細なテストコードと効果図は後ほど追加します( ̄∇ ̄)...

要約する

すべては margin-top の縮小が position:fixed に与える影響に帰着します。まず、position:fixed要素の場合、topが指定されていない場合、垂直方向の参照原点はbodyボックスモデルのコンテンツの上端になります。 top が指定されている場合、垂直方向の参照原点は、ビューポートの上部境界と呼ばれるものであり、左方向と水平方向にも同様に適用されます。ここでの参照原点とは、固定要素を配置する際の参照対象を指します。一度決定すると、ページが下に引っ張られて body の上端が上に移動しても、固定要素の位置は変化しません。第二に、margin-top の崩壊問題により、コンテンツの margin-top を設定した後、コンテンツ本体の部分が下に移動します。つまり、原点を基準にして下に移動します。そのため、固定要素は margin-top 用のスペースを残します。

したがって、この問題は次の 2 つの側面から解決できます。

1. 参照原点をビューポートに変更します。固定要素の上部を設定します。

2. margin-top の崩壊問題を解決します。その他の方法については、以下のリンクを参照してください。

1) padding-top を body に設定します。
2) 本文の境界線を設定します。境界線の色は背景色と同じにする必要があります。
3) body に position:fixed を設定すると、body のスクロール バーが消えます。

とりあえず我慢して〜この時期忙しくなったら完璧にします(悲顔)(悲顔)。 。 。
未定: コンテンツ名とボックス モデル コンテンツが変更されているため、変更する必要があります...

  • position:fixedの意味が分かりませんか? => 位置|MDN
  • margin-top の縮小が分かりませんか? => マージントップ崩壊問題の現象と解決

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

<<:  ウェブページ印刷細線表+ページ印刷究極の戦略

>>:  elementui での el-cascader カスケードセレクタの実践

推薦する

ReactプロジェクトでのTypeScriptの実装

目次1. はじめに2. 使用方法ステートレスコンポーネントステートフルコンポーネント制御コンポーネン...

Alibaba Cloud ESC に MYSQL8.0 をインストールするチュートリアル

接続ツールを開きます。私はMobaXterm_Personal_12.1を使用します(公式サイトのダ...

HTMLがHikvisionカメラのリアルタイム監視機能を実現

最近、同社は CCFA 関連のいくつかの作業を行う予定で、その 1 つはカメラのリアルタイム監視を再...

MYSQL の解凍版における中国語の文字化け問題の解決方法

MYSQLの解凍バージョンがインストールされます1: 解凍後、my.ini ファイルをコピーし、バイ...

MySQL 外部キー制約 (FOREIGN KEY) ケースの説明

MySQL 外部キー制約 (FOREIGN KEY) はテーブルの特別なフィールドであり、主キー制約...

MySQL プロジェクトでトランザクション分離レベルを選択する方法

導入コンテンツから始めましょう。誰もが次のような面接のシナリオに遭遇したことがあると思います。インタ...

react-beautiful-dnd を使用してリスト間のドラッグ アンド ドロップを実装する

目次react-beautiful-dndを選ぶ理由基本的な使い方基本概念使い方使用中に発生した問題...

CSSレイアウトで中央揃えレイアウトを実現する方法

1. 親コンテナーをテーブルに設定し、子をインライン要素に設定します。テキストを表示するサブコンテン...

Navicat の MySQL へのリモート接続が遅い理由の詳細な説明

最終的な解決策は最後の写真にありますリモート データベース ( Linux システム) に接続したと...

div タグ内の要素の margin-top が無効である場合の解決策

タイトル通りです。その質問は非常に奇妙です。要素の親タグはdivで、幅や高さなどの属性は設定されてい...

Vueのイベント処理とイベント修飾子の詳細な説明

<div id="ルート"> <h2>頑張れ、{{na...

Java を Mysql バージョン 8.0.18 に接続する方法の詳細な説明

JavaとMysql 8.0.18バージョンの接続方法については、参考までに具体的な内容は以下のとお...

Nodejs 探索: シングルスレッドの高並行性の原理を深く理解する

目次序文一目でわかる建築オペレーティングシステムとの対話シングルスレッドイベント駆動/イベントループ...

ネイティブJSで様々なモーションの複合モーションを実現

この記事では、ネイティブ JS で実装された複合モーションを紹介します。複合モーションとは、異なる属...

CSS で div にスクロールを追加し、スクロール バーを非表示にする

CSS は div にスクロールを追加し、スクロール バーを非表示にします。具体的なコードは次のとお...