こんにちは。
ゆうや(@yuyaphotograph)です!
この記事では、
- HTML、CSSでカードデザインパーツのコーディングをする方法が知りたい
- Webサイト制作案件でよくある少し複雑なカードパーツのサンプルコードが見たい
- コピペでOKなカードブロックのコードを見たい
という方のお悩みを解決します!
今回、紹介するサンプルコードはぼくがかつて、実際のWebサイト制作案件で使用したものです。
当時はHTML構造やCSSのスタイリングにかなり苦戦した覚えがある、ちょい難しめのデザインです!
完成イメージ
今回紹介するコードで実現できるカードデザインはこちら!
▼▼▼
4カラムのカードです!
上部が画像、下部がタイトル/下線/テキスト、間に正円配置されているのが特徴です。
以下で紹介するコードをお使いいただければ、とりあえず見た目だけは秒で再現できます!
それでは見ていきましょう〜〜
カードデザインのサンプルコード
こちら、CodePenで作った見本です!
レスポンシブにも対応しております笑
この画面だと2分割されて本来のPCサイズで表示されないので、ぜひCodePenのページへ行って確かめてみていただきたいでござる。
スマホ表示の時は4カラムではなく1カラムになります!
See the Pen
PoZmbva by 石森裕也 (@yuyaphotograph)
on CodePen.
HTML
こちら、今回のカードデザインのHTML構造です!
HTML
<div class="Inner">
<div class="List">
<div class="List-Item">
<div class="List-Item-Top">
<div class="List-Item-Top-Img" style="background: url('画像URL') no-repeat; background-position:center; background-size:cover;"></div>
</div>
<div class="List-Item-Bottom one">
<div class="List-Item-Bottom-Number"><div class="List-Item-Bottom-Number-Text">01</div></div>
<p class="List-Item-Bottom-Title">タイトル</p>
<p class="List-Item-Bottom-Description one">
テキスト<br>テキストテキスト<br>テキストテキスト<br>テキストテキスト
</p>
</div>
</div>
<div class="List-Item">
<div class="List-Item-Top">
<div class="List-Item-Top-Img" style="background: url('画像URL') no-repeat; background-position:center; background-size:cover;"></div>
</div>
<div class="List-Item-Bottom two">
<div class="List-Item-Bottom-Number"><div class="List-Item-Bottom-Number-Text">02</div></div>
<p class="List-Item-Bottom-Title">タイトル</p>
<p class="List-Item-Bottom-Description two">
テキスト<br>テキストテキスト<br>テキストテキスト<br>テキストテキスト
</p>
</div>
</div>
<div class="List-Item">
<div class="List-Item-Top">
<div class="List-Item-Top-Img" style="background: url('画像URL') no-repeat; background-position:center; background-size:cover;"></div>
</div>
<div class="List-Item-Bottom three">
<div class="List-Item-Bottom-Number"><div class="List-Item-Bottom-Number-Text">03</div></div>
<p class="List-Item-Bottom-Title">タイトル</p>
<p class="List-Item-Bottom-Description three">
テキスト<br>テキストテキスト<br>テキストテキスト<br>テキストテキスト
</p>
</div>
</div>
<div class="List-Item">
<div class="List-Item-Top">
<div class="List-Item-Top-Img" style="background: url('画像URL') no-repeat; background-position:center; background-size:cover;"></div>
</div>
<div class="List-Item-Bottom four">
<div class="List-Item-Bottom-Number"><div class="List-Item-Bottom-Number-Text">04</div></div>
<p class="List-Item-Bottom-Title">タイトル</p>
<p class="List-Item-Bottom-Description four">
テキスト<br>テキストテキスト<br>テキストテキスト<br>テキストテキスト
</p>
</div>
</div>
</div>
</div>
CSS
こちらスタイリングです!
文字サイズや、上下の余白、画像の縦横比率などはよしなに変更してお使いください。
CSS
.Inner {
padding-top: 40px;
padding-left: 8px;
padding-right: 8px;
padding-bottom: 40px;
background: #5bc8ac;
}
.List {
display: flex;
flex-wrap: nowrap;
}
@media screen and (max-width: 970px) {
.List {
flex-wrap: wrap;
}
}
@media screen and (max-width: 540px) {
.List {
margin-top: 24px;
border: 4px solid #fff;
padding: 6px 6px 12px;
}
}
.List-Item {
margin-left: 0;
width: calc((100% -36px * 3) / 4);
}
.List-Item:nth-child(2) {
margin-left: 12px;
}
@media screen and (max-width: 970px) {
.List-Item:nth-child(2) {
margin-left: 12px;
}
}
@media screen and (max-width: 540px) {
.List-Item:nth-child(2) {
margin-top: 30px;
margin-left: 0;
}
}
.List-Item:nth-child(3) {
margin-left: 12px;
}
@media screen and (max-width: 970px) {
.List-Item:nth-child(3) {
margin-top: 12px;
margin-left: 0;
}
}
@media screen and (max-width: 540px) {
.List-Item:nth-child(3) {
margin-top: 30px;
}
}
.List-Item:nth-child(4) {
margin-left: 12px;
}
@media screen and (max-width: 970px) {
.List-Item:nth-child(4) {
margin-top: 12px;
margin-left: 12px;
}
}
@media screen and (max-width: 540px) {
.List-Item:nth-child(4) {
margin-top: 30px;
margin-left: 0;
}
}
@media screen and (max-width: 970px) {
.List-Item {
width: 48%;
}
}
@media screen and (max-width: 540px) {
.List-Item {
width: 100%;
}
}
.List-Item-Top {
width: 100%;
}
.List-Item-Top-Img {
width: 100%;
padding-top: 62.5%;
}
.List-Item-Bottom {
position: relative;
margin-left: auto;
margin-right: auto;
margin-top: 12px;
padding-top: 42px;
padding-left: 10px;
padding-right: 10px;
height: 240px;
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
flex-wrap: wrap;
background: #fff;
}
@media screen and (max-width: 540px) {
.List-Item-Bottom {
padding-top: 50px;
padding-left: 18px;
padding-right: 18px;
padding-bottom: 20px;
}
}
.List-Item-Bottom-Number {
position: absolute;
top: -8px;
left: 50%;
transform: translate(-50%, -50%);
border-radius: 50%;
width: 64px;
height: 64px;
line-height: 64px;
text-align: center;
background: #000;
color: #fff;
font-size: 24px;
}
@media screen and (max-width: 540px) {
.List-Item-Bottom-Number {
width: 56px;
height: 56px;
line-height: 56px;
font-size: 20px;
}
}
.List-Item-Bottom-Title {
width: 100%;
text-align: center;
font-weight: bold;
font-size: 14px;
}
.List-Item-Bottom-Title::after {
content: '';
margin-left: auto;
margin-right: auto;
display: block;
margin-top: 16px;
width: 64px;
height: 2px;
background: #000;
}
.List-Item-Bottom-Description {
width: 100%;
justify-content: center;
align-items: center;
line-height: 1.5;
text-align: center;
font-size: 12px;
}
@media screen and (max-width: 540px) {
.List-Item-Bottom-Description {
margin-left: auto;
margin-right: auto;
font-size: 14px;
}
}
まとめ
以上、実務でよく使われる少し複雑なカードデザインのコーディングのサンプルコードを紹介しました。
コーポレートサイトの制作案件をする際にきっと役立つスキルとなりますのでぜひ覚えていきましょう〜!
コーディングスキルアップシリーズはこちら!