同じレベルの要素で 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 カスケードセレクタの実践

推薦する

ウェブページのカラーマッチング例分析: 緑色のカラーマッチングウェブページ分析

<br />緑は黄色と青(寒色と暖色)の中間の色で、より穏やかな色です。そのため、緑は最...

HTML Webページの例を使用してヘッドエリアコードの意味を説明する

例を使って、Webページのヘッダー情報の意味を理解しましょう。 <!DOCTYPE HTML ...

JavaScriptの基本構文とデータ型の詳細な説明

目次JavaScript のインポート1. 内部ラベル2. 外部紹介基本的な構文データ型番号弦ブール...

Vue 名前付きスロットの基本的な使用例

序文名前付きスロットは、スロット内の「name」属性を使用して要素にバインドされます。知らせ: 1....

Docker で Kong API Gateway をインストールして使用する詳細なチュートリアル

1 はじめにKong は単純な製品ではありません。この記事で言及されている Kong は主に Kon...

SQL Server データベース エラー 5123 の解決方法

なぜなら、SQL Server 2005 に基づくデータベース チュートリアルがあり、そこで使用され...

Dockerのセキュリティについて Docker-TLS暗号化通信の問題

目次1. Dockerのセキュリティ問題2. Dockerアーキテクチャの欠陥とセキュリティメカニズ...

ElasticSearch と ElasticSearch-Head の Docker デプロイメントの実装

この記事では主にDockerを使ってElasticSearch:バージョン6.8.4をデプロイする方...

Mysqlはストアドプロシージャを通じて文字列を配列に分割します

文字列を配列に分割するには、次の 3 つの MySQL 関数を使用する必要があります。 REVERS...

Windows Server 2012 リモート デスクトップ ライセンス サーバーがライセンスを提供できず、リモート セッションが切断される

本日、会社の内部サーバーにログインしたところ、リモートアクセスができませんでした。エラー メッセージ...

Reactスロットの使い方

目次必要コアアイデアReactでスロットを実装する2つの方法必要コンポーネントを自分で書きました。コ...

IE6 で PNG-24 形式の画像を正常に表示させる 2 つの方法

方法1: </html>の後に次のコードを追加してください。コードをコピーコードは次のと...

Web 開発チュートリアル クロスドメイン ソリューションの詳細な説明

序文この記事では、主にWeb開発のためのクロスドメインソリューションを紹介し、参考と学習のために共有...

Linux サーバーは最大いくつのポートを開くことができますか?

目次ポート関連の概念:ポートとサービスの関係1: nmapツールが開いているポートを検出する2: n...

MySQL 8.0.12 のインストールと使用方法のチュートリアル

MySQL 8.0.12のインストールと使用のチュートリアルを録画しました。ウィンドウズまず、公式ウ...