本論文では、参照CSSレイアウト古典的な問題の予備的統合だけでなく、彼の見解の一部。
レイアウトについて
- フロート及び負マージン、二つのサブ要素内のコンテナ、左フローティング最初の子、第二子要素は、存在します
margin: -第一个子元素的宽度
- 絶対位置合わせ余裕を持って:容器又は二つのサブ要素、第一絶対位置、幅が死んであってもよく、マージン左の第2の要素:ああは、最初の要素の幅です。
左から右のレイアウト
翼と聖杯従来のレイアウトを飛んで、レイアウト杯フライング翼問題が同じで、それらが中央3列のレイアウト適応の両側に幅が固定されています。
聖杯のレイアウト
親ボックスが含まれている三つのサブボックス(左、中央、右)
3つのつの子要素が浮遊しています
中間箱の幅はに提供される
width: 100%;
別個のライン、-
負のマージン(両方
margin-left
)ボックスの左右中間ボックスは、同じラインをドラッグ。-
.left {margin-left:-100%;}
ボックスの左側には、プルアップします -
.right {margin-left:-右边盒子宽度px;}
ボックスの右側を引き上げ
-
パディングの左の位置に親ボックスの周りに配置されたボックスについてです
それが占めるように、相対位置を使用して、周りに2つのカートリッジである必要がある
padding
の周りにボックスで覆われている中間体ボックスの内容を回避するために空いた位置と、
<!-- 圣杯的 HTML 结构 -->
<div class="container">
<!-- 中间的 div 必须写在最前面 -->
<div class="middle">中间弹性区</div>
<div class="left">左边栏</div>
<div class="right">右边栏</div>
</div>
デモjsbin
全翼飛行機
親のボックスには、次の3つのサブボックス(左、中央、右)、中央のサブボックスプラスのサブボックスが含まれています。
- 中間箱の幅はに提供される
width: 100%;
別個のライン、 - 負のマージン(両方
margin-left
)ボックスの左右中間ボックスは、同じラインをドラッグ。 - ボックス内のdivの真ん中に追加して、DIVに提供
margin-left
し、margin-right
ボックスの位置を中心に維持します。
<!-- 双飞翼的 HTML 结构 -->
<div class="container">
<!-- 中间的 div 必须写在最前面 -->
<div class="middle">
<div class="middle-inner">中间弹性区</div>
</div>
<div class="left">左边栏</div>
<div class="right">右边栏</div>
</div>
デモjsbin
フライングウィングの類似点と相違点と聖杯
フライング翼と杯レイアウト問題は、それらが優先ストリームの前に文書をレンダリングするために、中間の列に、真ん中の3列レイアウト適応の両側に幅が固定されて、同じです。
- どちらの方法でも、同じ基本的な考え方を持っている:すべての3つの列がfloatをフロート。第1の負のマージン左バック左右2つのボックスと同じ高さの空間の中間ボックスを使用して、中間ボックスに同じ高さで満たされた空間、左右ボックスに位置する押出ボックスの中間領域の幅の100%をしましょう。次に、中間ボックスの周りにボックスを回避するために、いくつかの調整の内容がブロックされています。
- 主な違いは、中間ボックスの内容はボックスの周りにブロックされないようにする方法です。
- 聖杯レイアウトの方法:休暇ほぼ室温ボックスの親ボックスのパディング値、左アウトパディングが占めるスペースの位置を調整する権利のリサイクルボックス相対的なレイアウトを設定します。
- 直接略箱再調整せずに、サブスペースを作るために、ボックスのマージンの値を設定し、サブボックスを追加するためのボックスの中央にある:翼方法をフライング。
単にそれは聖杯フライングウィングのレイアウトとのdivを作成するよりも、ではなく、相対的な配置で入れて、いくつかの小さなプロパティを設定します。
トリプルレイアウトを実現するフローティング
私はまた、浮動3列のレイアウトを使用して実現:左側のボックスは、ボックスの中央を使用し、右のボックスの右側を浮動、フローティングのままmargin-left
とmargin-right
ボックスの周りに位置を残すが、親のボックスセットoverflow: auto;
のサブボックスのオーバーフローを回避します。
<!-- 浮动实现的 HTML 结构 -->
<div class="container">
<div class="left">左边栏</div>
<div class="right">右边栏</div>
<!-- 中间的 div 必须写在最后面 -->
<div class="middle">中间弹性区</div>
</div>
水平センター
- インライン要素(インライン)のために:
text-align: center
- ブロックレベル要素(ブロック)のために:と幅を設定
margin-left
し、margin-right
自動に設定されています - ブロックレベル要素の複数の親要素が設けられており
text-align: center
、サブ要素を配置しましたdisplay: inline-block
- ブロック要素(フレックス)は、複数の親要素が設けられています
display: flex; justify-content: center
垂直方向の中心
- 要素(インライン)インライン用
- 単線:等しい垂直panddingを設定し、またはセット
line-height
とheight
等しいです - マルチライン:垂直に等しいpanddingに配置され、またはセット
display: table-cell;
およびvertical-align: middle;
;又はフレックスレイアウトを使用して、または擬似要素を使用して
- 単線:等しい垂直panddingを設定し、またはセット
- ブロックレベル要素(ブロック)の場合:両方の溶液は、親要素の相対的配置を使用する必要がある前
- 既知の高さ:絶対レイアウトを使用して、サブ要素
top: 50%;
、その後負margin-top
ハンドルプルアップ素子の半分の高さ - 未知の高さ:絶対レイアウトを使用してサブ要素
position: absolute; top: 50%; transform: translateY(-50%);
- フレキシボックスを使用してください:方向を選択し、
justify-content: center;
- 既知の高さ:絶対レイアウトを使用して、サブ要素
水平および垂直方向の中心
- 最初の絶対配置を有する:高固定幅を与えられ
top: 50%; left: 50%;
、その後、半値幅と負のマージンハンドルに等しい高さの要素がプルバック - 高さと幅不明:最初の絶対配置を有する
top: 50%; left: 50%;
、その後設定transform: translate(-50%, -50%);
- フレキシボックスを使用します。
justify-content: center; align-items: center;
その他のヒント
必要にしたときに、フローティングでclearfix
フロートをクリアし、覚えています:
.clearfix::after{
content:'';
display: block;
clear:both
}
結合された浮動要素の親clearfix
、このクラスでは、我々は明確なフロートの副作用なしで行うことができます。
注意:
- ブラウザのデフォルトのフォントサイズ:16pxに
- テキスト装飾:属性は、2つの値を有することができる:最初の形態である、第二のようなスタイル、ある
line-through red
フォント中間赤線 - すべての要素は、インライン要素となることができる、インライン要素と言える。デフォルトはにデフォルトのブラウザベンダーであります
- セレクタの優先順位の原則:より大きな、より正確な
- 色:継承
- テキストワードブレーク:ブレークのすべてをすべて中断することができます
- 一般に、インライン要素が行の高さ、フォントサイズの高さによって決定されることができ、線高さ未満であります
- 上下マージンがインラインブロックの場合には組み込まれません
- 高さを設定していない最後の状況よりも少ないです。
- CSS縦優先権書類は、位置提供される相対的な、前にノーマルストリームよりも頼ります
- スパンが設定されていない
display:inline-block
力に余裕-下ではありません - インライン要素は設定しない
display:inline-block
パディングトップ気晴らしを使用することはできません -
display:inline-block
そこに底に無効とし、ニーズがなり、バグがありますvertical-align: top;
(覚えています)
何が要素の高さを決定します
文書内のフロー要素の高さの和によって決定されるコンテンツによって決定DIVの高さ(決定が等しくありません)
左から右へ、文書要素内の流れ方向、エレメント列、ボトムブロックレベル要素の最上位:伝票フロー。
ます。https://www.jianshu.com/p/fb205c00813cで再現