CSS
 Computer >> コンピューター >  >> プログラミング >> CSS

CSSでレスポンシブなジグザグ(交互)レイアウトを作成する方法

CSSを使用すれば、テキストと画像を左右交互に配置した「ジグザグ(交互)レイアウト」を簡単に実装できます。ジグザグレイアウトは、コンテンツに視覚的なリズムと変化を与え、閲覧者の視線を自然に誘導できる人気のデザイン手法で、ランディングページやサービス紹介ページなどでよく活用されています。

実装のポイントは大きく分けて2つあります。1つ目はfloatプロパティで要素を左右に振り分けること、2つ目はメディアクエリを使って画面幅に応じてレイアウトを切り替えることです。以下に具体的なコード例を示します。

実装例

<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
   * {
      box-sizing:border-box;
   }
   body {
      margin: 0;
      font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
   }
   div h1{
      font-size: 40px;
      color: blueviolet;
      text-align: center;
   }
   div p{
      font-size: 18px;
   }
   .container {
      padding: 64px;
   }
   .row:after {
      content: "";
      display: table;
      clear: both
   }
   .width66 {
      float: left;
      width: 66.66666%;
      padding: 20px;
      height: 471px;
   }
   .width33 {
      float: left;
      width: 33.33333%;
      padding: 20px;
      height: 471px;
   }
   .large-font {
      font-size: 48px;
   }
   .xlarge-font {
      font-size: 64px
   }
   .button {
      border: none;
      color: white;
      padding: 14px 28px;
      font-size: 16px;
      cursor: pointer;
      background-color: #4CAF50;
   }
   img {
      display: block;
      height: 250px;
      width: 250px;
      max-width: 100%;
   }
   @media screen and (max-width: 1000px) {
      .width66, .width33 {
         width: 100%;
         text-align: center;
      }
      img {
         margin: auto;
      }
   }
</style>
</head>
<body>
<h1 style="text-align:center">Responsive Zig Zag Layout Example</h1>
<div class="width66">
<h1>A Gypsy</h1>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Mollitia tempore expedita sequi consequuntur rerum quasi voluptate deleniti iure quae magni qui, laudantium illo dolorum temporibus, dolor labore, quos eos. Dolores?</p>
</div>
<div class="width33">
<img src="https://i.picsum.photos/id/551/800/800.jpg">
</div>
<div class="width33">
<img src="https://i.picsum.photos/id/211/800/800.jpg" alt="App">
</div>
<div class="width66">
<h1>A cruise ship</h1>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Mollitia tempore expedita sequi consequuntur rerum quasi voluptate deleniti iure quae magni qui, laudantium illo dolorum temporibus, dolor labore, quos eos. Dolores?</p>
</div>
<div class="width66">
<h1>Natures View</h1>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Mollitia tempore expedita sequi consequuntur rerum quasi voluptate deleniti iure quae magni qui, laudantium illo dolorum temporibus, dolor labore, quos eos. Dolores?</p>
</div>
<div class="width33">
<img src="https://i.picsum.photos/id/251/800/800.jpg">
</div>
</body>
</html>

コードのポイント解説

1. floatによる2カラム構成

.width66(約66.7%幅)と.width33(約33.3%幅)の2つのクラスを用意し、どちらにもfloat: left;を指定します。HTML内で要素の並び順(テキスト→画像、画像→テキスト)を入れ替えるだけで、左右交互のジグザグ配置が実現できます。

2. clearfixでレイアウト崩れを防止

.row:aftercontent: ""display: tableclear: bothを指定することで、floatによる回り込みを解除し、レイアウトの崩れを防いでいます。

3. メディアクエリでレスポンシブ対応

画面幅が1000px以下になると、.width66.width33の幅が100%に変更され、テキストは中央揃え、画像はmargin: autoによって中央配置に切り替わります。これにより、スマートフォンなどの狭い画面でも読みやすい縦積み(1カラム)レイアウトへ自動的に変化します。

実行結果

上記のコードを実行すると、以下のような表示結果が得られます。

CSSでレスポンシブなジグザグ(交互)レイアウトを作成する方法

画面幅を狭くすると、次のように各要素が縦に積み重なる1カラムのレイアウトへと自動的に切り替わります。

CSSでレスポンシブなジグザグ(交互)レイアウトを作成する方法

  1. CSSでレスポンシブなカラムカードを作成する方法【コード例付きで解説】

    CSSを使えば、画面サイズに応じてレイアウトが自動的に切り替わるレスポンシブなカラムカードを簡単に作成できます。本記事では、floatとcalc()、そしてメディアクエリを組み合わせた基本的な実装方法を、実際に動作するサンプルコードとともにわかりやすく解説します。 レスポンシブカラムカードの仕組み この手法のポイントは、主に以下の3つです。 calc(25% - 20px):4枚のカードを横並びにするため、各カードの幅を「全体の25%からマージン分を引いた値」として計算しています。 float: left:カードを左に回り込ませることで、横一列に並べています。 @mediaクエリ:画面幅が

  2. CSSで4列のレイアウトグリッドを作成する方法

    CSSで4列のレイアウトグリッドを作成するには、各カラムとなる要素に float: left; を指定し、幅を 25% に設定するのが基本的な手法です。これにより、4つの要素が横一列に均等に並びます。以下に具体的なコード例を示します。 サンプルコード <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width, initial-scale=1" /> <style> body {