CSSでレスポンシブなノックアウトテキスト(切り抜き文字)を作成する方法
CSSを使えば、背景画像の上に文字が「切り抜かれた」ように見えるノックアウトテキスト(カットアウトテキスト)を簡単に実装できます。この記事では、mix-blend-modeプロパティを活用したレスポンシブ対応のノックアウトテキストの作成方法を、実際のコード例とともに解説します。
ノックアウトテキストとは?
ノックアウトテキストとは、背景画像の一部が文字の形に透けて見えるデザイン手法のことです。大きなタイポグラフィと写真を組み合わせることで、視覚的にインパクトのある演出が可能になります。CSSのmix-blend-modeを使うことで、JavaScriptや画像編集ソフトに頼らず、HTMLとCSSだけで実現できます。
実装コード例
以下のコードでは、背景画像の中央に配置した黒い帯の中に、白い太字のテキストを表示しています。mix-blend-mode: multiply;を指定することで、テキスト部分が背景画像と合成され、切り抜かれたような効果が生まれます。
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
body {font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;}
.image-container {
background-image: url("https://images.pexels.com/photos/957024/forest-trees-perspective-bright-957024.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=650&w=940");
background-size: cover;
position: relative;
height: 300px;
}
.text {
background-color: rgb(0, 0, 0);
color: rgb(255, 255, 255);
font-size: 10vw;
font-weight: bold;
margin: 0 auto;
padding: 10px;
width: 50%;
text-align: center;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
mix-blend-mode: multiply;
}
</style>
</head>
<body>
<h1 style="text-align: center;">Responsive Cutout Text Example</h1>
<div class="image-container">
<div class="text">FOREST</div>
</div>
</body>
</html>コードのポイント解説
1. 背景画像の設定
.image-containerクラスにbackground-imageで画像を指定し、background-size: cover;によりコンテナ全体に画像がフィットするようにしています。また、内側のテキストを絶対配置するため、position: relative;を設定しています。
2. テキストの中央配置
position: absolute;とtop: 50%; left: 50%; transform: translate(-50%, -50%);を組み合わせることで、テキストブロックをコンテナのど真ん中に配置できます。この手法は要素のサイズに関わらず正確に中央揃えできるため、よく使われる定番テクニックです。
3. レスポンシブ対応のフォントサイズ
フォントサイズに10vw(ビューポート幅の10%)を指定することで、画面幅に応じて文字の大きさが自動的に変化します。これにより、スマートフォンからデスクトップまで、どのデバイスでもバランスの取れた表示になります。
4. 切り抜き効果の鍵となるmix-blend-mode
mix-blend-mode: multiply;は、要素とその背後にある背景を乗算ブレンドで合成するプロパティです。白いテキスト(rgb(255, 255, 255))は乗算では背景色がそのまま透過して見えるため、文字の形に背景画像が「切り抜かれて」表示されます。黒い帯の部分は背景が暗くなり、コントラストが生まれます。
出力結果
上記のコードを実行すると、森林の背景画像の中央に黒い帯が配置され、その中に「FOREST」という文字が背景と合成されたノックアウトテキストとして表示されます。ブラウザのウィンドウ幅を変更すると、文字サイズも連動して変化することが確認できます。
まとめ
CSSのmix-blend-modeとvw単位を組み合わせるだけで、特別なライブラリや複雑な処理なしに、レスポンシブ対応のノックアウトテキストを実装できます。ヒーローセクションやバナーなど、視覚的なインパクトを持たせたい場面でぜひ活用してみてください。
-
CSSでレスポンシブなブログレイアウトを作成する方法【完全なコード例付き】
CSSを使ってレスポンシブなブログレイアウトを作成するには、viewportメタタグの設定と、デバイスの画面幅に応じて柔軟に調整されるレイアウト構造の定義がポイントになります。以下に、ナビゲーションバー・ブログ本文・サイドリンク・フッターを備えた、ブログサイトの完全なコード例を紹介します。 コード例 <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width, initial-scale=1" /> <
-
CSSでレスポンシブなカラムカードを作成する方法【コード例付きで解説】
CSSを使えば、画面サイズに応じてレイアウトが自動的に切り替わるレスポンシブなカラムカードを簡単に作成できます。本記事では、floatとcalc()、そしてメディアクエリを組み合わせた基本的な実装方法を、実際に動作するサンプルコードとともにわかりやすく解説します。 レスポンシブカラムカードの仕組み この手法のポイントは、主に以下の3つです。 calc(25% - 20px):4枚のカードを横並びにするため、各カードの幅を「全体の25%からマージン分を引いた値」として計算しています。 float: left:カードを左に回り込ませることで、横一列に並べています。 @mediaクエリ:画面幅が