skillup

技術ブログ

デザイン

CSSを書くときのコツ

投稿日:2016年7月14日 更新日:

前回のCSSのルールを踏まえて、今回はCSSを書くときの概念的なルールです。

CSSのデメリット

一般的には下記のようなことがデメリットと言われています。

抽象化が難しい

一般のプログラミングのように変数を使って、フォントサイズを一元管理する、といったことが一般的にはできません。※できる技術もでてきてはいます。

すべてのルールがグローバルスコープ

すべての変数が1つのソースにまとまっているような状態なので、影響度が把握できないのが難点です。

CSSを書くときのコツ

上記のようなデメリットを踏まえた上でのCSSを書くときのコツをまとめていきます。

id名、class名はわかりやすいものにする

これはプログラミングの変数名と一緒ですね。なるべくわかりやすいものにしましょう。

コードの量はなるべく減らすようにする

これはプログラミングと一緒ですかね。同じことを実現する場合、コードの量はすくなければすくないほどよいです。いかに書くよりも、いかに書かないかのほうが重要でしょう。

OOCSSやBEMなどの設計思想を知る

CSSにも設計思想といいますか、保守性をあげるための思想のようなものがあるようですね。簡単に説明させていただきます。

OOCSS

オブジェクト指向に基づいたCSSの設計指針のようです。下記のような点が特徴

構造と見た目のCSSを分ける

これは構造をきめるプロパティ(display,float,width,margin)を定義するCSSと見た目(font-size,color,border)を定義するCSSをわけよということです。

HTML

CSS

コンテンツとコンテナの分離

後にも述べますが、HTMLの構造が変わってもCSSに変更はないほうがメンテナンス性が高いので、なるべくHTML要素にCSSは書かない方向で考えよということです。

BEM

CSSを書くときに以下の3つの単位に分けます。

B=Block

Webを構成する要素ですね。ナビゲーションだったり、フォーム全体などがこれにあたります。

E=Element

Blockを構成する要素です。ナビゲーションのリストなどBlockを構成する1つ1つの要素がこれにあたります。

M=Modify

BlockやElementn状態を表します。

HTML

CSS

こんな設計思想があるとは知りませんでした・・・現実として現在書かれているCSSを完全にこれに準拠させることは難しいと思いますが、考え方のエッセンスだけでも知っておくとレイアウトを組むのが非常に楽になるでしょう。

CSSはなるべくHTML要素にはかかず、基本的にclassに書く

これはHTML要素にCSSを書いてしまうと、打消しのCSSを大量に書かなくてはいけなくなるからですね。

上記のようなHTMLがあり、cssで

CSS

のように記述してしまうと別のh1タグを使った場合に打消しのCSSを書く可能性が高くなります。

そのためにも下記のようにclassのみにCSSを書いたほうがメンテナンス性が高くなります。

下記のようにHTMLエレメントにCSSを書いているとhtmlを変更したいとき(例としてul→divに)にcssごと変更する必要性がでてきますので再利用性もさがります。

同様にidにcssを書かないほうがいいようです。これも再利用性がさがるからです。

知らなかったです・・・いわれてみれば確かにこれをしらないばっかりに打消しのCSSを大量に書いてました・・2年ぐらい前に知りたかったですね。

セレクタを短くする

同じルールセットであればなるべく短いほうが優れたルールです。詳細度を減らせることや、移植性を高めることにつながります。

セレクタの詳細度を上げる

主にあるブロック内で同一のブロックなどがあるにもかかわらず、特定のブロックだけに属性をあてはめたいときは子要素などをつかって限定的にする必要がある。打消しをしないために使える手法(P34~36)

クラスセレクタを活用する

主に移植性の高さにつながるため、idは使わずにクラスを使ったほうが良い。

インラインスタイルはなるべく使わない

保守性がさがるからですね。確かに例外的に使うといったイメージでした。

プロパティはアルファベット順に、なるべく数を減らす方向で、色は3桁表記で

これまた知らずにテキトーに書いてましたね。またmarginなど複数の要素を統一してかける場合はそのほうがベストです。

色も3桁のほうが推奨される書き方のようです。

スタイルの取消をしない

最初のクラスでいろんなプロパティを設定しておきながら、それを使っているクラスでpadding-bottom:0みたいなコードを書くことがあります。CSSはなるべく追加する方向で書くようにしましょう。

絶対値を多用しない

特にline-heightなど。フォントサイズが変わった時にアンバランスになります。あえて単位をつけるline-height:1.5などと書いておきましょう。

JavaScriptによるCSSの変更は最小限にする

元々あるクラスをつける、はずす以外の操作はしないほうが良いです。※JavaScriptの中で独自にCSSのプロパティを作るなどはやめておきましょう。

参考資料

WEB+DB vol93

Web制作者のためのCSS設計の教科書
こんなHTMLとCSSのコーディング規約で書きたい

正味4年ぐらいは触っているんですけど、体系的に勉強したことがなかったんで大変助かりました。CSSも奥が深いですね・・・

-デザイン
-, ,

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

CSSの適用ルールと継承について

前回のエントリーでも書いたようにいまいちわかっていないことが多いので、復習します。 Contents1 セレクタの種類2 セレクタの詳細度3 継承 セレクタの種類 CSSのセレクタには下記のようなもの …

no image

flexショートハンドに関して

実務でflexをちょこちょこ使うようになりました。 やはりfloatなどで組むことと比べると圧倒的に楽ですね・・・ んで、あまり理解してなかったショートハンド要はgrow,basis,shinkに関し …

no image

CSSのレイアウト例 その2 部分的な多カラムレイアウト

ナビのボタンや一覧のリスト項目などfloatを使ったいろいろなバリエーションについて。 例によってサイトが具体的にどうなっているかを知りたい方は「プロとして恥ずかしくない 新・CSSデザインの大原則」 …

no image

固定されたナビ(ヘッドとサイド)

boostrapでサイトを作るときにヘッダーとサイドバーを固定したいときについてメモします。 Contents1 ヘッダーを固定したい場合2 サイドバーを固定したい場合3 参考リンク ヘッダーを固定し …

no image

Bootstrapまとめ 主に段組み関連の知識について

自分はデザインセンスが壊滅的なので、Bootstrapにいろいろと頼っております。 最初は仕事でちょこっと使う機会があり、見よう見まねでやっていましたが、理屈がわからないと応用がきかないこともあるため …

アーカイブ