適応幅(パーセンテージ)に応じて Div の高さを調整する純粋な CSS

適応幅(パーセンテージ)に応じて Div の高さを調整する純粋な CSS

今日のレスポンシブ レイアウトの要件では、サイズを自動的に調整できる多くの要素で高さと幅の適応を実現できます。たとえば、img では、{width:50%;height:auto;} を通じて幅の比率に従って画像の高さを調整できます。

ただし、最もよく使用されるタグである Div は、自動調整できません (親から継承するか、px を自分で指定するか、パーセンテージを指定します。ただし、このパーセンテージは要素自体の幅ではなく、親の高さに基づいて計算されるため、Div の幅と高さの間に特定の比率を実現することはできません =-=)。

この機能 (div の高さ: 幅 = 1:1) を実現するには、さまざまなバフを通じて、いくつかの対処方法があることがわかっています。

1. divの幅と高さを直接指定し、ズームして適応性を実現します。

div{幅:50px;高さ:50px;ズーム:1.1;}

これにより、初期の等しい幅と高さの div を実現できますが、制限が大きすぎるため、合格です。

2. jsを使用してdivの幅を動的に決定し、高さを設定します。

div{幅:50%;}

window.onresize = function(){div.height(div.width);}

幅と高さを等しくする div を実現することも可能ですが、少しぎこちない感じがします。PASS!

3. 幅と高さの単位で設定する

div{width:20vw;height:20vw;/*20vw はビューポート幅の 20% です*/

ただし、多くのデバイスはこの属性をサポートしておらず、互換性が低すぎるため、PASS!

4. floatで設定

#aa{背景:#aaa;;}
#bb{背景:#ddd;;フロート:左}
#cc{背景:#eee;;フロート:右}

<div id="aa">親div
  <div id="bb">子 div</div>
  <div id="cc">子 div</div>
  <div style="clear:both">これはエラーをクリアするために使用されます</div>
</div>

親要素 aa は子要素の高さに応じて自動的に高さを変更し(子要素にアダプティブ要素を配置して)、アスペクト比が一定になるように調整できますが、面倒すぎるので PASS!

5. 最後に、究極のキラー、この機能はパディングによって実現されます

上記のソリューションを実験した結果、幅の適応はビューポートの幅に応じて調整されることがわかりました。たとえば、{width: 50%} はブラウザの表示領域の 50% を意味し、サイズ変更後に自動的に調整されます。

高さをパーセンテージで指定すると、調整するビューポートの高さが自動的に検出されますが、これは幅とは関係ありません。当然、両者は比例関係にはなれません。この考え方を念頭に置いて、ビューポートの幅に関連するプロパティを見つけることでこの問題を解決できます。

このプロパティはパディングです。パディングはビューポートの幅に応じて調整されます。偶然にも、padding-top と padding-bottom もビューポートの幅に基づいて計算されます。そのため、このプロパティを設定することで、幅と一定の比例関係を実現できます。

まず、要素の幅を親要素の 50% に指定します (親要素とは、高さと幅を持つ任意の要素です。特定の親要素を指定することはできません。そうしないと、このソリューションの汎用性に影響します)

.father{幅:100px;高さ:100px;背景:#222}

.element{幅:50%;背景:#eee;}

このとき、要素の高さを 0 に、padding-bottom: 50% に設定します。

.element{幅:50%;高さ:0;下部パディング:50%;背景:#eee;}

要素は、幅 50%、高さ 0 の正方形になります (ただし、padding-bottom の幅は 50% です)。効果は、下の図のグレーホワイトの div に示されているとおりです。

この時点で、divの高さが0の場合、要素内に要素を配置するとオーバーフローしないのかと疑問に思う人がいるかもしれません。ここで、divのコンテンツとパディングを含めて計算されるoverflow属性について言及する必要があります。

元々、div は {width: 50px; height: 50px; padding: 0} の div だったかもしれませんが、現在は {width: 50px; height: 0; padding-bottom: 50px;} の div になっています。サイズは同じままです。この div の子要素の位置を指定することにより、正常に表示することができます。

このように、親要素の father、必要な要素、子要素の datail を設定することで、どのような場合でもこの要件 (div の幅と高さの固定比率) を達成できます。

純粋な CSS を使用して、適応幅 (パーセンテージ) に応じて Div の高さを調整する方法については、これで終わりです。適応幅に応じて Div の高さを調整する方法に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後も 123WORDPRESS.COM を応援していただければ幸いです。

<<:  JavaScript strictモードの概要 strictを使用する

>>:  MySQL はどのようにしてマスターとスレーブの一貫性を確保するのでしょうか?

推薦する

Javascript の基礎: 演算子とフロー制御の詳細な説明

目次1. オペレーター1.1 算術演算子1.2 インクリメント演算子とデクリメント演算子1.3 比較...

MySQL のフィールドにデフォルトの時間を追加する方法

日付型の違いと用途MySQL には、日付、時刻、年、日付時刻、タイムスタンプの 5 つの日付タイプが...

VMware Workstation Pro は Win10 ピュア バージョンのオペレーティング システムをインストールします

この記事では、VMware Workstation Pro で Win10 オペレーティング システ...

Pagoda Panel のインストール時にサーバーがデータベースにリモート接続できない問題の解決策

自分のウェブサイトを構築する予定なので、618 プロモーションを利用して Tencent Cloud...

HTML Web ページ リスト タグ学習チュートリアル

HTML Web ページ リスト タグの学習チュートリアル。 HTML ページでは、リストはアウトラ...

Vue3.0でカスタム命令を書くための簡単な手順

序文Vue には、v-if、v-bind、v-on などの豊富な組み込みディレクティブが用意されてい...

Ubuntu の起動後にアプリケーションを実行するためのターミナルの設定方法

1.メニューバーにスタートと入力し、スタートアップアプリケーションをクリックして入力します。 2. ...

Linux システムで時間を取得して使用する方法

Linux システム時間には 2 種類あります。 (1)暦上の時刻。値は、指定された時刻、1970 ...

React における useEffect と useLayoutEffect の違い

目次前提条件使用効果コミット前ミューテーション効果コミットミューテーション効果コミットレイアウト効果...

Intellij IDEA による Docker イメージの展開方法の手順の迅速な実装

目次1. Dockerはリモートアクセスを可能にする2. Intellij IDEAにDockerプ...

Vueの自己ネストツリーコンポーネントの使い方の詳細な説明

この記事では、Vueの自己ネストツリーコンポーネントの使い方を参考までに紹介します。具体的な内容は次...

Ubuntu 18.04 に Nvidia グラフィック カード ドライバーをインストールするチュートリアル (画像とテキスト付き)

0. 事前準備BIOS でセキュア ブートを無効にします。無効にしないと、サードパーティ ソースを...

MySQL の単一テーブル クエリ操作例の詳細な説明 [構文、制約、グループ化、集計、フィルタリング、並べ替えなど]

この記事では、MySQL の単一テーブル クエリ操作について説明します。ご参考までに、詳細は以下の通...

MySQLの再帰問題

MySQL自体は再帰構文をサポートしていませんが、自己接続を通じていくつかの単純な再帰を実現できます...

JavaScript はモーダルボックスのドラッグ効果を実現します

これはモーダル ボックスのドラッグのケースです。ここで実装する関数は次のとおりです。 1. ポップア...