CSSでレスポンシブ対応のポートフォリオギャラリーグリッドを作成する方法
CSSのfloatとメディアクエリを組み合わせれば、画面幅に応じてカラム数が自動的に変化するレスポンシブなポートフォリオギャラリーを簡単に作成できます。本記事では、実際に動作するサンプルコードとその仕組みをわかりやすく解説します。
レスポンシブギャラリーの実装例
以下は、CSSを使用してレスポンシブなポートフォリオギャラリーグリッドを作成するサンプルコードです。デスクトップでは4列、タブレットでは2列、スマートフォンでは1列で表示されるように設計されています。
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style>
* {
box-sizing: border-box;
}
h1 {
font-size: 50px;
text-align: center;
font-family: monospace, serif, sans-serif;
}
body {
background-color: #f1f1f1;
padding: 20px;
font-family: Arial;
}
main {
max-width: 1000px;
margin: auto;
}
img {
width: 100%;
}
.portfolioContainer {
margin: 8px -16px;
}
.portfolioContainer,
.portfolioContainer > .ImageCol {
padding: 8px;
}
.ImageCol {
float: left;
width: 25%;
}
.portfolioContainer:after {
content: "";
display: table;
clear: both;
}
.portfolioContent {
background-color: white;
padding: 10px;
}
@media screen and (max-width: 900px) {
.ImageCol {
width: 50%;
}
}
@media screen and (max-width: 600px) {
.ImageCol {
width: 100%;
}
}
</style>
</head>
<body>
<main>
<h1>Photography</h1>
<hr />
<div class="portfolioContainer">
<div class="ImageCol">
<div class="portfolioContent">
<img src="https://i.picsum.photos/id/531/400/400.jpg" />
<h3>Picture 1</h3>
<p>Clicked at my house</p>
</div>
</div>
<div class="ImageCol">
<div class="portfolioContent">
<img src="https://i.picsum.photos/id/511/400/400.jpg" />
<h3>Picture 2</h3>
<p>Clicked at Tenesse</p>
</div>
</div>
<div class="ImageCol">
<div class="portfolioContent">
<img src="https://i.picsum.photos/id/521/400/400.jpg" />
<h3>Picture 3</h3>
<p>Clicked on a bridge while travelling</p>
</div>
</div>
<div class="ImageCol">
<div class="portfolioContent">
<img src="https://i.picsum.photos/id/551/400/400.jpg" />
<h3>Picture 4</h3>
<p>Riding my safari jeep in sahara</p>
</div>
</div>
</div>
</main>
</body>
</html>
出力結果
上記のコードを実行すると、次のような出力が得られます。各カードには画像・タイトル・説明文が含まれ、画面幅に合わせてレイアウトが調整されます。

コードのポイント解説
- box-sizing: border-box; … すべての要素に適用することで、paddingやborderを含めたサイズ計算が可能になり、レイアウト崩れを防げます。
- float: left; と width: 25%; … 各画像カラムを横並びに配置し、1行に4枚の写真を表示します。
- :after によるクリアフィックス … floatによる回り込みを解除し、親コンテナの高さを正しく維持します。
- メディアクエリ … 画面幅が900px以下になると2列(width: 50%)、600px以下では1列(width: 100%)に切り替わり、どのデバイスでも見やすいレイアウトを実現します。
このように、floatとメディアクエリを活用するだけで、JavaScriptに頼らず純粋なCSSだけで柔軟なレスポンシブギャラリーを構築できます。より現代的な手法としては、CSS Gridのgrid-template-columns: repeat(auto-fit, minmax(250px, 1fr));を使う方法もあり、さらに少ないコードで同様のレイアウトが実現可能です。
-
CSSで2カラムのレイアウトグリッドを作成する方法
CSSを使用すれば、画面を左右に分割した2カラム(2列)のレイアウトグリッドを簡単に作成できます。ここでは、position: fixedとwidth: 50%を組み合わせた基本的な実装方法を、実際のコード例とともに解説します。 コード例 <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width, initial-scale=1" /> <style> body {
-
CSSでレスポンシブなブログレイアウトを作成する方法【完全なコード例付き】
CSSを使ってレスポンシブなブログレイアウトを作成するには、viewportメタタグの設定と、デバイスの画面幅に応じて柔軟に調整されるレイアウト構造の定義がポイントになります。以下に、ナビゲーションバー・ブログ本文・サイドリンク・フッターを備えた、ブログサイトの完全なコード例を紹介します。 コード例 <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width, initial-scale=1" /> <