グリッドレイアウトで、レスポンシブ対応のアーカイブを作成

CSSグリッドレイアウトでは、一部のグリッド大きくすることができます。今回は、グリッドレイアウトで、レスポンシブ対応のアーカイブを作成する方法を紹介します。

今回は、サムネイルアーカイブです。

14個サムネイルを表示しています。画像が正方形になっています。PCでは、最初最後大きく表示されます。SPでは全て同じ大きさです。

コード

PHPに下記コードを入力します。

<div id="grid-column">
	<ul class="gridcolumn">
		<?php
			$custom_posts = get_posts(array(
				'post_type' => 'all_demos',
				'posts_per_page' => 14,
			));
			global $post;
		?>
		<?php if($custom_posts): ?>
			<?php foreach($custom_posts as $post): setup_postdata($post); ?>
				<li class="grid-item">
					<div class="about-news-icon zoomIn">
						<a href="<?php echo esc_url(get_permalink()); ?>">
							<?php if(has_post_thumbnail()): ?>
                    			<?php the_post_thumbnail('medium_large'); ?>
                			<?php else: ?>
                				<img src="<?php echo esc_url(get_theme_file_uri('/assets/images/damy001.jpg')); ?>" alt="damy" >
            				<?php endif; ?>
						</a>
					</div>
				</li>
			<?php endforeach; ?>
		<?php endif; wp_reset_postdata(); ?>
	</ul>
</div>

CSSでスタイルを整えます。

#grid-column {
	max-width: 1500px;
    margin: 0 auto;
    padding: 0 4%;
}
#grid-column .about-news-icon {
	width: 100%;
	height: 100%;
	aspect-ratio: 1/1;
	overflow: hidden;
	float: left;
	object-position: 50% 50%;
	margin-bottom: 0;
	padding-bottom: 0;
	border-radius: 5px;
	will-change: transform;
}
#grid-column .news{
	text-align: left;
	margin-bottom: 0;
	padding-bottom: 0;
	width: 100%;
	display: inline-block;
}
.gridcolumn {
	display: grid;
	gap: 1em;
	grid-template-columns: repeat(4, 1fr);
	padding-top: 6%;
	padding-bottom: 6%;
}
.gridcolumn li:first-child {   
	grid-column: 1 / 3;
	grid-row: 1 / 3;
}
.gridcolumn li:nth-child(14) { 
	grid-column: 3 / 5;
	grid-row: 4 / 6;
}

@media (max-width: 740px) {	
	.gridcolumn {
    	grid-template-columns: repeat(2, 1fr);
	}
	.gridcolumn li:first-child {
		grid-column: auto;
        grid-row: auto;
	}
	.gridcolumn li:nth-child(14) {
		grid-column: auto;
        grid-row: auto;
	}
}

以上で今回の説明は終了です。デザインに合わせてCSSでレイアウトが変更できるので便利ですね。アーカイブページや、トップページで使えます。画像ギャラリーとしても使えます。