@(css float)[hasLayout|clear float|Miaotong]
float 属性は、要素がどの方向にフロートするかを定義します。歴史的に、このプロパティは常に画像に適用され、テキストが画像の周りを回り込むようにしていましたが、CSS では任意の要素をフローティングにすることができます。フローティング要素は、要素のタイプに関係なく、ブロック レベルのボックスを作成します。
非置換要素をフローティングにする場合は、明示的な幅を指定します。それ以外の場合は、可能な限り狭くなります。
注: 行上の浮動要素用のスペースがほとんどない場合、要素は次の行にジャンプし、このプロセスは特定の行に十分なスペースができるまで継続します。
默认值:none;继承性:no;版本:CSS1JavaScript 语法:object.style.cssFloat="left";
可能な値
值 描述left 元素向左浮动。right 元素向右浮动。none 默认值。元素不浮动,并显示在其在文本中出现的位置。inherit 规定应该从父元素继承 float 属性的值。
簡単な例
float:left がここで使用され、ul 要素と要素を左に移動します。
クリアフロートとは何ですか?
クリアフロートを「クリアフロート」と訳すことに慣れている人が多いですが、フロートによって引き起こされる問題を考えると、私たちがしなければならないのは、クリアフロートだけでなくクローズフロートも含めたフロートの影響を理解することだと思います。 . float が他の要素に影響を与えないようにします。
なぜ float をクリアする必要があるのですか?
float をクリアする必要がある理由は、float に不満があるからではなく、場合によっては float がレイアウトに問題を引き起こし、float をクリアしなければならないからです。 。 インパクト。以下は、float および clear float メソッドによって引き起こされるレイアウトの問題の一部です:
コードとレンダリングは次のとおりです:
上記の例は、内側の div が float の場合、高さ、パディング、およびマージンが次のとおりであることを示しています。この場合、親の高さは 0 であり、親コンテナの高さは内部コンテンツの高さだけ拡張できることがわかります。これが float によって引き起こされる高さの崩壊の問題です。
親コンテナの高さを設定したらどうなるでしょうか?
コードとレンダリングは次のとおりです:
親コンテナの高さを設定するとき、高さは0ではなく200ピクセルに設定されることがわかりました
親コンテナにマージンとパディングを設定すると、また状況はどうですか?
コードとレンダリングは次のとおりです:
上記の例は、親 div の高さを設定せず、パディングとマージンのみを設定した場合、レンダリングに示されているように、実際の高さは次と等しいことを示しています。上下の境界線、および上下のパディング。マージンを追加した後も、コンテンツの高さは 0 のままで、float により高さが崩れます。
この場合、clear float メソッドは次のとおりです:
方法 1: 新しい要素タグを追加し、clear: 両方を適用します。
コードとレンダリングは次のとおりです:
上記の例clear:both を使用すると、親 div の高さは子レイヤーの高さによって増加し、コンテンツの高さは 50px になり、パディングとマージンは影響を受けないことを示します。この方法の長所と短所は次のとおりです:
方法 2: 親 div 定義 overflow:auto/hidden; (ここでの親 div は div#wrap を指します)
コードとレンダリングは次のとおりです:
上記の例は、方法 2 を通じて、効果を実現するために、コンテンツの高さも 50px に変更され、パディングとマージンは影響を受けません。
ブロック書式設定コンテキストが作成された要素には、その子要素が次々と配置されます。それらの垂直方向の開始点は、それを含むブロックの上部であり、隣接する 2 つの要素間の垂直方向の距離は、「margin」属性によって異なります。ブロック フォーマット コンテキスト内の隣接するブロック レベル要素の垂直マージンが折りたたまれます。
BFC の使用: 非 BFC 要素は、float が追加されたサブ要素の高さの値を無視し、その上部と下部のマージンはその内部と外部のマージンと一緒に折り畳まれます。 float 要素は、それ自体とその子要素のレイアウトに影響を与えます。
BFC のトリガーは、これら 3 つの問題を解決する効果的な方法です。これが、overflow:hidden/auto を使用してフローティングやその他の問題を解決できる理由です。
をトリガーするための条件:
「float」の値が「none」ではない「display」の値が「table-cell」である
「table-caption」、または「inline-block」
「position」の値は「static」でも「relative」でもありません
したがって、オーバーフロー属性を使用してフロートをクリアする場合、オーバーフロー属性には 3 つの属性値 (hidden、auto、visible、scroll、inherit) があることに注意してください。 float をクリアするには hidden 値と auto 値を使用できますが、この値では float をクリアする効果は得られません。IE6 では hasLayout をトリガーする必要があります。
overflow:auto; メソッドを使用する利点と欠点は次のとおりです:
方法 3: 親要素も float に設定されます
コードと効果は次のとおりです:
: Use:after 疑似要素 注意すべき点: after は疑似要素 (Pseudo-Element) であり、疑似クラスではありません(一部の CSS マニュアルでは、これを「疑似オブジェクト」と呼んでいます)。 IE6-7は:afterをサポートしていないため、zoom:1を使用してhasLayoutをトリガーします。
このメソッドは次から派生しています: How To Clear Floats Without Structural Markup http://snipplr.com/view/86/clear-floats-without-structural-markup/
コードと結果は次のとおりです:
この属性は、要素の前後に配置される生成コンテンツを定義するために使用されます。デフォルトでは、これは多くの場合インライン コンテンツですが、このコンテンツが作成するボックスのタイプは、表示属性を使用して制御できます。
デフォルト値:normal
継承: noバージョン: CSS2JavaScript 構文: object.style.content="url(beep.wav)"
none
normal
コンテンツ仕様
inheritは、継承する必要があることを指定します親要素 content 属性の値を継承します。
詳細については、リンクを参照してください: http://www.w3school.com.cn/cssref/pr_gen_content.asp
この記事には hasLayout や BFC などが含まれます。レベルが限られているため、ここでは個別に説明しません。調査後に別の記事で説明します。
今日はここまでです。間違いがあればご指摘ください。 -----ミャオトン