CSSのBEMの命名規則を整理
はじめに
**BEM(Block-Element-Modifier:ベム)**の理解が曖昧だったので、整理します。
BEMとは
- HTMLの要素をBlock、Element、Modifierで分けて命名すること。
- Blockはパーツ自体を表す
- Elementはパーツの部品
- Modifierはパーツの状態
Block__Element--Modifierの形式で書く- 各名前が複数単語の場合は、
-(ハイフン)で繋ぐ
BEMのメリデメ
BEMの特徴は、明確な要素を指定したCSSできようですが、以下のメリデメがあります。
メリット
- CSSの他のパーツへの影響を考えなくてよい
- セレクタを入れ子にしない => 優先度問題を解消
- 広く使われている
デメリット
- class名が長くなる
- 全ての要素にclass名を付けるので面倒
- Bootstrapと相性が悪い(BootstrapはOOCSSを採用している)
例
logo__company-name
この例では、Block__Elementの形式で、Modifier指定していません。
.article-list {
width: 100%;
&__article-title {
font-size: 20px;
}
}
SASSだと、Elementを&で追加する。
.article-list {
width: 100%;
&__article-title {
font-size: 20px;
&--red {
font-size: 20px;
color: red;
}
}
}
Modifierも&で追加する。
命名規則がわかっていると、CSSから意図が汲み取れるので読みやすくなります。
参考
viewportを理解する
はじめに HTMLのviewportの理解が曖昧で、コピペでやり過ごしていました。 viewportは例えば以下のようなものです。 <meta name="viewport" content="width=device-width,initial-scale=1"> この記事では、viewportの意味を解き明かして行きたいと思います。 まずは基本 viewportは表示領域のこと <meta name="viewport" content="width=480"> とすると、幅480pxとして仮想的なモニターができるイメージ document.documentElement.clientWidth も480pxになるように計算される mediaクエリも480pxとして判定される ブラウザはこの仮想的なモニターをブラウザサイズに幅が合うように表示する <meta name="viewport" content="width=device-width"> と指定した場合はブラウザの幅が使用される 解像度は考慮されない 設定できる値の説明 width 表示領域の幅を指定できる。 width=device-widthで実際のデバイスの幅と一致させられる。 initial-scale 初期のズーム倍率。 minimum-scale~maximum-scaleを指定することで、ズーム範囲を指定できる。 minimum-scale: 0~10 の範囲、初期値は 0.25 maximum-scale: 0~10 の範囲、初期値は 1.6 user-scalable ズームの操作を許可するか、しないかを指定する。 注意したいところ モバイル端末で有効。ブラウザへのアドバイスとして使用される 指定しないと「ウィンドウ幅によってページコンテンツが隠されない最小の横幅」か「デフォルト値・980px」 ではどうすべきか 全ブラウザで、統一した表示をしたければwidthを指定する。 <meta name="viewport" content="width=360,initial-scale=1"> デバイスの画面サイズに応じてコンテンツの大きさを変えたい場合は、device-widthを指定する。 <meta name="viewport" content="width=device-width,initial-scale=1"> 参考 もう逃げない。HTMLのviewportをちゃんと理解する HTML:viewport の正しい書き方 ...
爆速でexpressのwebアプリ作成
はじめに 簡単なUIを持ったアプリをwebページが作成したかったので、expressでサクッと作ります。 nodeはインストール済み前提です。 $ node -v v15.4.0 作り方 express-generatorを使うことで、雛形を爆速で作成できます。 1. ディレクトリ作成 $ mkdir my-site $ cd my-site 2. generatorを追加 $ yarn init $ yarn add -D express-generator $ yarn install 3. 雛形を作成 今回はあえてcurrent directoryに作成します。 $ npx express -v jade -c sass --git -f ./ npxでnpmでインストールしたモジュールを使用できます。 -v: add view support (dust|ejs|hbs|hjs|jade|pug|twig|vash) (defaults to jade) -c: add stylesheet support (less|stylus|compass|sass) (defaults to plain css) --git: add .gitignore -f: force on non-empty directory 作成後は以下のような構成になっており、package....