このテーマの特徴
このHTMLテンプレートは、ブログ記事のアイキャッチを作成するためのものです。以下に、テンプレートの特徴を詳しく説明します。
1. カスタマイズ可能なデザイン:
- カラー:
--bg-main
,--bg-secondary
,--text-main
,--text-back
,--accent-color
といった変数を用いて、背景色、テキスト色、アクセントカラーを簡単に変更できます。 - フォント:
--font-family
でフォントを指定できます。 - ボーダー: コンテンツ部分は丸みを帯びた角を持つよう設定されており、
--content-rounded
で丸みの度合いを調整できます。 - カテゴリ別カスタマイズ:
body.category-日記
のように、カテゴリ別に背景色を変更するなどのカスタマイズが可能です。
2. レイアウト:
- ヘッダー: ブログのタイトル、アイコン、カテゴリを表示する領域です。
- タイトルは
blog-title
クラスで囲まれ、最大幅が設定されています。 - アイコンは
icon
クラスで囲まれ、円形に切り取られています。 - カテゴリは
category
クラスで囲まれ、複数のカテゴリをスペースで区切って表示できます。
- タイトルは
- メインコンテンツ: 記事のタイトルと背景画像を表示する領域です。
- タイトルは
entry-title
クラスで囲まれ、最大行数を指定して省略表示されます。 - 背景画像は
title-bg
クラスで囲まれ、アクセントカラーで塗りつぶされています。 - タイトルは
title-content
クラスで囲まれ、背景画像の中央に配置されます。
- タイトルは
テンプレートの使用方法:
{BlogLanguage}
をブログの言語に置き換えます。{BlogTitle}
をブログのタイトルに置き換えます。{FirstCategory}
を最初のカテゴリに置き換えます。{Title}
を記事のタイトルに置き換えます。- 必要に応じて、CSS変数を変更してデザインをカスタマイズします。
補足:
- テンプレートにアイコンの画像ファイルは含まれていません。
- 実際にアイキャッチ画像を表示させるためには、
title-bg
クラスにbackground-image
プロパティを設定する必要があります。
このテンプレートは、基本的なアイキャッチのデザインを提供します。さらにカスタマイズすることで、ブログのデザインに合わせたアイキャッチを作成できます。
ソースコード
<!DOCTYPE html> <html lang="{BlogLanguage}"> <head> <meta charset="utf-8"> <style> :root { --bg-main: #FFF; --bg-secondary: #003368; --text-main: #003368; --text-back: #d4e3f0; --accent-color: #FFC107; /* アクセントカラー (変更可能) */ --content-rounded: 12px; --font-family: 'Noto Sans CJK JP', sans-serif; } * { margin: 0; padding: 0; box-sizing: border-box; } body { background-color: var(--bg-secondary); color: var(--text-main); font-family: var(--font-family); min-height: 100vh; display: flex; flex-direction: column; padding: 24px 24px; line-height: 1.4; word-break: break-word; } /* カテゴリによるカスタマイズ */ body.category-日記 { background-color: #fff; } /* コンテンツ部分の共通設定 */ body > div { background-color: var(--bg-main); padding: 24px; } body > div:first-child { border-radius: var(--content-rounded) var(--content-rounded) 0 0; } body > div:last-child { border-radius: 0 0 var(--content-rounded) var(--content-rounded); } /* ヘッダーの設定 */ .header { display: flex; justify-content: center; align-items: center; padding-top: 18px; } .header > :first-child { margin-left: 24px; } .header > :last-child { margin-right: 24px; } .header .base { display: flex; flex-direction: row; align-items: center; } .icon > svg, .icon > img { border-radius: 50%; width: 64px; margin-right: 12px; } .blog-title { max-width: 60%; } .blog-title .title { font-size: 48px; font-weight: bold; color: var(--text-main); overflow: hidden; white-space: nowrap; text-overflow: ellipsis; } .spacer { flex-grow: 1; } .category { display: flex; justify-content: center; gap: 15px; max-width: 25%; } .category span { display: block; padding: 2px 12px; border-radius: 8px; background-color: var(--text-back); overflow: hidden; white-space: nowrap; text-overflow: ellipsis; font-size: 30px; line-height: 1.3; font-weight: bold; color: var(--text-main); } .category span:empty { display:none; } /* メインコンテンツの設定 */ .main-wrapper { flex: 1; width: 100%; display:flex; padding-bottom: 56px; } .main { width: 75%; display: flex; flex-direction: column; justify-content: center; margin: 20px auto 8px; overflow: hidden; text-align: center; } .entry-title { display: -webkit-box; -webkit-line-clamp: 4; line-clamp: 4; -webkit-box-orient: vertical; overflow: hidden; overflow-wrap : break-word; word-break: auto-phrase; color: var(--text-main); font-size: 56px; line-height: 1.3; font-weight: bold; } /* タイトルの背景 */ .title-bg { position: relative; width: 100%; height: 100px; /* 高さ調整可能 */ background-color: var(--accent-color); border-radius: var(--content-rounded); margin-bottom: 20px; overflow: hidden; /* テキストがはみ出さないように */ } .title-bg::before { content: ""; position: absolute; top: 0; left: 0; width: 100%; height: 100%; background-color: var(--bg-main); clip-path: polygon(0 0, 100% 0, 100% 50%, 0% 100%); transform: translateX(-100%); /* 初期状態では隠す */ transition: transform 0.5s ease-in-out; /* アニメーション効果 */ } .title-bg:hover::before { transform: translateX(0); /* ホバー時に表示 */ } /* タイトルの表示位置 */ .title-content { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); color: var(--text-main); z-index: 1; /* 背景より手前に表示 */ text-align: center; } </style> </head> <body class="category-{FirstCategory}"> <div class="header"> <div class="icon"> <svg xmlns="http://www.w3.org/2000/svg" width="90" height="90" viewBox="0 0 90 90"> <path d="M45,90A45,45,0,1,1,90,45,45.05,45.05,0,0,1,45,90ZM45,5.723A39.278,39.278,0,1,0,84.281,45,39.322,39.322,0,0,0,45,5.723Z" fill="#333"></path> <path d="M50.241,22.78a63.54,63.54,0,0,1-4.22-11.3V43.349a2.938,2.938,0,1,1-1.879-.051V11.442A63.6,63.6,0,0,1,39.914,22.78a115.111,115.111,0,0,1-7.739,13.113l2.746,37.579s2.61,2.913,10.151,2.916h.01c7.54,0,10.151-2.916,10.151-2.916l2.746-37.579A115.02,115.02,0,0,1,50.241,22.78Z" fill="#333"></path> </svg> </div> <div class="blog-title"> <div class="title">{BlogTitle}</div> </div> <div class="spacer"></div> <div class="category"> <span>{FirstCategory}</span> </div> </div> <div class="main-wrapper"> <div class="main"> <div class="title-bg"> <div class="title-content"> <h1 class="entry-title">{Title}</h1> </div> </div> </div> </div> </body> </html>