全体配置とbodyクラス
はじめに
ここからはadiary標準の satsuki2 テンプレートでのテーマ作成について述べます。*1
adiaryでは出力されるすべての要素がHTML5に準拠しています。
全体の構成

adiaryは大枠で4つの要素からなります。
- ヘッダー。<header id="header">>タグで囲まれた要素です。
- メイン。<div class="main">で囲まれた要素です。
- サイドバー。<aside id="sidebar">で囲まれた要素です。次の2つの子要素を持ちます。
- 両サイドバー要素a。<div id="side-a">
- 両サイドバー要素b。<div id="side-b">
- フッター。<footer id="footer">
HTMLでの記述
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> </head> <body id="body"> <div id="adiary-body"> <!--ヘッダ部================================================================--> <header id="header"> </header> <!--Start of body ==========================================================--> <div id="hatena-body"><div> <!--内容====================================================================--> <div class="main" id="main-first"> </div> <!-- End of main --> <!--サイドバー===============================================================--> <aside id="sidebar"> <div id="side-a"> </div> <!-- End of side-a --> <div id="side-b"> </div> <!-- End of side-b --> </aside> <!-- End of sidebar --> </div></div> <!-- End of #hatena-body --> <!--End of body ============================================================--> <footer id="footer"><!--フッタ--> <div class="adiary"><a href="http://adiary.org/">adiary</a> Version 3.00</div> </footer> </div> <!-- End of #adiary-body --> </body> </html>
メイン部の配置は id=main-first ではなく class="main" を使用してください。idはJavaScriptの為だけに設定されています。*2
#hatena-bodyに空<div>が付いているのは、こうしないとどうしても実現できないデザインがあるためです。(例:satsuki2/nature-sky)
bodyに設定されるクラス
<body>要素には次のようなクラスが設定されます。
- blog-owner : 表示している人はブログ管理者である。
- blog-editor : 表示している人はブログの編集権限を持っている。
- system : 現在システムモード(管理画面)である。
- sp : スマホモード時に出力。
- amp : AMPモード時に出力。AMP時は sp も常に出力されます。
【Ver3.50廃止】ブラウザクラス
CSSのための、ブラウザhack用のクラスが body に出力されます。JavaScriptで動的に設定されます。
| クラス | 対応環境 | UA判別 |
|---|---|---|
| GC | Chrome および WebKit | WebKit/ |
| Fx | Firefox および Gecko | Gecko/ |
| Edge | Edge | Edge/ |
| IE | IE | MSIE |
| IEx | IE Version X (ex:IE9, IE10, IE11) | |
記述例
固定ピクセル、片サイドバー
/* 全体配置 */
#adiary-body {
width: 900px;
margin: 0 auto;
}
/* 記事部 */
.main {
float: right;
width: 780px;
}
/* サイドバー */
#sidebar {
float: left;
width: 216px;
}
/* float解除 */
#hatena-body:after {
content: "";
clear: both;
display: block;
}
可変ピクセル、片サイドバー
/* 全体配置 */
#adiary-body {
min-width: 600px;
max-width: 920px;
margin: 0 auto;
}
/* 記事部 */
.main {
float: right;
width: calc(100% - 168px);
}
/* サイドバー */
#sidebar {
float: left;
width: 160px;
}
/* float解除 */
#hatena-body:after {
content: "";
clear: both;
display: block;
}
/* for IE8 (not support calc) */
.IE8 #adiary-body {
width: 800px;
}
.IE8 .main {
width: 612px;
}
可変ピクセル、両サイドバー
両サイドバーを実現するには、<div class="main"> と <aside id="sidebar"> の位置を入れ替えないとなかなか難しいものがあります*3。CSSでの設定によりHTML構造を入れ替える方法があり、それを使った両サイドバーの実現方法を示します。
/* adiary.js でサイドバーのHTML位置を変更する */
#sidebar-move-to-before-main {
min-width: 1px;
}
/* 全体配置 */
#adiary-body {
min-width: 600px;
max-width: 920px;
margin: 0 auto;
}
/* 記事部 */
.main {
float: left;
width: calc(100% - 340px);
padding-left: 8px;
padding-right: 4px;
}
/* サイドバー */
#sidebar {
float: none;
width: auto;
}
#side-a {
float: left;
width: 160px;
}
#side-b {
float: right;
width: 160px;
}
/* float解除 */
#hatena-body:after {
content: "";
clear: both;
display: block;
}
/* for IE8 (not support calc) */
.IE8 #adiary-body {
width: 900px;
}
.IE8 .main {
width: 560px;
}