検索

CSSのposition属性について

Dec 06, 2017 pm 04:06 PM
cssposition

position 属性は、要素の配置タイプを指定します。この属性は、要素のレイアウトを確立するために使用される位置決めメカニズムを定義します。任意の要素を配置できますが、絶対要素または固定要素は、要素自体のタイプに関係なく、ブロック レベルのボックスを生成します。相対的に配置された要素は、通常のフローではデフォルトの位置からオフセットされます。今回はCSSのposition属性についてお話します。

Standard

MDN ドキュメントによると、CSS プロパティの位置は、ドキュメント内での要素の配置方法を指定するために使用されます。さらに、要素の最終的な位置を決定するには、オフセット属性 top、right、bottom、left が必要です。すべての要素に適用され、継承はなく、カスケード コンテキストを作成します。位置決めの値は5種類(?):

  1. position: static デフォルト値

  2. position: 相対相対位置

  3. position: 絶対絶対位置

  4. position: 固定固定位置

  5. position: Sticky Sticky Positioning

position 属性は非常に基本的な知識であるため、次のページでは効果を示すために多くの画像やデモを使用しません。結局のところ、これらの内容はドキュメントやチュートリアルを参照して知る必要があります。

デフォルト値 static

要素のposition属性が設定されていない場合、または値がstaticの場合、要素はドキュメントフロー内にあり、leftなどのオフセット属性は効果がありません。ドキュメントには、z-index 値が無効であるとも記載されています。考えてみたのですが、通常のドキュメントフロー内にある要素であれば、上位層や下位層に他の要素と競合する要素は存在しないので、基本的にz-indexの適用シナリオは存在しません。もしかしたら何か見逃していることがあるでしょうか?これらを除けば、静的に関して特別なことは何もありません。

相対配置相対

相対配置に設定されている要素は依然としてドキュメントフロー内にあり、それが占有するスペースは引き続き保持されます。ただし、上下左右のオフセットプロパティが設定されている場合は、元の位置に対して対応する方向に移動します。このとき、要素空間はまだ存在しており、周囲の要素は再配置されません。言い換えれば、透明なレンガが要素の元の位置に配置され、目に見えませんが、触ることはできます。さらに、相対的に配置された要素は、内部の子要素の配置の基点として機能する包含ブロックを作成します。

包含ブロックの定義: 最も近いブロック レベルの祖先ボックス、テーブル セル、またはインライン ブロックのインライン ブロック祖先ボックスのコンテンツ エッジで構成されます。

結論ブロックの決定:

CSSのposition属性について

絶対配置絶対

このとき、絶対配置要素は文書の流れ(通常の流れ)から外れます。 、透明なレンガ ブロック プレースホルダーはありません。近くの要素も再配置されます。同時に、要素は書式設定コンテキスト (BFC) を生成し、上下のマージンは結合されず、内部のフローティング要素によって高さが崩れることはありません。

なぜ包含ブロックの定義と判定を説明する必要があるかというと、絶対配置要素の配置点は最も近い包含ブロックであり、設定される上下左右のオフセット属性は、含まれているブロックの左上隅を原点とします (これはテキストの方向と同じです)。上の図からわかるように、絶対配置された祖先要素の位置属性が静的である場合、最初の包含ブロック本体を基準にして配置されます。別の値の位置属性を持つ祖先要素が存在する場合、その要素は、その要素が作成された包含ブロックを基準にして配置されます。

ここで実際に浮動要素と比較したいのですが、Zhang Xinxu 氏のブログで、浮動要素は幅と高さのないインライン ブロック要素と見なすことができるのに対し、絶対的な配置は高さのないインライン ブロックであると述べているのを目にしました。幅と高さの要素はありません。なぜインラインブロック要素とみなされるのかはよく覚えていないんです〜

固定位置固定

固定位置要素は、画面ビューポートを基準にして配置されます。この場合、スクロールによって位置は変わりません。 Web ページを印刷する場合、この要素は各ページの固定位置に表示されます。さらに、固定位置の要素も書式設定コンテキストを作成します。
この文書には、固定位置に影響を与える特別な状況があることについても言及されています。つまり、親要素のtransform属性がnoneでない場合、固定配置コンテナはビューポートではなく親要素に変更されます。このような予期せぬ状況には注意し、回避する必要があります。
最後に、あなたがモバイル Web 開発者である場合、iOS システム Web ビューの固定レイアウトでいくつかのバグに遭遇することもあります。これらのバグに対する完璧な解決策を見つけるのは不可能な場合があるため、バグに遭遇した場合は、js を使用してスタイルを動的に決定および変更するか、単純にレイアウトを再設定することを検討してください。

sticky Positioning Sticky

この配置方法は実験的な属性であり、ドキュメントでは運用環境では使用しないことを推奨しているため、多くの人は見たことがないと思います。ただし、その機能は依然として非常に便利なので、それについて学ぶことができます。

粘性位置決めは、相対位置決めと固定位置決めの組み合わせです。上下左右のオフセットプロパティに基づいてしきい値を設定します。相対測位がしきい値を超える場合、固定測位に変換されます。

新しい属性なので、このデモにアクセスして見てください。

デモでは主に

<span style="font-size: 16px;">dt{<br>    position: -webkit-sticky;<br>    position: sticky;<br>    top: -1px;<br>}<br></span>

のコードになっています まずブラウザでのスティッキーポジショニングのサポートから、IEを除いて基本的にサポートされていることが分かります。ただし、テーブル関連の要素は Firefox ではサポートされておらず、thead や tr などの要素は Chrome ではサポートされていません。そのため、通常に使用したい場合は、-webkit などの接頭辞を追加する必要がある場合があります。
次に、しきい値として「top:-1px」を設定します。要素が相対配置要素の場合、その上部とそれを含むブロックの間の距離が -1px 以上の場合、固定配置に変換されます。したがって、スティッキー ポジショニングを使用するには、しきい値の設定が重要です。

デモで示されている機能に加えて、スティッキー配置アプリケーション シナリオは、いわゆるスティッキー フッターでも使用できます。製品でこのようなレイアウトが必要な場合はよくあると思います~

幅が限られた要素を配置する

多くの場合、

<span style="font-size: 16px;">position:absolute;<br>top:0;<br>bottom:0;<br>right:0;<br>left:0;<br>width:50%;<br>height:50%;<br>margin:auto;<br></span>

を使用して、絶対的に配置された要素を垂直方向と水平方向に中央揃えにします

。マージンは auto 値に設定され、方程式:

margin+border+padding+width=element width/height に従って、マージンはセンタリングを実現するために対応する方向の空き部分の半分に設定されます。

しかし、絶対に配置された要素はドキュメント フローの外にあるのではないでしょうか?なぜマージンがまだ機能するのでしょうか?これは、上下左右のオフセット プロパティも設定しているためであることがわかりました。一般に、上、下、または左と右が同時に設定されている場合、つまり反対の位置決め方向属性が同時に特定の位置決め値を持っている場合にのみ、上または下、左または右を設定する必要があります。時間の経過とともに流体特性が発生します。この時点で、絶対的に配置された要素の幅は、それを含むブロックの幅に適応します。この場合、絶対的に配置される要素は通常のドキュメント フローの要素と同じであり、margin:auto を使用して中央に配置できます。

  1. display/float/positionの三角関係

  2. 要素が絶対配置や固定配置に設定されている場合、Float属性は無効となり、表示もブロック値に変更されます。つまり、この時点の要素はすべてブロックレベルの要素です。

    displayをnoneに設定すると要素は消え、設定されたposition属性やfloat属性も当然無意味になります。

上記の内容はCSSのposition属性に関するもので、皆様のお役に立てれば幸いです。

関連する推奨事項:

CSS の Position 属性

CSS Position 属性の例の詳細な説明

🎜🎜 CSS Position 属性の使用方法🎜🎜

以上がCSSのposition属性についての詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
CSSグリッドとは何ですか?CSSグリッドとは何ですか?Apr 30, 2025 pm 03:21 PM

CSSグリッドは、複雑で応答性の高いWebレイアウトを作成するための強力なツールです。設計を簡素化し、アクセシビリティを向上させ、古い方法よりも多くの制御を提供します。

CSS Flexboxとは何ですか?CSS Flexboxとは何ですか?Apr 30, 2025 pm 03:20 PM

記事では、レスポンシブデザインにおけるスペースの効率的なアラインメントと分布のためのレイアウト方法であるCSS FlexBoxについて説明します。 FlexBoxの使用量を説明し、CSSグリッドと比較し、ブラウザのサポートを詳細に説明します。

CSSを使用してWebサイトを応答するにはどうすればよいですか?CSSを使用してWebサイトを応答するにはどうすればよいですか?Apr 30, 2025 pm 03:19 PM

この記事では、ビューポートメタタグ、柔軟なグリッド、流体メディア、メディアクエリ、相対ユニットなど、CSSを使用してレスポンシブWebサイトを作成するための手法について説明します。また、CSSグリッドとフレックスボックスを使用してカバーし、CSSフレームワークを推奨しています

CSSボックスサイズのプロパティは何をしますか?CSSボックスサイズのプロパティは何をしますか?Apr 30, 2025 pm 03:18 PM

この記事では、要素の寸法の計算方法を制御するCSSボックスサイズのプロパティについて説明します。コンテンツボックス、ボーダーボックス、パディングボックスなどの値と、レイアウト設計とフォームアライメントへの影響について説明します。

CSSを使用してアニメーション化するにはどうすればよいですか?CSSを使用してアニメーション化するにはどうすればよいですか?Apr 30, 2025 pm 03:17 PM

記事では、CSS、キープロパティ、およびJavaScriptとの組み合わせを使用してアニメーションの作成について説明します。主な問題は、ブラウザの互換性です。

CSSを使用してプロジェクトに3D変換を追加できますか?CSSを使用してプロジェクトに3D変換を追加できますか?Apr 30, 2025 pm 03:16 PM

記事では、3D変換、主要なプロパティ、ブラウザの互換性、およびWebプロジェクトのパフォーマンスに関する考慮事項にCSSを使用して説明します。

CSSに勾配を追加するにはどうすればよいですか?CSSに勾配を追加するにはどうすればよいですか?Apr 30, 2025 pm 03:15 PM

この記事では、CSSグラデーション(線形、放射状、繰り返し)を使用して、ウェブサイトのビジュアルを強化し、深さ、フォーカス、および現代の美学を追加します。

CSSの擬似要素とは何ですか?CSSの擬似要素とは何ですか?Apr 30, 2025 pm 03:14 PM

記事では、CSSの擬似要素、HTMLスタイリングの強化における使用、および擬似クラスとの違いについて説明します。実用的な例を提供します。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!