CSS で動的な画像の 9 グリッド レイアウトを実装するためのサンプル コード

CSS で動的な画像の 9 グリッド レイアウトを実装するためのサンプル コード

前提条件: content="width=750"

<meta name="viewport" content="width=750,user-scalable=no,target-densitydpi=device-dpi,viewport-fit=cover">

効果図は以下のとおりです。

需要分析

高さと幅:

1枚 [幅320、高さ320] [下書きサイズの2倍]
画像2枚の場合 [幅332、高さ332]
3枚、4枚、6枚、7枚、9枚 [幅220、高さ220]
5枚または8枚の画像の場合、[4枚目と5枚目の画像の幅と高さは332]、[残りの画像の幅と高さは220]

間隔:

画像が 2 枚ある場合、最後の画像には左余白のみがあります。
3枚ある場合、2枚目の左右の余白
画像が4枚ある場合、[2枚目]と[最後の画像]は左方向のみ余白があり、[3、4]は上方向に余白があります。
写真が 5 枚ある場合、最後の写真には左余白のみがあります。
写真が6枚または7枚ある場合、2枚目と4枚目には左右の余白があり、4枚目以降は上部に
写真が8枚ある場合、2枚目と4枚目は左右の余白があります。4枚目以降は上に余白があり、最後の写真は左側のみ余白があります。
9枚ある場合、[2枚目、4枚目、8枚目]には左右の余白がある

丸い角10:

画像が1枚の場合、[すべて]角が丸くなります
2枚の写真、3枚の写真 - [1枚目の写真は左上、左下]、[最後の写真は右上、右下]
写真が4枚ある場合、[1枚目左上]、[2枚目右上]、[3枚目左下]、[最後の写真右下]
写真が5枚ある場合、[1枚目左上]、[3枚目右上]、[4枚目左下]、[最後の写真右下]
写真が6枚ある場合、[1枚目左上]、[3枚目右上]、[4枚目左下]、[最後の写真右下]
画像が7枚ある場合、[1枚目左上]、[3枚目右上]、[7枚目左下、右下]
写真が8枚ある場合、[1枚目左上]、[3枚目右上]、[7枚目左下]、[最後の写真右下]
写真が9枚ある場合、[1枚目左上]、[3枚目右上]、[7枚目左下]、[最後の写真右下]

誘導

私たちは中学校で数学の帰納法を学びました。これは、まず命題がn=1のときに真であるかどうかを調べ、次にn=kのときに真であると仮定し、n=k+1のときにも真であることを証明し、それによって命題がn=k [kは任意の実数]のときに真であることを証明するというものです。

コード

<div class="grid-img-box">
    <van-image class='grid-img' v-for="data.photo の値" :key="値" fit="カバー" :src="値" />
</div>

.grid-img{

  /**
  幅と高さ 1. 3n+1 で、最後から 2 番目の画像です。 2. 3n+1 で、最後の画像です。 どちらの場合も、画像の幅と高さは 320 である必要があります。
      残りの2つのケースは次のとおりです。
    3. 画像が 1 枚しかない場合は、幅と高さは 320 です。
    4. その他のケースとインデックスでは、幅と高さは両方とも 220 です。
  */
  表示: インラインブロック;
  幅: 220ピクセル;
  高さ: 220px;
  &:一人っ子{
    幅: 320ピクセル;
    高さ: 320px;
  }

  &:n番目の子(3n+1):最後のn番目の子(2),
  &:n番目の子(3n+2):最後の子{
    幅: 332ピクセル;
    高さ: 332px;
  }

  /**
  間隔/レイアウト*/

  &:n番目の子(3n+2){
    マージン: 0 6px;
  }
  &:n番目の子(n+4){
    上マージン: 6px;
  }

  &:最初の子{
    左上の境界線の半径: 10px;
  }

  &:最後の子{
    右マージン: 0;
    右下の境界線の半径: 10px;
  }

  /**
  角丸*/

  //左下の丸い角: 最後の行の最初の &:nth-child(3n+1) {
    &:最後の子,
    &:n番目最後の子(2),
    &:n番目最後の子(3){
      左下の境界線の半径: 10px;
    }
  }

  // 4 つのレイアウトを処理する // 2 番目の余白を増やして 3 番目のレイアウトを次の行に押し出す &:nth-child(2):nth-last-child(3){
    右マージン: 220px;
  }
  //2番目の丸い角をリセットします &:nth-child(2):nth-last-child(3){
    右上の境界線の半径: 10px;
  }

  //3番目の余白と半径をリセットします
  &:n番目の子(3):最後のn番目の子(2){
    上マージン: 6px;
    右マージン: 6px;
    境界線の半径: 0 0 0 10px;
  }
  //4番目の丸い角をリセットします &:nth-child(4):last-child{
     境界線の半径: 0 0 10px 0;
  }
}

要約する

CSS を使用して動的な画像の 9 グリッド レイアウトを実装する方法について説明したこの記事はこれで終わりです。CSS 9 グリッド レイアウトに関するより関連性の高いコンテンツについては、123WORDPRESS.COM で以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

<<:  MySql キャッシュ クエリの原理とキャッシュ監視およびインデックス監視の概要

>>:  IE環境では、divの高さはフォントの高さよりも大きくなければならないと規定されています。

推薦する

Nginx ルーティング転送とリバースプロキシロケーション構成の実装

Nginx を設定する 3 つの方法最初の方法は、位置一致部分を直接置き換える。 2 番目の pro...

PythonはデータベースMySQLの解凍バージョンのインストール構成に接続し、問題が発生しました

導入今日は Python でデータベースに接続する方法を学んだので、MySQL データベースをインス...

複数のドメイン名、ポート、IP仮想ホストに基づくNginx構成

1. タイプの導入1.1 ドメインベースの仮想ホスティングいわゆるドメイン名ベースの仮想ホストとは、...

MYSQL データベースの基礎 - 結合操作の原理

結合では、ネスト ループ結合アルゴリズムが使用されます。ネスト ループ結合には 3 つの種類がありま...

HTML ハイパーリンクの詳細な説明

ハイパーリンクハイパーリンクは、Web サイト上のすべてのページがハイパーリンクで接続され、ページ間...

JavaScript ESの新機能letとconstキーワードに基づく

目次1. letキーワード1.1 基本的な使い方1.2 変動昇進はない1.3 一時的なデッドゾーン1...

Windows 7 の mysql6.x で中国語の文字化けが発生する問題に対する完璧な解決策

1. コマンドラインでMySQLサービスを停止します: net stop mysql stop my...

ffmpeg コマンドラインを使用してビデオを変換するためのサンプルコード

この記事の本文を始める前に、まず ffmpeg プログラムをインストールする必要があります (Lin...

MySQL msiバージョンのダウンロードとインストールの初心者向けの詳細なグラフィックチュートリアル

目次1. MySQL msiバージョンをダウンロードする2. インストール3. 環境変数を設定する1...

要素シャトルフレームのパフォーマンス最適化の実装

目次背景解決新しい質問高度な背景シャトル ボックスが大量のデータを処理すると、レンダリングされる D...

MySQLの文字セット設定を5分で理解しましょう

目次1. コンテンツの概要2. 文字セットと文字順序の概念と関係3. MySQL でサポートされてい...

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

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

HTMLフローティングプロンプトボックス機能の実装コード

一般的なフォーム プロンプトは常にフォームのスペースを占有し、フォームが長くなったり広くなったりして...

レスポンシブ原則をシミュレートするための基礎コードの Vue 実装の例

目次1.Vue.js の機能: 2.Observer.js 関数 (データハイジャック): 3. C...

PostgreSQL データベースにおける varchar、char、text の比較に関する簡単な説明

以下のように表示されます。名前説明する文字可変(n)、varchar(n)長さ制限あり、可変長文字(...