在边界元法中,我知道对于修饰符,两个破折号是有意义的,这样你就可以区分my-block-my-modifier和my-block--my-modifier中的修饰符。但是为什么使用block__element而不是block_element?
my-block-my-modifier
my-block--my-modifier
block__element
block_element
nbnkbykc1#
双下划线用于定义块的子元素。即:
<nav class="main-nav"> <a class="main-nav__item" href="#">Text</a> </nav>
字符串其中main-nav是一个块,main-nav__item是一个子元素。这样做是因为有些人可能会像这样命名他们的块main_nav,这将与像这样的单下划线产生混淆:main_nav_item个因此,双下划线将澄清这样的内容:main_nav__item的值。
main-nav
main-nav__item
main_nav
main_nav_item
main_nav__item
dxxyhpgq2#
我要去第二@Imran Bughio的答案,但我正试图进一步澄清这个问题。在standard BEM style中,单个下划线被保留用于 * 修饰符 *。此外,它们通常表示键/值对的组合。例如:
.block_align_vertical .block_align_horizontal .block__element_size_big .block__element_size_small
字符串这与inuit.css支持的 modified BEM语法形成对比,后者是布尔型的。
.block--vertical .block--horizontal .block__element--big .block__element--small
型根据我的经验,在使用修改后的语法时,您很快就会遇到表达式限制。例如:If you would write
.block--align-vertical .block--align-horizontal .block__element--size-big .block__element--size-small
型键/值关系将不是唯一的,如果您试图描述一个键,如background-attachment,这将导致
background-attachment
.block__element--background-attachment-fixed
型另一个额外的好处是,您可以使用基于 * 标准 * 命名约定的库,以提高工作流程中的生产力:
mi7gmzs63#
另外值得一提的是,BEM语法并不是强加给我们的,如果您发现另一种语法更具可读性,那么无论如何都要使用它。重要的是一致性,确保其他开发人员使用相同的语法。Nicolas Gallagher在SUIT CSS中使用了另一种语法。它使用以下语法。
ComponentName ComponentName--modifierName ComponentName-elementName ComponentName.is-stateOfComponent
字符串你可以在这里阅读更多SUIT CSS naming conventions
vbkedwbf4#
因为其块可以用连字符或下划线分隔,例如:
.site-search {} /* Block */ .site-search__field {} /* Element */ .site-search--full {} /* Modifier */
字符串或者是
.site_search {} /* Block */ .site_search__field {} /* Element */ .site_search--full {} /* Modifier */
型
drnojrws5#
根据BEM命名约定,单下划线有两种其他用法,1.修改器名称与块或元素名称之间用一个下划线()分隔。1.修饰符值与修饰符名称用一个下划线()分隔。因此,将元素名称与块名称分开是通过双下划线完成的。元素名称与块名称之间用双下划线(__)分隔。
ipakzgxi6#
**基本概念:**block-name__element-name_modifier-name详细信息:BEM (Block, Element, Modifier)
6条答案
按热度按时间nbnkbykc1#
双下划线用于定义块的子元素。
即:
字符串
其中
main-nav
是一个块,main-nav__item
是一个子元素。这样做是因为有些人可能会像这样命名他们的块
main_nav
,这将与像这样的单下划线产生混淆:main_nav_item
个因此,双下划线将澄清这样的内容:
main_nav__item
的值。dxxyhpgq2#
我要去第二@Imran Bughio的答案,但我正试图进一步澄清这个问题。
在standard BEM style中,单个下划线被保留用于 * 修饰符 *。此外,它们通常表示键/值对的组合。例如:
字符串
这与inuit.css支持的 modified BEM语法形成对比,后者是布尔型的。
型
根据我的经验,在使用修改后的语法时,您很快就会遇到表达式限制。例如:If you would write
型
键/值关系将不是唯一的,如果您试图描述一个键,如
background-attachment
,这将导致型
另一个额外的好处是,您可以使用基于 * 标准 * 命名约定的库,以提高工作流程中的生产力:
mi7gmzs63#
另外值得一提的是,BEM语法并不是强加给我们的,如果您发现另一种语法更具可读性,那么无论如何都要使用它。重要的是一致性,确保其他开发人员使用相同的语法。
Nicolas Gallagher在SUIT CSS中使用了另一种语法。它使用以下语法。
字符串
你可以在这里阅读更多SUIT CSS naming conventions
vbkedwbf4#
因为其块可以用连字符或下划线分隔,例如:
字符串
或者是
型
drnojrws5#
根据BEM命名约定,单下划线有两种其他用法,
1.修改器名称与块或元素名称之间用一个下划线()分隔。
1.修饰符值与修饰符名称用一个下划线()分隔。
因此,将元素名称与块名称分开是通过双下划线完成的。
元素名称与块名称之间用双下划线(__)分隔。
ipakzgxi6#
**基本概念:**block-name__element-name_modifier-name
详细信息:BEM (Block, Element, Modifier)