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

推薦する

あなたが知らない Linux KDE アプリケーション 11 選

翻訳Kool Desktop Environment の略称。 Linux、Unix、FreeBSD...

Flexboxレイアウトの最もシンプルなフォーム実装

フレキシブル レイアウト (Flexbox) はますます人気が高まっており、CSS レイアウトの記述...

JavaScriptは行削除機能を備えたテーブルを動的に生成します

この記事の例では、テーブルを動的に生成したり行を削除したりするためのJavaScriptの具体的なコ...

Linux で一般的なソフトウェアを設定する方法

新しいLinuxサーバーを入手する場合、通常は次の5つの構成を実行する必要があります。 HOSTAN...

Linux オペレーティング システムの概要と紹介

目次1. オペレーティングシステムとは何か2. Linuxの起源3. Linuxの基本機能4. Li...

Ubuntuはカーネルモジュールをコンパイルし、その内容はシステムログに反映されます。

目次1.Linuxログインインターフェース2. コードを書く3. Makefileを書く4. コンパ...

Nginx ロケーション設定(ロケーションのマッチング順序)の詳細な説明

ロケーションは「位置指定」を意味し、主にさまざまな位置指定のための URI に基づいています。これは...

MySQL データベースのインデックス順序の詳細な説明

目次事件の原因解剖学ファイルの並べ替えファイルのソートが非常に遅いのですが、他に解決策はありますか?...

Vueはダイアログのカプセル化を実装します

目次Vue2 ライティングVue3プラグインのバージョンの記述Vue3 動的コンポーネントの記述書き...

実践で遭遇するフロントエンドの基本(HTML、CSS)

1. div css マウスの手の形は cursor:pointer; です。 2. HTML の相...

要素動的ルーティングブレッドクラムの実装例

マスターするには: localStorage、コンポーネントのカプセル化えーと、GIF に変換したビ...

ElementuiはデータをxlsxとExcelテーブルにエクスポートします

最近、Vue プロジェクトについて知り、ElementUI でデータを xlsx および Excel...

Vueは要素ツリーコントロールを通じてツリーテーブルを実装します

目次実装効果図依存関係をインストールするカスタムツリーコントロールその他の実装要約するVueでは、要...

Linux のソフトリンクとハードリンクの詳細な説明

目次1. ファイルとディレクトリの基本的な保存2. Inコマンドの紹介(1)lnコマンドの基本情報を...