1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

JSCSSの提案

Last updated at Posted at 2019-09-10

はじめに

JSCSS(JavaScript CSS)は、FLOCSSやSMACSSのコンセプト1を取り入れたCSS構成案だ。

TL; DR

JSCSSでは、JavaScriptの変数名や関数名として使うCSSの名前(ID変数のみ)にjs_*を使用する。
それ以外のCSSはl-*を使用してJavaScriptの変数名や関数名にCSSの名前を使わせないようにする。

なぜ"l-*"プレフィックスは使いにくいのか

JavaScriptのプログラムがl-*プレフィックスの-を引き算として解釈し、関数名や変数名が成立しないからだ。

"l-*"プレフィックスの失敗例

JavaScriptプログラム
<div class="l-header">
  <button id="l-header__button">
    ボタン
  </button>
</div>

<script>
  function l-header__button_click() {
    console.log('click');
  }
  l-header__button.addEventListener(
    'click',
    l-header__button_click
  );
</script>

JavaScriptはプレフィックスの-を引き算として解釈し、関数l-header__button_clickとID変数l-header__buttonはエラーとなり成立しない sob

"js_*"プレフィックスの成功例

JavaScriptプログラム
<body>
  <div class="l_header">
    <button id="js_header__button">
      ボタン
    </button>
  </div>

  <script>
    function js_header__button_click() {
      console.log('click');
    }
    js_header__button.addEventListener(
      'click',
      js_header__button_click
    );
  </script>
</body>

関数js_header__button_clickとID変数js_header__buttonは成立し、一貫性がありエラーの起きにくいJavaScriptプログラムになった relaxed

感想

プレフィックスを付けるのがいいと思ってFLOCSSとSMACSSを使ってみたらJavaScriptプログラムを書くとき使いにくかった。

どうしてl_*にしないのだろう thinking

感想のつづき

#idにスタイルをつけていたとき、同一ページ内に1個だけのときは問題がないが、方針が変わって他の要素にも#idと同じスタイルをつけたくなったとき問題が発生する。
スタイルを.classに変更すればいいが、#idの名前を変更するかしないかの選択に迫られる。
#idの名前を変更するとJavaScriptの修正が必要になってしまう。
JavaScriptの修正を避けたいといういうのが人情だ。

l-*の方式はJavaScriptの変数名や関数名としてCSSの名前を使用させないCSS構成案と考えられる。
そこにJSCSSの存在意義が生まれる。
JavaScriptの変数名や関数名としてCSSの名前を使用したい。2

「頭にjs-を付ける」のではなく、JSCSSでは「頭にjs_を付ける」。

  1. 取り入れたコンセプトはプレフィックスをつける命名規則だけ。

  2. とはいえdocument.getElementsByClassNameなどでJavaScriptからクラスを使用していたらCSSだけの変更ができない。頭にlをつけてlayoutの意味を持たせていたものをjs-js_に変更するのもよくない。CSSをJavaScriptから完全に切り離すことはできない。JavaScriptもCSSも一人で開発しているときは問題にならないが、多人数で開発してるときは一度決めたCSSの名前を簡単に変更できないし変更すべきでない。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?