検索

CSSのfloat属性とposition:absoluteの比較

Aug 11, 2017 pm 02:54 PM
floatposition

ページレイアウトではfloatとposition:absoluteのどちらを使用するのが良いですか?という疑問を持つ人は多いと思います。レイアウトなので、私がよく使うfloatを使うのが良いでしょう。このフロートはクリアできますが、通常は全体のレイアウトには影響しません。 一般に、これはレイアウトに制約がありません。特別な位置決めやフローティング レイヤーを実行したい場合は、これを使用することを検討できます。通常のページ レイアウトの場合、個人的には FLOAT

1.float 属性を使用して要素が浮動する方向を定義することをお勧めします。歴史的に、このプロパティは常に画像に適用され、テキストが画像の周りを回り込むようにしていましたが、CSS では任意の要素をフローティングにすることができます。フロート要素は、要素のタイプに関係なく、ブロック レベルのボックスを作成します。 p は、それ自体で 1 行を占める典型的なブロックレベルの要素です。

まず、最も基本的なブロックレベルの要素がどのように配置されているかを見てみましょう。 html コードでは、次のスタイルはこれに基づいています。

コードをコピーします コードは次のとおりです:



class="box2 >

CSS コード:


コードをコピー
コードは次のとおりです。


.boxBg{
margin: 0 auto;

width:500px;

height:200px;

border:2px Solid #ccc

} .box1{ width:100px;

height:50px;

background -color:赤
}
.box2{
幅:100px;
高さ:50px;
背景色:青
}
.box3{
幅:100px;
高さ:50px;
背景色:緑
}


実行結果:




p はブロックレベルの要素なので、ボックスは縦に配置されます。実際の運用では、フレームを水平に配置する必要があることがよくあります。これを行うには 2 つの方法があります。最初のものは表示されます:inlin-block;


コードをコピーします

コードは次のとおりです:

.boxBg{CSSのfloat属性とposition:absoluteの比較 margin: 0 auto;

width:500px;

height:200px;

border:2px Solid #ccc

} .box1{ 幅:100px;

高さ:50px;

背景色:赤;
表示:インラインブロック
}
.box2{
幅:100px;
高さ:50px;
背景-色:青;
表示:インラインブロック
表示:インライン-block .box3{ width:100px; display: inline-block


真ん中については、ギャップの本質的な理由は要素間の空白に遡ります。 , そのため、親要素に fone-size のサイズを設定することで、空白のサイズを調整できます。


コードをコピーします
コードは次のとおりです:


.boxBg{
margin: 0 auto;
width:500px;
height:200px;
border:2px Solid #ccc;
font-size:34px;
}

font-size:34px に変更すると、隙間が広くなります。

実行結果: CSSのfloat属性とposition:absoluteの比較

同様に、ギャップを削除したい場合は、コード font-size:0;

をコピーする必要があります。 コードは次のとおりです:


.boxBg{
margin: 0 auto;
width:500px;
height:200px;
border:2px Solid #ccc;
font-size:0
}

実行結果:

CSSのfloat属性とposition:absoluteの比較

超便利希望のレイアウトを達成すると、ボックス内のテキストも消えました。これは、テキストのサイズがギャップに影響を与えることも証明しています。子要素でリセットするだけです。もちろん、今日の焦点はそこではありません。同じ効果 float:left; も簡単に実現できます。 }

.box1{

幅:100px; 高さ:50px; 背景色:赤;

float:left

}
.box2{
幅:100px;
高さ:50px;
背景色:青;
float:left
}
.box3{
width:100px;
height:50px;
background-color:green;
float:left
}



実行結果:




element フロートを追加すると、このフロート要素は、親要素の境界線または別のフロート要素の境界線に接触した直後に表示されます。たとえば、次の例では、フローティング要素の合計幅が親要素よりも大きい場合、行が折り返されると、前のフロートが検出され、その後に表示されます。


コードをコピーします。
コードは次のとおりです:




実行結果:




インラインブロックを使用すると結果はどうなりますか? 🎙 }
.box1{
幅:100px;
高さ:100px;
背景色:赤;
表示:インラインブロック
}
.box2{
幅:100px;
高さ:50px;
背景色: blue;
display:inline -block
}
.box3{
width:400px;
height:50px; background-color:green;

display:inline-block

}

CSSのfloat属性とposition:absoluteの比較

実行結果:

このとき、ボックス 3 はボックス 1 に続くのではなく、新しい行で始まります (1 と 2 の間のギャップについてはここでは説明しません)。これも inline-block と float を使用した判定です。モジュールの幅が異なる場合は、float タイプセットを使用してください。結果が期待された結果と異なる場合があるため、幅と高さが変更されていない場合は、float を使用することをお勧めします。それが矛盾している場合は、特定のレイアウトを確認して適切に使用する必要があります。属性。


以下にコードを掲載します。変更部分のみを掲載し、残りは変更せず、構造も変更しません。

box3 の float: left を削除すると結果はどうなりますか?理解によれば、フローティング要素はスペースを占有しません。つまり、フレーム 3 はフレーム 1 を無視し、フレーム 2 は親要素の境界のすぐ隣に表示されます。つまり、フレーム 1 がフレーム 3 を覆います。結果?

コードをコピーします コードは次のとおりです:


.box3{
width:100px;
height:50px;
background-color:green;
}

実行結果:

CSSのfloat属性とposition:absoluteの比較

理由ボックス 3 のテキスト ボックス 1 で覆われずに、下に表示されますか?次に、コードを見て、画像を見てください

コードをコピーします コードは次のとおりです:


.box3{
height:50px;
background-color:green;
}

実行結果:

CSSのfloat属性とposition:absoluteの比較

違いがわかります 消えましたか?はい。 box3 は幅を定義しません。幅を定義しないと、デフォルトの幅は親要素の幅になります。つまり、この時点では、浮動要素が非浮動要素をカバーします。 、ボックス 3 の前の 200 ピクセルの幅はカバーされたフローティング要素によって占められていますが、テキストがカバーされず、テキストがフローティング要素の 200 ピクセル後ろに押し込まれているのはなぜですか?

フローティング要素はブロックのスペースを占有しないため、ボックス 3 は親コンテナの幅 500px の 100% ですが、フローティング要素は他のスペース、つまりラインボックススペースを占有します。テキストで占められています。

これは、テキストが画像をフローティングした後に自動的に画像の周りを回り込む理由でもあります。フローティング要素はブロックレベルのスペースを占有しませんが、ブロックレベル要素内のテキストおよびインライン要素に影響を与えます。

この場合、3 つのボックスを同じ幅にしたい場合は、box 3 width:300px;

のコードをコピーするだけです。コードは次のとおりです:

.box3{
width :300px;
height:50px;
background -color:green;
}

実行結果:

CSSのfloat属性とposition:absoluteの比較

基本的なフローティングについての説明は終わりましたので、フローティングの使い方は簡単ですが、問題点について話しましょう。 , 実際には多くの問題が発生します。例:


実行結果:

CSSのfloat属性とposition:absoluteの比較

よくある質問、通常の状況下で。灰色の背景はフレームと同じ高さである必要がありますが、現実は常に満足のいくものではありません:)

この状況の原因は、浮遊要素であることが知られています。通常の流れから切り離されるため、通常の要素は浮動要素として扱われ、存在しないため、ここでは背景は開きません。ただし、注意して読んだ学生は、浮動要素が影響を与えないことを上で述べたことを覚えているでしょう。ブロック フレームですが、ボックス、つまりテキストまたはインライン要素は、ブロック レベル要素であるかインライン要素であるかに関係なく、通常のフローに属します。フローティング要素が通常のフローから切り離されるのはなぜでしょうか。ラインボックスに影響はありますか?実際のところ、これらの概念的な事柄にこだわる必要はないと思います。私の理解によれば、フローティング要素はブロックレベル要素と同じ水平スペースにありませんが、テキストインライン要素と同じスペースにあるため、ここの境界線は背景の上にあることと同等であるため、通常、背景要素のクリアと呼ばれるものは、フローティング要素のフロート属性を削除することを意味するのではなく、周囲にフローティング要素が存在しないようにすることを意味します。 2 番目の行に移動します。ボックス 2 では、clear:right; を使用できません。ボックス 3 で、clear:left; を使用する必要があります

コードをコピーします。コードは次のとおりです:


.box3{
float:left;
width:100px;
height:50px;
background-color:green;
clear:left

実行結果:

CSSのfloat属性とposition:absoluteの比較わかりました、次は見てみましょう!背景とフレームを同じ高さにする方法について説明します。最初の方法は、背景の高さをフレームと同じになるように直接設定することです。もちろん、これは重要ではありません。フロート。まず、例を見てみましょう:

コードをコピーします

コードは次のとおりです:









実行結果:




上記の結果は結果を達成しました、それが直接追加されたことは明らかです 同じ高さの空の要素 この要素はフローティングではないため、背景と同じであるため、背景が引き伸ばされます。実際、float をクリアする原理はこれと同じで、背景も開いてみます。上記の clear の幅と高さを削除し、clear 属性を追加します


コードをコピーします
コードは次のとおりです。以下:


.clear{
Clear: left;
}

実行結果:

CSSのfloat属性とposition:absoluteの比較

これはまだ明確ではないかもしれません。クリアボックスにいくつかの単語を追加してみてください

実行結果:

clear は clear:left を使用するため、要約すると、clear の左側に浮動要素を置くことはできないため、新しい行に表示する必要があります。このようにして、画像の結果が実際には 1 つの要素によってサポートされている背景であることがわかります。もちろん、それを達成する他の方法もあります。ここで重要なのは、フローティングを明確に説明することです:)

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

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
@keyframesや@mediaなど、 @rulesにはどの程度の特異性がありますか?@keyframesや@mediaなど、 @rulesにはどの程度の特異性がありますか?Apr 18, 2025 am 11:34 AM

先日、この質問がありました。私の最初の考えは、奇妙な質問です!特異性はセレクターに関するものであり、アットレールはセレクターではないので、...無関係ですか?

@mediaと@supportのクエリをネストできますか?@mediaと@supportのクエリをネストできますか?Apr 18, 2025 am 11:32 AM

はい、あなたはできます、そしてそれは本当にどの順序で重要ではありません。 CSSプリプロセッサは必要ありません。通常のCSSで動作します。

クイックガルプキャッシュバストクイックガルプキャッシュバストApr 18, 2025 am 11:23 AM

CSSやJavaScript(および画像とフォントなど)などのアセットにファーアウトキャッシュヘッダーを確実に設定する必要があります。それはブラウザを伝えます

CSSの品質と複雑さを監視するスタックを探してCSSの品質と複雑さを監視するスタックを探してApr 18, 2025 am 11:22 AM

多くの開発者は、CSSコードベースを維持する方法について書いていますが、そのコードベースの品質をどのように測定するかについて多くの人が書いていません。確かに、私たちは持っています

データリストは、値を強制せずに値を提案するためのものですデータリストは、値を強制せずに値を提案するためのものですApr 18, 2025 am 11:08 AM

短い任意のテキストを受け入れるために必要なフォームを持っていたことがありますか?名前などのように。それはまさにそのためのものです。たくさんあります

チューリッヒでのフロント会議チューリッヒでのフロント会議Apr 18, 2025 am 11:03 AM

私は、フロント会議のためにスイスのチューリッヒに向かうことにとても興奮しています(その名前とURLが大好きです!)。私はこれまでスイスに行ったことがないので、興奮しています

CloudFlareワーカーとのフルスタックサーバーレスアプリケーションを構築しますCloudFlareワーカーとのフルスタックサーバーレスアプリケーションを構築しますApr 18, 2025 am 10:58 AM

ソフトウェア開発における私のお気に入りの開発の1つは、サーバーレスの出現です。詳細に行き詰まる傾向がある開発者として

NUXTアプリケーションで動的ルートを作成しますNUXTアプリケーションで動的ルートを作成しますApr 18, 2025 am 10:53 AM

この投稿では、私が構築して展開して展開してネットライフを使用して、着信データの動的ルートを作成する方法を示すeコマースストアのデモを使用します。それはかなりです

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衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

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 プラットフォームで実行できます。

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境