前回の
CSSをリセットすることを忘れないの続きです。
ブラウザのデフォルトCSSをリセットしても、なかなかユーザーCSSの編集の効率が上がらないのが今回の新バージョン(HTML5)です。
アメブロのデフォルトCSSによってガッチリと組まれているのが理由です。
なので、
ユーザーCSSのクウォリティや編集の効率をアップさせたいのであれば、前回の投稿にも書きましたようにアメブロのデフォルトCSSのリセットは必須となってきます。
アメブロのデフォルトでは事細かに各要素がスタイルされています。
CSS編集用デザイン”と謳っているのであれば、もっとシンプルにユーザーが編集しやすい状態で提供していただきたいのが本音なとことです*´ω`*
アメブロのボックスモデルを理解する
"アメブロのデフォルト"といっても一つではありません。
幾つかのCSSファイルによって構成されていることがソースをご覧いただければお分かりになるかと思います。
しかし、暇ではないのでそれらを一々確認してられませんよね(笑)
なので、ブラウザ頼りになりますがHTMLやCSSをモニタするのが一番手っ取り早くアメブロのボックスモデルを理解できる方法かと思います。
Firefoxですと有名なアドオン
Firebugもありますし、Chromeですと右クリック(WinだとF12でもOK)の「要素を検証」で事足りると思います。
自分に合ったツールを使うことでデフォルトをリセットするスピードも上がります。
リセットで厄介なのはアンカー「.columnハック」を使う
私がカスタマイズした際に「これは面倒だ!」と思ったのがアンカー部分です。
実際にカスタマイズされたら分かると思いますが、
まさかのa {
text-decoration:none !important;
color:black !imortant;
}
と
!importantを使って強制的に上書きしたくなるほど厄介です。
リンクに関してはそれ程デフォルトに邪魔されるということです。
しかし、こんなところで!importantルールなんて使いたくありませんので何とかしなければなりません。
方法としては幾つかあります。
まず、ポイントとして抑えていただきたいのは、デフォルトでは
:hover以外の
:visitedや
:focusの疑似クラスも多用されていること。
そして、
:linkは使われていなかったのでリセットの必要はないということ。
ですから、「aと:hoverはリセットしてるからOK!」とはならないということですね。
※「:linkだけ記述しないのは気持ち悪い…」という方は好きに書いてくださいね*´ω`*
方法として挙げられるのは
- 要素毎に適宜上書き
- まさかの!importantハック
- 要素をまとめて記述して上書き
- .columnハック
の4つ。
「要素毎に適宜上書き」はCSSファイルの至るところにアンカーに関するスタイルをしなければならないので私は嫌で使っていませんが、適材適所上書きするので後から管理することを考えればメリットもありそうです。
デフォルトをまとめてリセットするのではなく、個々にしていく一般的な方法です。
「まさかの!importantハック」はこの項の冒頭でも説明してある通りで、!importantを使ってしまうと後にスタイルするアンカーには全て!importantを付加しなければなりませんので却下です。
一般的にCSSファイル内に!importantが多用されるのは”よくないCSS”です。
「要素をまとめて記述して上書き」はブラウザのデフォルトをリセットする要領です。
実際に書いてみました。
a,
a:visited,
.pagingArea a,
.pagingArea a:visited,
.columnB .skinArticleTitle,
.articleText a,
.skinWeakColor a,
.skinSubA a,
#footer_ad a,
#resPoint li a,
.commentOpenArea a,
.commentOpenArea a:visited,
.commentFooter a,
.commentFooter a:visited,
.trackbackHeader a,
.trackbackHeader a:visited,
.listPageArea.listContentsArea .contentsList li a,
.listPageArea.tabList .listContentsArea a {
text-decoration:none;
color:#503A45;
}
a:hover,
a:foncus,
.pagingArea a:hover,
.columnB .skinTitle:hover,
.columnB .skinArticleTitle:hover,
.articleText a:hover,
.skinWeakColor a:hover,
.skinSubA a:hover,
#footer_ad a:hover,
#resPointArea #resPoint li a:hover,
.commentFooter a:hover,
.trackbackHeader a:hover,
.listPageArea.listContentsArea .contentsList li a:hover,
.listPageArea.tabList .listContentsArea a:hover {
text-decoration:none;
color:#30363A;
}
まとまっていて綺麗なのですが結構長いでしょ?… orz
また後からの管理も厄介そうですし、正直リンクスタイルでこんなに長々書きたくありません。
しかし、この方法でやるとなれば上記のようにダラダラ書かないとアメブロのリンクスタイルがリセットされないのは事実です。
ということで「.columnハック」になります。
「.columnハック」って何?
私が勝手に命名したのでググっても出てきません(笑)
HTMLの3行目に
<html lang="ja" class="columnB" xmlns:og="http://ogp.me/ns#" xmlns:mixi="http://mixi-platform.com/ns#">
とありますよね。
そのclassを用いているだけで「!importantを使うよりはマシでしょ?」ってぐらいの体ですので…。
果たしてこれが”スマート”なのかどうかは好みだと思います(笑)
ちなみに”column”のあとに続く
アルファベットはお使いのカラムによって異なります。
実際に書くのはこれだけ。
.columnB a,
.columnB a:visited {
text-decoration:none;
color:#503A45;
}
.columnB a:hover,
.columnB a:focus {
text-decoration:none;
color:#30363A;
}
これで全てのページのリンクが統一されます。
異なるリンクスタイルをもつ要素につきましては別途上書きすればOKです。
.columnB .post a {color:#DDD;}
.columnB .post a:hover {color:#30363A;}
リンクに関しては以上です。
※広告部分に関するリンクスタイルは別途エントリさせていただきます。
list-style-typeに関するリセット
アメブロのデフォルトではリストのはみ出し(overflow)値はhiddenとなっておりますので、list-style-typeの値でdisc/square/decimalなどをスタイルしたい場合には予めリセットしておいてあげると便利です。
.skinSubArea ul,
.skinSubArea li,
.listPageArea.listContentsArea ul,
.listPageArea.listContentsArea li {overflow:visible;}
margin/padding/border/backgroundのリセット
これもリンクスタイル同様”好み”です。要素毎に随時リセットしてもよいですし、まとめてリセットしてもよいです。
私は自分以外のアメブロを制作することもありますので”作業効率”を考えると後者で、marginに関するリセットは以下のようなものです。
.blogSearchForm,
.skinSubList li,
.subModule,
.skinArticleHeader,
.skinArticleFooter,
.skinArticleBody2,
.articleText img,
.articleExLinkArea,
.articleExLinkArea a,
.articleLinkArea,
.commentArea,
.commentTitleArea,
.commentList li,
.trackbackArea,
.trackbackTitleArea,
.trackbackList li {margin:0;}
毎度ボックスモデルを確認するのは面倒ですし、ある程度このような雛型を作っておくことは制作サイドには必須かと。
※padding / border / backgroundにつきましては省略させていただきます。興味のある方は私のCSSを覘いてみてください*´ω`*
非表示にする要素もまとめてリセット
使わないコンテンツもまとめて最初にリセットしておきましょう。※広告は絶対に消さないこと!
#aswift_0_anchor,
.articleDetailArea .articleTheme,
.contentNew,
.articleExLinkArea .nowBtn,
.articleExLinkArea .mixiBtn,
.skinSubA .rss,
.footerNav {display:none !important;}
一行目の#aswift_0_anchorに関しては
「CSSで『#aswift_0_anchor』をリセットする」をご覧ください。
その他の要素は私好みのものなので適宜変更してください。
bodyに関するスタイルを理解する
まずはbodyの横幅(最小値)に関してです。
デフォルトでは
body {min-width:1100px;}
と定義されており、1100px以下は横スクロールが表示されます。
コンテンツの横幅がそれ以上であれば問題ですし、それ以下でも正直問題です。
これは自分のコンテンツ幅に合わせて適宜変更することをお勧めします。
例)コンテンツ幅が800pxなら
body {min-width:800px;}
その他には、アメブロの最上部には固定で白いバーが表示されていますよね。
デフォルトでは
body {padding-top:24px !important;}
と定義されております。
そのためbodyよりも上にあるレイヤー(body含む)に背景色・画像をスタイルした際、白いバーの裏側に回り込んでしまいますので、画像の開始位置(background-position)で適宜調整する必要があります。
.skinBody {background:url(images/body.jpg) no-repeat 0 24px;}
※単色・単調なものでしたら指定する必要はないです。
以上がアメブロのデフォルトCSSに関してのリセットです。
今回のバージョンは”上手くリセットできるか”が素敵なスキンを作る一つの鍵になってくると思いますよ*´ω`*
デザインの見た目だけだけはなくCSSファイルそのもののクウォリティを素敵にしてみてください。
そんなこと言ってる自分のCSSは酷いですが(笑)
補足:ユーザーCSSが反映されないと思ったら…
途中で書きました「.columnハック」で用いられているclassは、アメブロのデフォルトCSS内でも度々登場してきます。
そのためユーザーCSSに記述した内容が反映されないこともしばしば。
そんなときは同様に.columnを付けて定義するかプロパティ値に!importantルールを用い優先順位を上げる他ありません。
.columnB .skinMainArea {}
.columnB .skinSubA {}
.columnB .skinTitle {}