Quantcast
Channel: CSSタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 8920

【命名規則】BEMを使った書き方についてまとめてみた【CSS】

$
0
0

実務でCSSをガッツリ書くことになったので、復習の意を込めて自分用のチートシートを作成しました。
今回は現場でよく使われているBEMの書き方について調べたことのまとめです。

BEMとは

BEMはBlock Element Modifierの略で、CSSを設計・命名していく手法です。

  • Block: 大枠となる独立した要素
  • Element: Block中の要素
  • Modifier: BlockやElementのスタイル

保守性の高さから1番多く使われている命名規則だと思います。

BEMを使う目的

BEMは名前の衝突を避けるために考案されたCSS設計です。

保守性の高さを解決するための手法は他にもあり、HTMLはシンプルがな書き方が求められますが、まだまだ決定打に欠けています。
BEMは見た目が汚いですが、シンプルを求めて面倒な目にあうよりは、少々汚くても扱いやすいBEMが多くの現場で採用されています。

命名規則の考え方

class名の命名規則にはいくつか種類がありますが、どの命名規則を採用するにしても、前提として考えることは以下です。

  • 明確に決まっている
  • わかりやすい
  • 保守性が高い(管理しやすい)

BEM以外のOOCSSやSMACSS等の命名規則を使うとしても、上記はそもそも命名規則を考える目的になります。
手段を好き嫌いで選ばずに、その時々で最適だと思われる命名規則を採用しましょう。

BEMの命名の仕方

class名であれば以下のように命名します。

class="block__element–-modifier"

最初にBEMは以下の3つの略だと説明しました。

  • Block: 大枠となる独立した要素
  • Element: Block中の要素
  • Modifier: BlockやElementのスタイル

これらの要素を以下のルールに基づいて命名します。

  • blockとelementはアンダースコア2つで区切る
  • Elementとmodifierはハイフン2つで区切る
  • ハイフンとアンダースコアは2つ
  • block, element, modifierが複数単語になる場合、単語と単語の間はハイフン1つで区切る
  • ハイフン1つの場合はElementとModifierの区切りではなく、ただの単語の区切りとして使用

サンプルコード

以下ははBEM記法でclassを付けたサンプルです。

<section class="about">
  <div class="about__item">
    <h2 class="about__item-ttl">ここにタイトルが入る</h2>
    <p class="about__item-txt">テキストが入る。テキストが入る。</p>
    <a href="#" class="about__item-link about__item-link--red">MORE</a>
  </div>
</section>

クラス命名でよく使われる単語

以下はクラス作成時に頻出するクラス名です。
ここにないような単語はcodicなどで調べて組み合わせを考えてみましょう。

Block

単語意味
section区分・区画
content文書の内容
article記事
post投稿
top頂上・上部
homeトップページ
sidebar補足記事
wrapper内包する
wrapwrapperの略語
containerwrapperの類語容器・入れ物wrapperはレイアウト的に、containerは意味的に使うことが多い
group集まり
area特定の場所・範囲
emphasis強調・重視
catch興味を惹く・関心をつかむ
note注釈
description概要
descdescriptionの略語
introduction前置き・導入
introintroductionの略語
announceお知らせ
information情報
infoinformationの略語
actionCall To Action重要度の高い
moreもっと多くの
feature主要なもの
detail詳細・細部
summary概要・要約

Element

BEMのElementで使われるような名詞や形容詞など。

単語意味
inner内側の
outer外側の
body主要部分
head上部
foot下部
heading見出し・表題
title表題・題名
lead見出しの補足・記事の要約
list一覧・表
menu一覧・表
item(表やデータなどの)項目
unit1つの単位・1セット
column縦列
colcolumnの略語
text本文
caption画像・図表の補足文
thumbnail縮小した画像
thumbthumbnailの略語
avatar人の顔を示す画像
feature特徴を補足する画像
tel電話番号
address住所
date日付
time日時
category分類・部類
catcategoryの略語
tag識別子
next次の
previous前の
prevpreviousの略語
mask覆い隠す
overlayかぶせる・上書きする
delimiterアイテムの範囲や境界線を示すインターフェイス
separatordelimiterの類語で混ぜないように分離する目的で使います
dividerdelimiterの類語でグルーピングするように分割する目的で使います

Modifier

単語意味
success成功
alert注意・警戒
attention配慮・気配り
error間違い・失敗
caution用心・警告
warning警告・予告
danger危険・驚異
tinyとても小さい
xstinyの類語でExtra small(smallよりさらに小さい)こと
small小さい
medium中間
large大きい
hugeとても大きい
xlhugeの類語でExtra large(特大・超大型)のこと
reverse反転する
push前方に押す
pull自分の方に引く
offset相殺する・埋めあわせる
left左側の
center真ん中
right右側の
top上部
middle真ん中
bottom下部
round角丸
circle円形

分類

単語意味
about〜について
work仕事・任務
product製品
serviceサービス
newsお知らせ・近況
event行事・出来事
history歴史・沿革
archive保存・保管・記録
concept構想・概念・考え
recommendおすすめ・推奨
table of contents目次
tocTable of contentsの略語
index索引・指標
contact問い合わせ・連絡
inquiry問い合わせ・質問・調査
access交通手段
shop店舗
related関連のある
privacy個人情報の利用・保護の方針
faqFrequently asked questionsquestions(よくある質問)の略
qandaQuestion and answer・Q&A・質問と回答
inputフォームの入力画面
confirmフォームの確認画面
finishフォームの完了画面
search検索する
result検索結果画面
cart購入するアイテムを一時的に保存する画面
checkout保存していたアイテムを購入する画面

形容詞

名詞の性質や状態を修飾する品詞。「〜の」「〜な」。

単語意味
main主要な
primary主要な
secondary補助的な・第二の
tertiary第三の
quaternary第四の
common共通の
global全体的な
local局所的な
general一般的な
brandブランドの
siteサイトの

ステータス

状態を示す動詞や形容詞など。

単語意味
show見せる
hide隠す
open開く
close閉じる
current現在の
active活動中・有効な
disabled無効になっている

文字を扱う要素

単語意味
linkアンカーテキスト
label分類する・項目名
tag符号・識別子
badge残数を示す数値
copyright著作権表示
tooltipマウスオーバー時に補足情報を表示するインターフェイス
buttonオン・オフの選択に使うインターフェイス
btnbuttonの略語

イメージ

単語意味
image画像
imgimageの略語
icon対象の内容や機能などを小さな絵柄で表したもの
loading読み込み中であることを示すインターフェイス
logo社名や製品名などを図案化・装飾化した文字・文字列
map地図
chart理解しやすいような方法で情報を示すリストやグラフのこと
graphchartの類語で視覚表現のための手段のこと
heroキービジュアルになる大型の画像
banner(主に宣伝用の)画像をともなうリンク
carousel画像などのコンテンツを上下左右にスライドさせて切り替えるインターフェイス
slidercarouselの類語
tickercarouselの類語で自動でアイテムを左右に流しながら表示する。ユーザーは基本的にコントロールできない
lightboxcarouselの類語で、モーダルのjQueryプラグインのこと。主な用途はサムネイル画像をクリックしてモーダルを開き画像を大きく見せること

ナビゲーション

単語意味
navigation情報へ誘導するリンク
navnavigationの略語。
globalnavigation - ほとんどの画面で表示されている主要なナビゲーション
localnavigation - あるカテゴリ内専用のナビゲーション。グローバルナビゲーションの中や下に配置する場合や、サイドバーに配置する場合がある
megamenu - 深い階層のカテゴリやページへのナビゲーション。ドロップダウン(クリックやマウスオーバー)で階層を表示していく。カテゴリやページ数の多いサイトのグローバルナビゲーションに使われることが多い
breadcrumbパンくずリスト。トップページから現在ページまでの階層構造を示したリンク
topicpathbreadcrumbの類語
springboard同じサイズのリンクを2×2や3×3のように配置した同じ重要度を持つ並列なナビゲーション
listmenu - 縦に並んだリスト型のリンクで、階層構造をもったナビゲーション
dashboardグラフやステータスなどを一つの画面にまとめたインターフェイス
pagination昇順にしたページ番号付きのナビゲーション
linearnavigation - その画面の前後に移動するためのナビゲーション。paginationとの違いはページ指定ができないこと
backto-top - ページトップに戻るためのページ内リンク
tab書類などのインデックスタブを模した、画面内のコンテンツ表示を切り替えるインターフェイス
tabbarおもに画面下部に固定されたタブで、画面全体を切り替えるインターフェイス
segmentedcontrol - 機能的にはtabと同じで、見た目がタブではなくボタンである点が違う
offcanvas - 表示領域外から画面の大半を覆い隠したり(オーバーレイ)、ずらすようにスライドしながら表示するナビゲーション
sidedrawer - off-canvasの類語。drawerは「引き出し」の意味
togglemenu - 同一の操作で二つの状態を交互に切り換えるインターフェイスで、操作対象になるボタンを基準にナビゲーションを表示することが多い
sitemapサイト内のすべてのページへのリンクをリスト化したもの
snsソーシャルネットワーキングサービス

フォーム

単語意味
form送信フォーム。
loginユーザー認証をするためのフォーム
signinloginの類語
logoutsignout - ユーザー認証を解除すること
registrationユーザー登録をするためのフォーム
signupregistrationの類語
stepnavigation - 複数画面にわたるフォームの順序や、現在地を示したナビゲーション
searchbox - キーワード検索するためのフォームエリア
textfield - input[type="text"]のような利用者が編集する改行なしのテキストフィールド
textareatextareaのような利用者が編集する複数行のテキストフィールド
checkboxinput[type="checkbox"]のような1つ以上の項目を選択するインターフェイス
radioinput[type="radio"]のような1つの項目を選択するインターフェイス
selectselectのような1つの項目を選択するインターフェイス。ラジオボタンと違い、(dropdownのように)項目が最初は隠れているのが特徴
submit送信ボタン
resetリセット(取り消し)ボタン
modify修正ボタン

その他

単語意味
cardsトランプのような積み重なったカードのメタファーをもつインターフェイス。
dropdown複数の項目を表示して、1つの項目を選択するインターフェイス。
pulldowndropdownの類語。
accordion折りたたまれたコンテンツを選択することで表示させるインターフェイス。
scrolltab - 表示領域よりも横に長いナビゲーションで、左右にスクロールすることで非表示部分を見ることができるインターフェイス。
dialog(主に)注意や警告を知らせるために使用されるメッセージで、ユーザーに操作を要求するのが特徴。
toastdialogの類語で、dialogとの違いは時間が経つと自動的に消えること。
popupwindow - dialogの類語で、リンク先を別の小さなウィンドウで表示するインターフェイス。
toolbarユーザーが利用できるツールやアクションをまとめたインターフェイス。
comment記事に対する反応。
tableテーブル・図表。
timelineチャットや年表のように時系列に並べたリスト。

まとめ

今回はBEMについて書きましたが、自分は割と独学で適当にやっちゃってたので、自分用のチートシートとして作成しました。

命名規則などについては他のブログやQiitaで良質な記事が大量にあるので、さらにわかりやすい記事を求める人はそちらに飛んで見ることをおすすめします!

お疲れさまでした!

参考させていただいた記事


Viewing all articles
Browse latest Browse all 8920

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>