表示とノーマルフロー

CSS をまったく使わないページに 3 つの段落とリンクを 2 つ配置すると、それでも自動的にレイアウトされます。段落はページ下方に積み重なり、リンクはあなたが書いたテキストの中に配置されます。ブラウザに指示を出したわけではありません。最初の 1 つのレイアウトルールを書く前に、すでにレイアウトが存在しており、後で使用するすべてのテクニックは無からの開始ではなく、それへの変更です。この章はその開始点とそれを管理する 1 つのプロパティについてです。
ノーマルフロー
ブラウザが独自のレイアウト CSS なしでページをレイアウトするとき、ノーマルフロー を使用します。これは要素が自動的に配置される方法です。段落や見出しなどのブロック要素は上から下へスタックし、それぞれが独自の行に配置されます。テキストとリンクは行内を左から右へ実行され、スペースが足りなくなると次の行に折り返されます。
フロー周辺の部分はすでに紹介しました。この章は ボックスモデル に基づいて構築されています。なぜなら、それらのボックスがフローするからです。ノーマルフローは名前を付ける価値があります。なぜなら、レイアウト内のすべてのほかのもので定義されているからです。Flexbox、グリッド、ポジショニングはすべて「デフォルトと異なる配置」を意味しているので、デフォルトを知ることが変更を理解するのに役立ちます。
ブロックボックスとインラインボックス
ノーマルフロー内の要素には、主に 2 つの種類があります。ブロックボックス はそのコンテナーの幅全体を占め、独自の行にスタックして、次の要素を下に押します。段落 <p>、見出し <h1>、<div> はすべてブロックであり、これが 1 つずつ下に並ぶ理由です。
インラインボックス は異なります。テキストの行内に配置され、コンテンツに必要な分だけスペースを占めるため、複数が 1 行を共有できます。リンク <a> または <span> はインラインであり、これが文内のリンクが独自の行にジャンプするのではなく、単語のフロー内に留まる理由です。
<p>この段落はブロックであり、独自の行に配置されます。</p>
<p><a href="/css/box-model">ボックスモデル</a> の詳細を読んでください。</p>
<!-- リンクはインラインであり、文内に留まります --><p> と <div> などのブロックボックスは幅全体を占め、独自の行にスタックします。<span> と <a> などのインラインボックスは行内に配置され、必要なスペースのみを占めます。これが、リンクが独自の行に段落するのではなく、文内に留まる理由です。 display プロパティ
すべての要素にはデフォルトの種類、ブロック、またはインラインがありますが、それに限定されません。display プロパティを使用すると、要素がどのように動作するかを変更できます。リンクに display: block を設定すると、独自の行を占めるようになります。リストアイテムに display: inline を設定すると、1 行で並べます。
3 番目の値が一般的な問題を解決します。display: inline-block です。行内のインラインボックスのようにフローしますが、ブロックのように幅、高さ、垂直 padding を受け入れます。ボタンやナビゲーション ピルなど、隣人の隣に配置する必要があるが、設定されたサイズを必要とするもの用です。
.nav-link {
display: inline-block; /* 行内にフローしますが、幅と padding を受け入れます */
padding: 8px 16px; /* 垂直 padding は、プレーンインラインとは異なり、機能するようになりました */
}display プロパティは、要素がブロックまたはインラインボックスとして動作するかを変更します。block は独自の行を占め、inline はテキスト行に配置されます。便利な中間オプションは inline-block であり、行内にフローしながら、幅と padding を受け入れるため、ボタンとナビゲーション リンク用です。 要素を非表示にする: display none vs visibility hidden
要素が表示されないようにする必要がある場合があります。2 つの方法があり、異なる動作をします。display: none は要素を完全に削除します。消えて、ギャップが残りません。ページに存在しないかのようです。visibility: hidden は見えなくしますが、スペースを保ちます。つまり、かつてあった場所に空の穴があります。
どちらを使用するかは、スペースを戻すかどうかに依存します。display: none を使用して、閉じたメニューのようなものを完全に削除します。visibility: hidden を使用して、レイアウトがジャンプしたくない場合、そのボックスは予約されたままです。
.closed-menu {
display: none; /* 消えた。後ろにギャップなし */
}
.placeholder {
visibility: hidden; /* 見えない。ただし、スペースを占め続ける */
}display: none は要素を削除して、ギャップを残しません。visibility: hidden は見えなくしますが、スペースを保ちます。閉じたメニューのように、スペースも消えたい場合は display: none を選択します。レイアウトがジャンプしてほしくない場合は visibility: hidden を選択します。 display が内部レイアウトを変更する方法
display がブロックとインラインを切り替えることは既に確認しています。より深いレベルでそれ以上のことを行います。同じプロパティは、コンテナーを flexbox またはグリッドに変えるもので、子要素を行と列に配置する 2 つのモダンツールです。今のところ、重要なのは、display がボックスのレイアウト方法とその内部の子要素がレイアウトされる方法を決定する 1 つのダイアルであることです。
レイアウトは、一度にオンにする 1 つの大きなスイッチではありません。異なる配置が必要な特定のコンテナーで display を変更し、残しているすべてのものはノーマルフロー内に留まります。flexbox および positioning の章は、ここから選び上げられます。
display プロパティは、コンテナーを flexbox またはグリッドに変えて、子要素を配置するのも出ています。レイアウトは、一度にオンにする 1 つのスイッチではありません。それが必要なコンテナーで display を変更し、残りはノーマルフロー内に留まります。Flexbox と positioning の章はここから続きます。 
