【仕様】CSS BEM記述仕様
BEM 命名規則を使用すると、理論的には、css
コードの各行にはセレクターが 1 つだけあります。 css
代码都只有一个选择器。
BEM代表“块(block),元素(element),修饰符(modifier)”,我们常用这三个实体开发组件。
在选择器中,由以下三种符合来表示扩展的关系:
- 中划线 :仅作为连字符使用,表示某个块或者某个子元素的多单词之间的连接记号。 __ 双下划线:双下划线用来连接块和块的子元素 _ 单下划线:单下划线用来描述一个块或者块的子元素的一种状态 type-block__element_modifier
块(block)
一个块是设计或布局的一部分,它有具体且唯一地意义 ,要么是语义上的要么是视觉上的。
在大多数情况下,任何独立的页面元素(或复杂或简单)都可以被视作一个块。它的HTML容器会有一个唯一的CSS类名,也就是这个块的名字。
针对块的CSS类名会加一些前缀( ui-
),这些前缀在CSS中有类似 命名空间 的作用。
一个块的正式(实际上是半正式的)定义有下面三个基本原则:
- CSS中只能使用类名(不能是ID)。
- 每一个块名应该有一个命名空间(前缀)
- 每一条CSS规则必须属于一个块。
例如:一个自定义列表 .list
是一个块,通常自定义列表是算在 mod
类别的,在这种情况下,一个 list
列表的block写法应该为:
.list
元素(element)
块中的子元素是块的子元素,并且子元素的子元素在 bem
里也被认为是块的直接子元素。一个块中元素的类名必须用父级块的名称作为前缀。
如上面的例子,li.item
block
🎜 ブロックは、意味的または視覚的に、特定かつ一意の意味を持つデザインまたはレイアウトの一部です。 🎜🎜 ほとんどの場合、独立したページ要素 (複雑または単純) はすべてブロックと見なされます。その HTML コンテナには、ブロックの名前である一意の CSS クラス名が付けられます。 🎜🎜いくつかのプレフィックス (ui-
) がブロックの CSS クラス名に追加されます。CSS のこれらのプレフィックスは 名前空間 🎜 の役割。 🎜🎜 ブロックの正式な (実際には半正式な) 定義には、次の 3 つの基本原則があります: 🎜- CSS ではクラス名のみ (ID ではなく) を使用できます。
- 各ブロック名には名前空間 (プレフィックス) が必要です。
- 各 CSS ルールはブロックに属している必要があります。
.list
はブロックです。通常、カスタム リストは mod
カテゴリにカウントされます。 list
リストのブロック記述は次のようにする必要があります: 🎜.list{}.list.select{}.list .item{}.list .item.active{}.list{}.list_select{}.list__item{}.list__item_active{}🎜