[CSS] 写真付きのバナーリンクをCSSでサッと作りたい
キャンペーンやイベントのバナーリンクが急遽必要になったり、写真や文章のイメージを検討するためにCSSで仮組みしたい場合があります。
画像を暗くしたり、文字に影をつけたりといった画像編集ソフトで行うような画像処理もCSSで行うことができます。
サンプルコード
html
<a href="" class="banner"><p><span>世界中のネコが大集合!</span><span>世界のネコ展2020</span></p></a>
CSS
.banner {
display: block;
position: relative;
padding-top: 200px;
margin: 0px auto;
width: 800px;
border-radius: 20px;
background-image: url(image.jpg);
background-repeat: no-repeat;
background-position: center;
background-size: cover;
overflow: hidden;
}
.banner:hover {
color: #fff;
text-decoration: none;
}
.banner::before {
position: absolute;
top: 0px;
left: 0px;
right: 0px;
bottom: 0px;
background-color: rgba(0, 0, 0, 0.4);
content: "";
}
.banner:hover::before {
background-color: rgba(0, 0, 0, 0);
}
.banner > p {
position: absolute;
top: 50%;
left: 0px;
transform: translateY(-50%);
padding: 0px;
margin: 0px;
width: 100%;
color: #fff;
font-weight: bold;
text-align: center;
text-shadow: -2px -2px 6px #333, 2px -2px 6px #333, 2px 2px 6px #333, -2px 2px 6px #333;
white-space: nowrap;
}
.banner > p > span {
display: block;
}
.banner > p > span:nth-of-type(1) {
font-size: 24px;
}
.banner > p > span:nth-of-type(2) {
font-size: 48px;
}
サンプルコードの解説
文字の色は変えずに写真だけ暗くする
.banner::before {
position: absolute;
top: 0px;
left: 0px;
right: 0px;
bottom: 0px;
background-color: rgba(0, 0, 0, 0.4);
content: "";
}
.banner:hover::before {
background-color: rgba(0, 0, 0, 0);
}
aタグのbefore疑似要素に「background-color: rgba(0, 0, 0, 0.4);」で半透明の黒い背景色を設定します。
背景色だけを半透明にすることで、aタグ内の文字列は透過されずに表示されます。
マウスオーバー時には背景色を完全に透過させています。
文字に影をつけて縁取る
.banner > p {
〜
text-shadow: -2px -2px 6px #333, 2px -2px 6px #333, 2px 2px 6px #333, -2px 2px 6px #333;
〜
}
「text-shadow」プロパティを使って、文字の周囲に黒い影をつけます。
文字を縁取ることで、マウスオーバーして画像の色が明るくなったときにも文字が視認しやすくなります。
ご質問など受け付けています
記事の中でわかりにくかったところ、もっと知りたかったこと、間違っていることなど、何でもお気軽にご連絡ください。
ご連絡は下記フォームを利用いただくか、ツイッターアカウント@flat8migi宛てでもOKです。