CSSはフロートをシミュレートして、画像の左右を囲む中央テキストの効果を実現します。

CSSはフロートをシミュレートして、画像の左右を囲む中央テキストの効果を実現します。

画像の周囲にテキストを折り返すとは何ですか?これは次の図の効果です。

エフェクトのCSSコードはここで見ることができます

CSS には float: center のような設定はありませんが、いくつかのトリックで同様の効果をシミュレートできます。

友人からよく「float: left と right はあるのに、なぜ float: center がないのですか?」と聞かれます。私の答えは次のとおりです。

1. text-align: center はインライン要素の中央揃え効果を実現できる

2. テキストを画像の両側に 1 行で折り返します。この効果は、ブラウザで処理するのが非常に困難です。テキストを2列で表示しない限り、それは別の問題です

3. テキストに関しては、float は実際には wrapping と呼ぶべきです。float:left は、「この要素をコンテナーの左側に配置し、その右側のすべてをその周囲にラップする」ことを意味します。この場合、ここで説明している float:center は実際には両側をラップすることであり、コンテナー内の要素の「深さ」をどのように決定するかなど、一連の問題が生じます。

float: center の効果をシミュレートするために、2 つの div を作成してテキストを 2 つの列に分割し、中央揃えの画像を最初の div に書き込みます。

<div id="コンテナ">
  <div id="左列">
    <p><img src=".../01.jpg">京都は本州のほぼ中央に位置しています。皇室が江戸に移る前は…
  </div>
  <div id="右列">
    <p>その結果、京都の保存された遺跡の多くはユネスコの世界遺産に登録されています。
  </div>
</div>

まず、2 つの div 要素 .leftcol と .rightcol を display: table-cell に設定し、コンテナー .container 要素を display: table: に設定します。

div#コンテナ{ 
  表示: テーブル; 
  幅: 80%;
  max-width: 900px; /* コンテナの最大幅 900px */
  マージン: 0 自動;
  行の高さ: 1.5;
}
div#左列、div#右列 { 
  表示: テーブルセル; 
  パディング: 1em;
}
div#コンテナ画像{
  width: 55%; /* 画像の幅は最初の列の div の幅の 55% です */
  高さ: 自動;
}

このように、テキストは表の 2 つの列として表示されます。

画像は、最初の列の左上に、その下部が最初のテキスト行のベースラインに揃えられて表示されます。

次に、画像に float:right を指定すると、画像は最初の div の右側にフロートし、テキストは画像の左側に折り返されます。

これまで、最も伝統的なレイアウト、つまり 2 列のテキスト (そのうちの 1 列にフローティング イメージが含まれる) を実装してきました。

次に、テキストを左右に折り返す効果を実現するために、いくつかのテクニックを使用する必要があります。

最初のステップは、margin-right プロパティを負の値に設定して、画像を一定の距離だけ右に移動することです。

div#コンテナ画像{
  フロート: 右;
  幅: 55%;
  高さ: 自動;
  margin-right: -20%; /* 画像は最初の div の幅の 20% 右に移動します */
  左マージン: 20px;
  下マージン: 20px;
}

margin-left および margin-bottom プロパティは、画像の左と下にテキストを配置して 20 ピクセルの間隔を設定します。

このとき、画像は 2 列目のテキストと重なります。

2 番目のステップは、:before 疑似要素を使用して 2 番目の div に要素を生成することです。この要素にはコンテンツは含まれず、フローティング後にテキストをその周囲に折り返すためだけに使用されます。

div#右列:前{ 
  コンテンツ: " "; 
  フロート: 左; 
  幅: 25%;
  パディング上部: 102%;
}

この疑似要素は左に浮動するように設定されており、その幅と画像が右にシフトされる距離を加えたものが画像の幅とまったく同じになります。

テキストと画像の間にいくらかのスペースができるように、padding-top プロパティは少し大きめに設定されています。

コンテンツのないこの疑似要素に赤い境界線を追加すると、その位置を確認できます。

この空の疑似要素の実際の機能は、画像と重なっているテキストを分離して折り返すことで、右側のテキストが画像を包み込む効果をシミュレートすることですが、実際にはテキストは疑似要素を包み込みます。

この折り返し方法には制限があり、画像は div の上部に配置する必要があり、垂直方向に画像を任意に配置することはできません。

最後に、美化スタイルと適応コードをいくつか設定すると、最終的な効果が実現されます。

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

<<:  elasticsearchを使用してインデックスデータを定期的に削除する

>>:  ウェブデザインにおけるポップアップウィンドウとフローティングレイヤーのデザイン

推薦する

Dockerはコンテナに入るためにnsenterツールを使用する

Dockerコンテナを使用する場合は、nsenterツールを使用する方が便利です。システムにない場合...

MySQL でよく使用される SQL 文を表示する (詳細な説明)

#mysql -uroot -pパスワードを入力してくださいmysql> show full...

CentOS 7.2 に SuPHP をインストールするための詳細な手順

デフォルトでは、CentOS 7 上の PHP は apache または nobody として実行さ...

MySQLはカバーインデックスを使用してテーブルリターンを回避し、クエリを最適化します。

序文カバーリング インデックスについて説明する前に、まずそのデータ構造である B+ ツリーを理解する...

MySQL の重要なパフォーマンス インデックスの計算と最適化方法の概要

1 QPS 計算 (1 秒あたりのクエリ数) MyISAMエンジンベースのDBの場合 MySQL&g...

Ajax は CORS レスポンス ヘッダーを設定してクロスドメインの問題を解決し、クロスドメインのケース スタディを実現します。

1. クロスドメインを実現するためにCORSレスポンスヘッダーを設定するクロスオリジンリソース共有...

Linux CDの意味と使い方

Linux CD とはどういう意味ですか? Linux では、cd はディレクトリの変更を意味します...

Linuxディレクトリ構造の詳細な紹介

Linuxを学び始めるときは、まずLinuxの標準ディレクトリ構造を理解する必要があります。 / r...

MySQL の乗算と除算の精度の不一致の問題 (除算後の小数点以下 4 桁)

質問今日、プロジェクト関数を書いていたとき、金額の統計計算を行い、単位を変換する必要がありました。そ...

js メモリ リークのシナリオ、それらを詳細に監視および分析する方法

目次序文どのような状況でメモリリークが発生する可能性がありますか? 1. 偶発的なグローバル変数2....

MAC+PyCharm+Flask+Vue.js ビルドシステム

目次node.js+nvm+npm を設定するnpmスイッチタオバオミラーVue.jsをインストール...

Linux のバックグラウンドで & と nohup を使用する方法

ターミナルやコンソールで作業しているときは、メールを読むなど、もっと重要な作業があるかもしれないので...

Firebug ツールを使用して iPad でページをデバッグする

iPad でページをデバッグするにはどうすればいいですか? iOS 5 をご利用の場合、iPad の...

Web2.0製品と機能の簡単な紹介

<br />Web2.0とは何ですか? Web2.0にはソーシャルネットワーク製品とその...

Linux で MySQL のデフォルト エンコーディングを変更する方法

開発プロセス中に、MySQL データベースを復元した後にデータベース データに文字化けが発生した場合...