このテーマの特徴
このHTMLテンプレートは、ブログ記事のアイキャッチ(記事の冒頭に表示される視覚的な要素)を作成するためのものです。以下に、その特徴をわかりやすく説明します。
1. レスポンシブデザイン
min-height: 100vh
:画面の高さを100%にすることで、画面サイズに関わらずアイキャッチが画面いっぱいに表示されます。display: flex; flex-direction: column;
:フレックスボックスを使用して、要素を縦方向に配置し、レイアウトを調整できるようにしています。padding: 24px 24px;
:コンテンツの周囲に余白を設け、見た目を整えています。
2. スタイリッシュな外観
- 背景色とグラデーション:
--bg-main
,--bg-secondary
,--gradient-start
,--gradient-end
といった変数を使用して、背景色とグラデーションを設定しています。これにより、テーマに合わせた柔軟なカスタマイズが可能です。 - 丸みのある角:
border-radius
プロパティを使用し、コンテンツに丸みを持たせて、柔らかな印象を与えています。 - 影:
box-shadow
プロパティで影をつけ、奥行きを感じられるようにしています。
3. 見出しとカテゴリーの表示
- ブログタイトル:
blog-title
クラスで、ブログのタイトルを表示しています。 - カテゴリー:
category
クラスで、記事のカテゴリーを表示しています。span
要素を使って、カテゴリーをわかりやすく表示しています。 - 記事タイトル:
entry-title
クラスで、記事のタイトルを表示しています。-webkit-line-clamp
プロパティを使用し、タイトルが4行を超えた場合は省略表示されます。
4. カスタマイズ可能な要素
- 変数: CSSの変数を使用することで、色やフォント、サイズなどを簡単に変更できます。
- データ:
{BlogTitle}
,{FirstCategory}
,{Title}
といったプレースホルダーを使用することで、ブログタイトル、カテゴリー、記事タイトルを動的に表示できます。
5. 構造とレイアウト
header
クラスで、ブログタイトルとカテゴリーを表示するヘッダー部分を作成しています。main-wrapper
クラスで、記事タイトルなどのコンテンツを表示するメイン部分を作成しています。main
クラスで、記事タイトルを表示しています。
6. アクセシビリティ
font-family
で日本語フォントを使用し、日本語表示に対応しています。word-break
で単語の途中で改行できるようにしています。
全体的な評価:
このHTMLテンプレートは、ブログ記事のアイキャッチを効果的に作成するための機能を備えており、カスタマイズしやすい構造になっています。レスポンシブデザイン、スタイリッシュな外観、アクセシビリティなど、多くの利点を備えています。
ソースコード
<!DOCTYPE html> <html lang="{BlogLanguage}"> <head> <meta charset="utf-8"> <style> :root { --bg-main: #FFF; --bg-secondary: #003368; --text-main: #003368; --text-back: #d4e3f0; --content-rounded: 12px; --gradient-start: #90CAF9; --gradient-end: #E3F2FD; --gradient-angle: 45deg; } * { margin: 0; padding: 0; } body { background-color: var(--bg-secondary); color: var(--text-main); font-weight: normal; font-family: 'Noto Sans CJK JP'; box-sizing: border-box; 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); } body > div:first-child { border-radius: var(--content-rounded) var(--content-rounded) 0 0; background: linear-gradient( var(--gradient-angle), var(--gradient-start), var(--gradient-end) ); box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); } body > div:last-child { border-radius: 0 0 var(--content-rounded) var(--content-rounded); } .header { width: 100%; 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; box-sizing: border-box; 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; } </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="entry-title">{Title}</div> </div> </div> </body> </html>