問題の作成
簡単な例から始めましょう:
<div class="parent"> <div class="child-left"></div> <div class="child-right"></div></div>
.parent { width: 200px; margin: 30px auto; border: solid 5px #3498db;}[class^='child'] { opacity: 0.8;}.child-left { float: left; height: 100px; width: 120px; background: #2ecc71;}.child-right { float: right; height: 100px; width: 80px; background: #e74c3c;}
効果はおおよそ次のとおりです: (透明度の設定はデモンストレーションのためだけです)
確認できる効果は、親要素がラップされていないことと、2 つの要素がラップされていないことです。子要素は浮動小数点であり、それ自体の高さは 0 です。
多くのフロントエンド ユーザーはこれに混乱していると思います。なぜすべての子要素がフローティングになり、親要素の高さが 0 になるのでしょうか。 floatをクリアするにはclear:bothを使用できると言われていますが、親要素に追加しても効果がないのはなぜですか? Google と Baidu で検索した結果、解毒剤であるクリアフィックスを見つけました。
clearfix とは
.clearfix は多くのフロントエンド開発者にとって必須のパッチと言えます。これを使用してフロートを閉じ、親要素の高さの崩壊の問題を修正できます。
.clearfix:before,.clearfix:after { content: ""; display: table;}.clearfix:after { clear: both;}.clearfix { zoom: 1; /* ie 6/7 */}
使用法。引き続き上記の例を使用します
<div class="parent clearfix"> <div class="child-left"></div> <div class="child-right"></div></div>
Clearfix クラス名を親要素に追加するだけで完了です。
投げるのが好きな生徒は、次の属性のいずれかを親コンテナに追加すると同じ効果が得られることを知っておく必要があります
overflow: auto;display: table;position: absolute;float: left;
舞台裏で何が起こったのでしょうか?疑問を念頭に置きながら、いくつかの新しい用語の学習を続けてください。
Clear float または close float?
これは、clear 属性の名前のせいかもしれませんが、正確には、clear float は、clear: left| に相当します。 right|both|none|inherit; 上記の例では、フローティングの影響を軽減するためにフローティング要素を閉じる必要があり、それらはクローズドフローティングの範囲内に収まる必要があります。
— あの頃一緒にクリアしたフロート
ドキュメント フロー
私がフロントエンドに触れたときから、私が聞いたのはドキュメント フロー、ドキュメント フローだけでした, しかし、本当の名前は ノーマルフローまたはノーマルフロー(英語:normal flow)と呼ぶべきです。私の理解では、HTMLタグの位置順に従って、要素を上から小さく、左から右に1行ずつ配置する処理です。
css2.1 では、次の 3 つの w3c-positioning スキームが言及されています:
>
- 通常のフロー (ブロックを含む) ブロックの書式設定レベル ボックス、ライン レベル ボックスのライン フォーマット、ブロック レベル ボックスとライン レベル ボックスの相対的な位置。
- フローティング フローティング モデルでは、まず通常のレイアウトに従ってボックスが配置され、その後レイアウト フローから外されて、可能な限り左右にオフセットされます。他のコンテンツをフロートの周囲に配置できます。
- 絶対配置 絶対配置モデルでは、ボックスはタイポグラフィ フローから完全に切り離され (後続の兄弟には影響を与えません)、ボックスを含むブロックに対する相対的な位置を指定します。 (絶対、固定を含む)
したがって、フロートも通常の流れから外れますが、より「特別な」ブレイクになります。他のコンテンツもフローティング要素と親要素を囲みます。現時点ではその存在を感知できません。
BFC
BFC は Block Formatting Context の略で、多くの人は文字通りそれを Block Formatting Context と呼んでいます。これは CSS2.1 仕様によって定義されており、ページの CSS 視覚レンダリングの一部であり、ブロック ボックスのレイアウトとフローティング インタラクションの範囲を決定するために使用される領域です。簡単に言うと、BFC は要素の配置とその兄弟との相互作用に影響を与える属性です。
作成
次の状況では、新しい BFC が生成されます:
- ルート要素またはそれを含む他の要素
- Float(要素の float Not none)
- 絶対配置要素 (要素の位置は絶対または固定)
- inline-blocks (要素の表示: inline-block)
- テーブルセル Cell (要素の表示) : table-cell、HTML テーブル セルのデフォルト属性)
- テーブル タイトル (要素の表示: table-caption、HTML テーブル タイトルのデフォルト属性)
- オーバーフローの値は表示用ではありません要素
- フレックス ボックス (要素の表示: flex または inline-flex)
range
BFC には、コンテキスト要素の子要素を作成するすべての要素が含まれますが、新しい BFC の子である内部要素。
特徴
BFC の最も重要な効果は、隔離された空間を確立し、空間内外の要素間の相互作用を隔離することです。もちろん、他にも多くの機能があります:
- 内部ボックスは垂直方向に次々と配置されます (BFC 内の通常のフローとみなすことができます)。同じ BFC 内の要素が相互作用し、マージンの崩壊が発生する可能性があります。 > 各要素のマージン ボックスの左側は、コンテナ ブロックの境界ボックスの左側に接しています (左から右の書式設定の場合、それ以外の場合はその逆です)。これは、フロートがある場合にも当てはまります。
- BFC はページ上で独立したコンテナーであり、コンテナー内のサブ要素は外部の要素に影響しません。また、その逆も同様です。 BFC の高さ BFC に含まれるすべての要素を考慮する場合、浮動要素も計算に含まれます。
- 後、浮動ボックス領域は BFC に重畳されません。これを見て、前に戻って考えてください。 いくつかの小さな質問:
- 問題は解決しました
なぜ崩壊したのですか? float は通常のフローから離れて新しい BFC を作成します。親要素には BFC を生成する条件がないため、その高さは 0 です。
どうやって解決しますか?
BFC の特性を理解することで、BFC にはそれに含まれる浮動要素の高さ、つまり閉じた浮動要素の高さが含まれることがわかります。 overflow: auto を例に挙げます。overflow: auto は float を閉じませんが、overflow: auto は新しい BFC を作成して、浮動要素が他の要素に侵入するのを防ぎます。
クリア: 親要素の両方が機能しない?
これは意味上の誤解と見なされるべきです。clear は、両方の側に浮動要素が存在しないことを意味するため、「浮動すると高さが崩れる」という意味です。親要素は通常、フローティング要素の下に配置され、親要素がフローティング要素を包み込むように拡張されます。
推奨読書
あの頃一緒にクリアしたフロート
ブロックの書式設定コンテキスト (BlockFormattingContext) の学習
- フロートのすべて
- Stackoverflow what-does-the-css-rule-clear-both-do
- Stackoverflow how-does-the-css-block-formatting-context-work
- http: / /fuseinteractive.ca/blog/ Understanding-humble-clearfix#.VvjnPRJ94Wo
- ブロック フォーマット コンテキスト (ブロックレベルのフォーマット コンテキスト) を詳しく説明します
- ナンセンス
- 個人的には、このような質問はBATの面接で必ず得点すべき質問だと思います。それに答えられないのであれば、バイ・フメイと結婚してもあなたには何の関係もないと思います。
以前は、早く太る方法ばかり考えていて、なかなか落ち着かないのですが、これは基礎が弱い証拠です。
補足: 記事を書くのは、自分の復習と要約を容易にするためであり、また、文書を書く能力を練習するためでもあります。 ~ したがって、私たちを読むことはお勧めしません。記事に問題が発生した場合は、Google にアクセスするか、w3c ドキュメント、またはその他の保証された Web サイトを読むことをお勧めします。ファーストフードは一時的には良いですが、欲張らないでください。

HTMLの役割は、タグと属性を使用してWebページの構造とコンテンツを定義することです。 1。HTMLは、読みやすく理解しやすいようなタグを介してコンテンツを整理します。 2。アクセシビリティとSEOを強化するには、セマンティックタグなどを使用します。 3. HTMLコードの最適化により、Webページの読み込み速度とユーザーエクスペリエンスが向上する可能性があります。

HTML、CSS、およびJavaScriptは、Web開発の3つの柱です。 1。HTMLは、Webページ構造を定義し、などなどのタグを使用します。2。CSSは、色、フォントサイズなどのセレクターと属性を使用してWebページスタイルを制御します。

HTMLはWeb構造を定義し、CSSはスタイルとレイアウトを担当し、JavaScriptは動的な相互作用を提供します。 3人はWeb開発で職務を遂行し、共同でカラフルなWebサイトを構築します。

HTMLは、簡単に学習しやすく、結果をすばやく見ることができるため、初心者に適しています。 1)HTMLの学習曲線はスムーズで簡単に開始できます。 2)基本タグをマスターして、Webページの作成を開始します。 3)柔軟性が高く、CSSおよびJavaScriptと組み合わせて使用できます。 4)豊富な学習リソースと最新のツールは、学習プロセスをサポートしています。

Anexampleapalofastartingtaginhtmlis、それはaperginsaparagraph.startingtagsaresentionentientiontheyinitiateelements、definetheirtypes、およびarecrucialforurturingwebpagesandcontingthomedomを構築します。

メニューで点線のラインセグメンテーション効果を設計する方法は?メニューを設計するときは、通常、皿の名前と価格の間に左右に合わせることは難しくありませんが、真ん中の点線またはポイントはどうですか...

WebコードエディターのHTML要素分析では、多くのオンラインコードエディターを使用すると、ユーザーはHTML、CSS、およびJavaScriptコードを入力できます。最近、誰かが提案した...


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

ドリームウィーバー CS6
ビジュアル Web 開発ツール

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

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