mypglog

プログラミングやデザインの事をメモ等かねながら

いい感じのclass名とID名の付け方

第三者が書いたHTMLやCSSをいじる際に、こんな感じで組み上がっているものをたまに見かけます。

<h2>お問い合わせ</h2>
<div id="mainCol">
  <div class="contact_left">
    メインカラムの~問い合わせページの左側パーツ
  </div>

  <div class="contact_right">
    メインカラムの~問い合わせページの右側パーツ
  </div>
</div>

<div id="menuCol">
  メニューカラム
</div>

パッと見悪くなさそうですが、この手のルールで10P単位のページ数が書かれているとちょっと困ります。
というのも、クラスはソースコード内で複数使えるため汎用性があるものに利用されます。よって上記のソースコードの意図は2パターンあります。

実はclassではなくidと間違えていてこの問い合わせページでしか使わない

1つ目がこのタイプ。他ページ等では一切使わないにも関わらずclassを使ってしまう。後述するパターンよりはマシと言えます。

他ページでも使うからclassにしている

このパターンが一番困ります。classなので他ページでも使っているにも関わらずclass名が「contact_left」となっているため、紛らわしい。素直に「30_left」(この場合width30%を意味している)とかにして頂くと素直に使える。また、多分common.cssに集約されているんだろうなと想像もつく。

というわけで、クラスの名前付けは汎用性を意識した名前に。IDは限定的なページを表す名前に。
当たり前のように言われてますが、きっちり守っているウェブサイトが物凄く少ないという驚き。

PCレイアウトでは改行させてSPでは改行をさせたくない時

レスポンシブのコーディングでありがちな事

レスポンシブ前提のコーディングなんかをしていると、PCレイアウトでは改行させてSPでは改行をさせたくない時なんかがあります。つまり以下のようにデザインをしたい時。

f:id:w_minowa:20150303180723j:plain

SPでは1行なのでbrとか入れたくないのですが、PCでは改行しないといけない板挟みプレイ。そんな時は以下のようにCSSでインラインとブロック要素を作る。

HTM

<p>ご希望の会場<span class="block">を選択して下さい</span><span class="inline green">必須</span></p>

CSS

.block{
  display: block;
}

.inline{
  display:inline;
  padding:3px 8px;
  border-radius: 5px;
  -webkit-border-radius: 5px; 
  -moz-border-radius: 5px;
}

.green{
  background-color:#b3d465;
}

こんな感じにするといい感じにいける。改行するだけなら最後のinlineもblockでいいのですが、このままだと「必須」の角丸グリーンの四角装飾が横に長くなってしまうため、inlineにするのがポイント。