Почему lang-switcher__link является потомком lang-switcher, а не lang-switcher__item?
Нельзя ли было lang-switcher__link сделать например lang-switcher__item__link?
по твоей логике любое вложение нужно считать как новый потомок? и че если 10 раз вложил элемент будешь плодить классы вида: lang-switcher__item__link__one__two__tree__four?
Потому что lang-switcher__item не является каким-то отдельным компонентом, который можно вынести из lang-switcher, он зависит от него. И стиль lang-switcher__link зависит от корневого компонента, а не от "обёртки" lang-switcher__item. А дерево просто показывает вложенность DOM элементов.
KornevaViktoria, пожалуйста. Дополню, если бы lang-switcher__item был отдельным компонентом, который вы бы хотели иметь возможность переносить в любое другое место страницы, то вы могли бы дать имя вложенному элементу относительно него уже.
Евгений Калибров, но ведь если я захочу перенести lang-switcher__item как отдельный компонент на другую страницу, не будет ли странным такое именование? это разве не будет уже считаться блоком? отсюда вытекает другой вопрос, может ли блок в своем названии иметь двойное нижнее подчеркивание? Чем дальше пытаешься понять - тем хуже)
Да, будет странным, его нужно будет переименовать тогда, без двойного подчеркивания, lang-switcher__item можно оставить дополнительным классом, когда он будет в контексте lang-switcher
но ведь в html lang-switcher__link находится как раз в lang-switcher__item и разве она не к нему должна относится? и почему тогда в бэм дереве link идет как потомок item? или я что-то путаю