CSS
 Computer >> コンピューター >  >> プログラミング >> CSS

CSSClearfixハックをいつどのように使用するか

CSSFlexboxとCSSGridの生成におけるコーダーとプログラマーとして、CSSClearfixを考慮することはあまりありません。 CSS FlexboxとGridは、フロートを使用するよりも要素の位置を少し良く(そして少し簡単に!)解決します。

それでも、floatを使用するレガシーコードを使用していて、コードベースのより新しい処理に切り替える時間やお金がない少数のインスタンスについては、これをすべて知っておく必要があります。

この記事では、clearfixハックについて説明し、clearfixソリューションの新しい代替品としてのdisplay:flow-rootについて説明します。

フロートとは何ですか?

CSSClearfixハックをいつどのように使用するか

念のため、フロート プロパティは基本的に、フロートさせたい要素を受け取り、それをコンテナの左または右に配置します。

<!DOCTYPE html>
<html lang="en>
<head>
	<title>CSS Clearfix</title>
	<meta name="viewport" content="width=device-width, initial-scale=1">
	<style>
body {
  background-color: grey;
}

ul {
  max-width: 800px;
  width: 100%;
  background: lightblue;
  border: 5px double black;
  padding: 20px;
}

img {
  width: 300px;
  margin: 20px;
}

li {
  list-style: none;
  float: left;
}

</style>
</head>
<body>
<!-- https://unsplash.com/photos/2PPjq7I3bs4 -->
<ul>
  <li>
    <img src="https://images.unsplash.com/photo-1567268377583-d1aaf9ccfc22?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=3300&q=80" />     </li>
<!--  https://unsplash.com/photos/vYhBeZ_G_xE  -->
  <li>
    <img src="https://images.unsplash.com/photo-1592283338081-beb63fa6a156?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1850&q=80" />     </li>
<!--  https://unsplash.com/photos/7UduWMpT618  -->
  <li>
    <img src="https://images.unsplash.com/photo-1583513702439-2e611c58e93d?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=3298&q=80" />     </li>
<!--  https://unsplash.com/photos/Ah_QC2v2alE  -->
  <li>
    <img src="https://images.unsplash.com/photo-1552944150-6dd1180e5999?ixlib=rb-1.2.1&auto=format&fit=crop&w=1850&q=80" />     
  </li>
<!--  https://unsplash.com/photos/T-0EW-SEbsE  -->
  <li>
    <img src="https://images.unsplash.com/photo-1548199973-03cce0bbc87b?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=2250&q=80" />     </li>
</ul>
<p>Here is a sample paragraph element. Something is wrong about where I am in the layout. What else is wrong with the layout?</p>
</body>
</html>

現時点では、<ul>にあるはずの画像がいくつかあります 、水色の背景を持つコンテナですが、これらの画像は<ul>の他の要素よりも背が高くなっています 。これにより、フロートと折りたたまれた水平マージンをクリアしないオーバーフローが発生します。

これが、水色のコンテナが非常に短い理由、フロートがその場所に配置されている理由、およびフロート要素と並んで段落要素がある理由です。これは、親コンテナよりも高い子要素でfloatを使用する場合のデフォルト値です。

修正

最初に考えられる解決策は、いわゆるclearfixハックです。 。このハックは、親コンテナの後に空のコンテンツを挿入するため、浮動要素を含むように拡張されます。これを実現するために、疑似要素::afterを使用します。

<!DOCTYPE html>
<html lang="en>
<head>
	<title>CSS Clearfix</title>
	<meta name="viewport" content="width=device-width, initial-scale=1">
	<style>
body {
  background-color: grey;
}

ul {
  max-width: 800px;
  width: 100%;
  background: lightblue;
  border: 5px double black;
  padding: 20px;
}

img {
  width: 300px;
}

li {
  list-style: none;
  float: left;
  margin: 20px;
}

.clearfix-hack::after {
  content: " ";
  clear: both;
  display: table;
}

</style>
</head>
<body>
<!-- https://unsplash.com/photos/2PPjq7I3bs4 -->
<ul>
  <li>
    <img src="https://images.unsplash.com/photo-1567268377583-d1aaf9ccfc22?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=3300&q=80" />     </li>
<!--  https://unsplash.com/photos/vYhBeZ_G_xE  -->
  <li>
    <img src="https://images.unsplash.com/photo-1592283338081-beb63fa6a156?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1850&q=80" />     </li>
<!--  https://unsplash.com/photos/7UduWMpT618  -->
  <li>
    <img src="https://images.unsplash.com/photo-1583513702439-2e611c58e93d?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=3298&q=80" />     </li>
<!--  https://unsplash.com/photos/Ah_QC2v2alE  -->
  <li>
    <img src="https://images.unsplash.com/photo-1552944150-6dd1180e5999?ixlib=rb-1.2.1&auto=format&fit=crop&w=1850&q=80" />     
  </li>
<!--  https://unsplash.com/photos/T-0EW-SEbsE  -->
  <li>
    <img src="https://images.unsplash.com/photo-1548199973-03cce0bbc87b?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=2250&q=80" />     </li>
</ul>
<p>Here is a sample paragraph element. Something is wrong about where I am in the layout. What else is wrong with the layout?</p>
</body>
</html>

少しのマージンは別として、<li>に追加しました 間隔をより良くするために、追加されたのは .clearfix-hack::after だけでした。 セレクタ。コンテンツ、表示、クリアの3つのプロパティが必要です。

参加者の81%は、ブートキャンプに参加した後、自分たちの技術的な仕事の見通しについてより自信を持っていると述べました。今日のブートキャンプにマッチしましょう。

平均的なブートキャンプの卒業生は、ブートキャンプの開始から最初の仕事を見つけるまで、キャリアの移行に6か月も費やしませんでした。

空の文字列がcontentプロパティの値を占めているため、要素の境界線を両方の末尾の下に移動しています。 clearプロパティのfloatのタイプで、表示をblockに設定しています。 または table ページにデータ/画像を表示します。

これにより、コンテナ内の画像とその下の

タグが適切に表示されます。

これでClearfixの終わりですか?

FlexboxとGridの出現により、clearfixの必要性はなくなりつつあります。 CSSでclearfixを処理する新しい方法でさらにそうです:

.clearfix-hack {
	display: flow-root
}

.clearfix-hack::after を置き換えます 上記のコードのセレクター。何か変化はありますか?

display: flow-root
clearfixハックを実行し、コードをさらに読みやすくします。

結論

floatプロパティを子要素に追加したときに発生するバグを修正する2つの異なる方法について説明しました。それは、clearfixハックとdisplay: flow-rootの使用です。 。おそらく、これらのハックはレガシーコードでのみ使用され、FlexboxとGridが作成されているため、実際に最初から作成したコードでは使用されません。


  1. HDRとは何ですか?Androidでそれを使用する方法

    スマートフォンの写真撮影は、近年飛躍的に進歩しています。私たちのほとんどは、スマートフォンの利便性を優先して、従来のデジタルカメラを完全に放棄しました。この移行は、より優れたハードウェアとソフトウェアが電話に実装されたことで可能になりました。携帯電話のカメラ機能がより複雑になるにつれて、画像をより細かく制御できるようになります。今日のほとんどのAndroidスマートフォンには、「HDR」というラベルの付いた設定があります。しかし、HDRとは正確には何であり、いつ使用する必要がありますか? HDRの説明 HDRはハイダイナミックレンジの略です 、ここで、「ダイナミックレンジ」は写真の明暗の比率

  2. Windows8および10でWindowsUpdateトラブルシューティングを使用する方法

    Microsoftは、Windows7の導入とともにWindowsOSのOTA更新プロセスを導入しました。これは、問題の更新をプッシュすることで、問題に対処するのに非常に役立ちました。 Windowsを使用している場合、最新のビルドに更新しようとしているときに、運が良ければ、さまざまなエラーが発生する可能性があります。これらの問題に対処するために、MicrosoftはWindowsUpdateのトラブルシューティングと呼ばれるツールを構築しました。 (修正) それは魔法をします。 Windows内のサービス構成をリセットすることで問題を解決します。 したがって、Windowsの更新中に問題が