CSSの使用に関する深い理解 clear:both

CSSの使用に関する深い理解 clear:both

clear:both清除浮動これは私が常に持っていた印象ですが、私はこれをめったに使用せず、私の理解は実際にはあまり正確ではありません。今日情報を確認して記録しました。

ドキュメントフローから外れます

float の本来の目的はテキストの折り返しを実現することであり、これはドキュメントのフローから部分的に分離することとして理解できます。

CSS では、ドキュメント フローから外れるとは、ボックスが通常のレイアウトから外れ、他のボックスが存在しないかのように配置されることを意味します。文書フローからの分離には2つの種類があります

  • 完全にドキュメント フローから外れます。たとえばposition:absoluteで絶対配置ボックスを使用すると、他のボックス (それ自体、またはボックス内の要素) は、レイアウトのためにこの絶対配置ボックスを無視します。
  • ドキュメント フローから部分的に外れます。つまり、 floatボックスです。 floatプロパティを使用した後、他のブロック ボックスはレイアウトのためにfloat盒子を無視しますが、他のボックス内のインライン要素とインライン ブロック要素は、このフローティング ボックス用のスペースを確保します。

クリア:両方

clear:both属性が追加されたボックスに作用します

ボックスにclear:both追加すると、そのボックスの上境界線が、その之前フロート ボックスの底外邊距低于なります。

したがって、 clear:bothフロートをクリアしませんが、フロートの効果をクリアします。フローティング ボックスは、まだ部分的にドキュメント フローから外れています。

clear の値は left または right です。私の意見では、これは想要低于的那個浮動盒子のフローティング方向によって異なります。 bothの値は、それより前のフローティング ボックスよりも低くなります。

クリアリングの影響の例

A、B、Cの3つのボックスを設置しました

3 つのボックスがすべて左にフロートされている場合:

C が float に設定されていない場合:

Bにclear:both/clear:leftを追加します。

ご覧のとおり、B 自体によって発生したフローティング効果はクリアされ、その上境界線は任何在他之前的浮動盒子的底部下にありますが、非フローティング ボックス C はまだ AB の下にあり、その中のフォントによってフローティング ボックスのためのスペースが確保されています。

親ボックスに疑似要素を追加する::after

ここで、 div(class:box)を使用して 3 つのボックス ABC を囲み、 boxの外側にボックスoutを追加します。ここで、ABC と out はすべてフロートするように設定されます。今はこんな感じです:

out のフロートを削除します。

これは当然のことです。

ボックスに疑似要素を追加する

.box::after{
  クリア: 両方;
  高さ:10px;
  幅:10px;
  背景:黄色;
  表示: ブロック;
  コンテンツ: "";
} 

これで外側のボックスoutのフロート効果がクリアされましたが、これはclear:bothフロートをクリアしたからではなく、 after偽元素自体のフロート効果がクリアされ、その前のフローティング ボックスの下になったためです。これにより、 boxの高さが崩れなくなり、 outboxのすぐ下になりました。これが通常のドキュメント フローです。

## 仕上げる

CSSの基礎知識ですが、これまでじっくり読んだことがありませんでした。今回は整理してみました。間違いなどありましたら、この記事をご覧になった方はご指摘いただけると幸いです。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

<<:  MySQL 全文インデックスガイド

>>:  Docker ディスク領域クリーニングのソリューション

推薦する

MySQL の厄介な Aborted 警告をケーススタディで分析する

この記事では主に、MySQL の Aborted アラームに関する関連コンテンツを紹介し、参考と学習...

あるテーブルからバッチデータをクエリし、それを別のテーブルに挿入する MySQL の完全な例

事前に言っておくNodejs はデータベースを非同期操作として読み取るため、データベースがデータを読...

時間のかかるMySQLレコードのSQL例の詳細な説明

mysqlは時間のかかるSQLを記録しますMySQL は、最適化と分析のために、時間のかかる SQL...

Win7 で IIS7 Web および FTP サービスを完全にアンインストールする方法

昨日、パソコンにPHP開発環境をセットアップした後、Apacheサーバーを再起動するとエラーが続きま...

Node.js mysqlクライアントが認証プロトコルをサポートしていない問題を解決する

序文mysql モジュール (プロジェクト アドレスは https://github.com/mys...

JavaScript の for/of、for/in の詳細な紹介

目次JavaScriptでは、 forループを記述する一般的な方法がいくつかあります。最初の、そして...

DIV、テーブル、XHTML のウェブサイト構築の違いの分析と説明

簡単に言えば、ウェブサイト構築とは、「この人はどんな外見をしているのか」と「この人はどんな内面を持っ...

MySqlは、外部ネットワーク接続クライアントの低速問題を解決するためにskip-name-resolveを使用します。

Tencent Cloud上に構築されたMySQLは、開発用コンピュータでNavicatを使用して...

MySQLの不合理なMaxIdleConnsにより接続が短くなる

1 背景最近、Shimo Document のオンライン ビジネスでパフォーマンスの問題が発生しまし...

Dockerでデータディレクトリを移行する方法

目次ディスク使用量の表示ディスク クリーンアップ (軽々しく使用しないでください)データの移行ディス...

MySQL の指定文字によるマージと分割の例のチュートリアル

序文指定した文字による結合または分割は一般的なシナリオです。MySQL では結合の記述は比較的簡単で...

nginxのリソースキャッシュ設定の詳細な説明

私はずっとキャッシュについて学びたいと思っていました。結局のところ、キャッシュはフロントエンドのパフ...

Linux を使用して時間指定ファイルが占有するディスク容量を計算する方法

スケジュールされたタスク エディターを開きます。Cent は、デフォルトで vim を使用して直接開...

docker システムコマンドセットの使用

目次docker システム df docker システム プルーンdocker systemc 情報...

Dockerコンテナの個別展開のためのLNMPの実装

1. 環境整備各コンテナの IP アドレス: nginx: 172.16.10.10マイSQL: 1...