BEM 和表单输入

BEM and form inputs

我正在新项目(表单页面)中尝试 BEM,并且正在寻找标记表单输入的最佳方式。

我有一套单选按钮的常用样式,我判断是一个"element"的表单域"blocks"。所以我给了它 class:

.projectField__radio

单选按钮并不总是 .projectField 的直接子项,但它们始终是它们的后代。所以:

问题 1: 在 BEM 的上下文中可以吗?

问题 2: 对于特定字段 - 将其称为 "colour" 字段 - 我没有标准的单选按钮布局。它们是带有图表的字段的一部分,图表在页面上可视为一个块,因此我将其放入 div:

 .projectColourSettings

我应该如何标记单选按钮?他们需要基本单选按钮的样式,但也需要自己的样式作为颜色设置字段的一部分。

是这个吗?

<input class="projectField__radio projectColourSettings__radio" type="radio"  value=1 />

或者

<input class="projectField__radio projectField__radio--colourSettings" type="radio"  value=1 />

到目前为止,我很喜欢 BEM,它迫使我认真考虑我的标记,但我不确定该怎么做。

我认为后者是正确的选项:

projectField 是一个

radio 是这个 block 中的一个元素,所以你用 projectField__radio.

来标识它

最后,您需要修改此元素:

projectField__radio--colourSettings 

回答您的问题 1:是的,我认为这在 BEM 中非常好。该方法添加了一个抽象层,并不真正关心您的特定标记,例如您的单选按钮(您的 "element")是否是表单字段(您的 "block")的直接子项。