幅の比率に応じて高さを変えるCSSを実装するいくつかの方法

幅の比率に応じて高さを変えるCSSを実装するいくつかの方法

[解決策1: パディングの実装]

原理:

要素の padding の値がパーセンテージの場合、このパーセンテージは親要素の幅に対する相対値となり、padding-bottom についても同様です。

高さが幅に比例する効果を得るには、height の代わりに padding-bottom を使用します。padding-bottom を実現したい高さの値に設定します。同時に

要素の「高さ」が padding-bottom の値と等しくなるように、高さは 0 に設定され、目的の効果が得られます。

<div class="父">
    <div class="childbox"></div>
</div>
<スタイル タイプ="text/css">
.childbox{
  パディング下部: 20%;
  幅: 20%;
  高さ: 0;
  背景: #888888;
}
</スタイル>

上記の例のアスペクト比は 1:1 です。つまり、正方形であり、親ボックスの幅に応じて比例して拡大縮小されます。

[解決策2:達成するための隠し絵]

原理:

div コンテナーに高さが指定されていない場合、コンテナー内の要素が変化すると高さが拡大します。この時点で、コンテナー内にアスペクト比に一致する画像を追加し、画像の幅を 100% に設定し、高さは自動です。画像で幅のみを設定すると、高さは幅に比例して変化し、自動的に拡大縮小されるため、内部のサブコンテナーの高さも比例して拡大縮小されます。もちろん、この画像を非表示にしたり、別のボックスで覆ったりすることもできます。

#容器 {
  幅: 100%;
}
.属性 {
  背景色: #008b57;
}
.attr画像{
  幅: 100%;
  高さ: 自動;
}
</スタイル>
<div id='コンテナ'>
  <div class='attr'>
    <img src="1.png" alt="">
  </div>
</div>

この方法では互換性を考慮する必要がなく、PC モバイルで完全に実行されます。 DOM 構造を追加すること以外では、ページ上の数百または数千のコードを考慮すると、言及する価値はありません。

imgタグを追加するとHTTPリクエストが多すぎると思われる場合は、base64画像エンコードでこの問題を解決できます。画像に必要なのは1つの形状だけなので、

HTTP リクエストを保存しながら、大胆に圧縮してエンコードできます。

[スキーム3: vw、vh]

CSS3の新しい単位(CSS3は素晴らしいですね~)、親コンテナの幅と高さを同じvwとして定義し、親コンテナの高さと幅が同じ値になるようにします。このとき、子コンテナの幅と高さの値はパーセンテージで設定します。親コンテナのサイズがどのように変化しても、子コンテナの高さと幅の比率は変わりません。

ユニットの説明
vwはビューポートの幅に相対的である
vhはビューポートに対する相対的な高さです
vminはビューポートの幅または高さの小さい方を基準とし、vminの100単位に均等に分割されます。

vmaxはビューポートの幅または高さの大きい方を基準とし、vmaxの100単位に均等に分割されます。

<div class="父">
    <div class="childbox"></div>
</div>
.childbox{    
  幅: 20%;
  高さ:20vw;
  背景: #888888;
}

これで、幅に比例した CSS の高さを実装するいくつかの方法についての記事は終了です。幅に比例した CSS の高さに関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後も 123WORDPRESS.COM を応援していただければ幸いです。

<<:  JavaScript プロトタイプチェーンを理解するための 2 つの図

>>:  docker-maven-plugin の詳細な使用方法

推薦する

Linux システムで HugePages をすばやく構成するための完全な手順

序文Linux システムの HugePages と Oracle データベースの最適化については、関...

MySQL 起動エラー 1067 および文字セットを変更して再起動した後の無効な回復

公式サイトからmysql-5.6.37-winx64.zipの解凍バージョンをダウンロードし、構成フ...

Vueドロップダウンメニューのコンポーネント開発の詳細説明

この記事の例では、Vueドロップダウンメニューのコンポーネント開発の具体的なコードを参考までに共有し...

スネークゲームのアイデアを実現するためのJavaScript

JavaScriptゲームSnakeの実装アイデア(完全なコード実装)を参考までに説明します。具体...

MySQLオンラインログライブラリの移行例

最近の事例をお話ししましょう。オンライン Alibaba Cloud RDS 上のゲーム ログ ライ...

nginx/apache 静的リソースのクロスドメインアクセスの問題を解決する詳細な説明

1. Apache 静的リソースのクロスドメイン アクセスApache設定ファイルhttpd.con...

親要素を基準にCSSの位置を絶対的に設定する方法についての簡単な説明

ご存知のとおり、CSS の絶対位置はデフォルトでドキュメントに応じて設定されます。たとえば、posi...

MySQL の無効な左結合の問題を解決する方法とその使用上の注意

MySQLの左結合が無効であり、その使用方法今日SQLを書いていたとき、左結合を使用すると左のテーブ...

JavaScript ジグソーパズルゲーム

この記事の例では、ジグソーパズルゲームを実装するためのJavaScriptの具体的なコードを参考まで...

Vueプロジェクトがグラフィック検証コードを実装

この記事の例では、グラフィック検証コードを実装するためのVueプロジェクトの具体的なコードを参考まで...

Vue ページ スタック マネージャーの詳細

目次2. 試した方法2.1 キープアライブ2.2 ネストされたルートを持つ CSS 3. 機能説明4...

テーブルパーティションとパーティション分割とは何ですか?MySqlデータベースパーティションとテーブルパーティション分割方法

1. テーブルとパーティションを分割する必要があるのはなぜですか?日常の開発では、大きなテーブルに遭...

Zabbixで監視する必要があるホストを追加するための詳細な手順

監視ホストの追加ホスト 192.168.179.104 が zabbix 監視項目に追加されます (...

HTMLにおけるbackground-image属性の設定の詳細な説明

写真といえば、まず背景画像が思い浮かびます。私たちの装飾の多くは背景画像を使用して実現されているから...

中国語ウェブコンテンツを紹介する10の経験

<br /> テキスト、シンボル、リンクの 3 つの側面に焦点を当て、主に中国語で、私の...