# Marp テーマCSS作成ガイド Marpit公式のテーマCSS仕様に基づく、カスタムテーマの作成方法。 公式ドキュメント: https://marpit.marp.app/theme-css ## テーマの基本構造 ### @themeメタデータ(必須) テーマCSSには`@theme`メタデータが必要: ```css /* @theme theme-name */ ``` このメタデータがないと、テーマとして認識されません。 ### 基本的なテーマCSS例 ```css /* @theme my-theme */ section { background-color: #fff; color: #333; font-size: 24px; padding: 60px; } h1 { color: #1e40af; font-size: 48px; } h2 { color: #3b82f6; font-size: 36px; } ``` ## HTML構造 Marpが生成するHTML構造: ```html

スライドタイトル

コンテンツ

``` 各スライドは`
`要素として生成されます。 ## スライドサイズ ### デフォルトサイズ ```css section { width: 1280px; height: 720px; } ``` 16:9比率(1280x720)がデフォルト。 ### カスタムサイズの定義 ```css /* @theme my-theme */ /* @size 4:3 960px 720px */ section { width: 960px; height: 720px; } ``` `@size`メタデータでカスタムサイズを定義できます。 ## ページネーション ページ番号のスタイリング: ```css section::after { content: attr(data-marpit-pagination) ' / ' attr(data-marpit-pagination-total); position: absolute; right: 30px; bottom: 20px; font-size: 16px; color: #666; } ``` **利用可能な属性**: - `data-marpit-pagination` - 現在のページ番号 - `data-marpit-pagination-total` - 総ページ数 ## ヘッダーとフッター ### ヘッダー ```css header { position: absolute; top: 30px; left: 60px; right: 60px; font-size: 18px; color: #666; } ``` ### フッター ```css footer { position: absolute; bottom: 30px; left: 60px; right: 60px; font-size: 18px; color: #666; } ``` ## テーマの拡張と継承 ### @importでの読み込み ```css /* @theme my-extended-theme */ @import 'default'; section { background-color: #f0f0f0; } ``` 既存のテーマを拡張できます。 ### @import-themeで名前付きテーマを継承 ```css /* @theme my-theme */ @import-theme 'default'; h1 { color: red; } ``` `@import-theme`を使用すると、テーマ名で読み込めます。 ## クラスベースのバリエーション ### leadクラス(タイトルスライド) ```css section.lead { display: flex; flex-direction: column; justify-content: center; align-items: center; text-align: center; } section.lead h1 { font-size: 64px; } ``` ### invertクラス(反転配色) ```css section.invert { background-color: #000; color: #fff; } section.invert h1, section.invert h2 { color: #fff; } ``` ## Scoped Style(スライド固有のスタイル) Markdown内で` # このスライドだけ青い背景 ``` ## 背景画像のスタイリング 背景画像は自動的に処理されますが、CSSで調整可能: ```css section[data-marpit-background-image] { background-size: cover; background-position: center; } ``` ## 数式のスタイリング(Marp Core) ```css .katex { font-size: 1.2em; } .katex-display { margin: 1em 0; } ``` ## リストのスタイリング ```css ul, ol { margin: 0.5em 0; padding-left: 1.5em; } li { margin: 0.3em 0; } li::marker { color: #3b82f6; } ``` ## テーブルのスタイリング ```css table { border-collapse: collapse; width: 100%; margin: 1em 0; } th, td { border: 1px solid #ddd; padding: 0.5em 1em; text-align: left; } th { background-color: #f0f0f0; font-weight: bold; } ``` ## コードブロックのスタイリング ```css pre { background-color: #f5f5f5; border-radius: 4px; padding: 1em; overflow-x: auto; } code { font-family: 'Courier New', monospace; font-size: 0.9em; } pre code { background-color: transparent; padding: 0; } ``` ## レスポンシブ対応 ```css @media screen and (max-width: 1280px) { section { font-size: 20px; } h1 { font-size: 40px; } } ``` ## 実践的なテーマ例 ### ミニマルテーマ ```css /* @theme minimal */ section { background-color: #ffffff; color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; font-size: 24px; padding: 80px; } h1, h2, h3 { font-weight: 300; color: #000000; } h1 { font-size: 60px; margin-bottom: 0.5em; } h2 { font-size: 40px; margin-bottom: 0.5em; } ``` ### ダークテーマ ```css /* @theme dark */ section { background-color: #1a1a1a; color: #e0e0e0; font-size: 22px; padding: 60px; } h1, h2, h3 { color: #61dafb; } a { color: #61dafb; } code { background-color: #2d2d2d; color: #61dafb; } ``` ## Markdown内でのスタイル埋め込み ```markdown --- marp: true --- # スライド ``` この方法でテーマを使わずにカスタムスタイルを適用できます。 ## ベストプラクティス 1. **コントラストを確保**: 背景とテキストの色のコントラスト比を4.5:1以上に 2. **適切なフォントサイズ**: 本文22-24px、タイトル40-60px程度 3. **余白を十分に**: パディング60px以上推奨 4. **フォールバックフォント**: Web Fontが読み込めない場合のシステムフォントを指定 5. **印刷対応**: `@media print`で印刷用スタイルも定義 ## 公式リファレンス 詳細は公式ドキュメントを参照: - **Theme CSS**: https://marpit.marp.app/theme-css - **Marpit API**: https://marpit-api.marp.app/ - **公式テーマ実装**: https://github.com/marp-team/marp-core/tree/main/themes