Вопрос конечно простой, но с некоторой неопределённостью...
Что должно быть в теге nav? Помимо меню. Корзина, личный кабинет, поиск? Или это вкусовщина?
Ещё хочется спросить про наименование, тут я тоже запутался... Как вы обычно называете эти блоки? По простому типо main-nav__left (меню) и main-nav__right (корзина, личный кабинет, поиск и т.д.). Или как-то иначе?
Из этого у меня так же появляется следующий вопрос. Если это не является частью тега nav или является его частью, можно ли называть такие элементы, как поиск или личный кабинет, как отдельные блоки? С точки зрения БЭМ являются ли они блоком или элементом? И элементом чего? Хедера или навигации...
И в отношение хедера, можно ли считать, что в принципе, большинство тегов внутри него, являются блоками, но не элементами? Ведь их можно использовать повторно на странице без привязки к хедеру.
Вся эта цепочка вопросов возникла из-за потенциально колоссально огромной вложенности имён - main-header, main-nav, user-nav или user-controls, а так же basket (а вот тут, имя секции выглядит одиноко) или search.
И бонусный вопрос, который наверное стоило бы вынести отдельной темой, но всё же:
Изображение в слайдере это контентное изображение? Как правило изображение в слайдере несёт в себе полезную информацию и если вдруг стили не подключились, пользователь должен увидеть эти слайды, так ведь? Как вы обычно добавляете изображение в слайдер через html или css, с помощью background-image?
Как вы обычно называете эти блоки? По простому типо main-nav__left (меню) и main-nav__right (корзина, личный кабинет, поиск и т.д.). Или как-то иначе?
Из названия элемента должно быть понятно, что это за элемент, а не его свойство.
(хорошо: nav__basket, nav__link, nav__search, плохо: nav__top, nav__last, nav__blue)
Если это не является частью тега nav или является его частью, можно ли называть такие элементы, как поиск или личный кабинет, как отдельные блоки?
Блоки можно вкладывать в Блоки, это нормально.
И в отношение хедера, можно ли считать, что в принципе, большинство тегов внутри него, являются блоками, но не элементами? Ведь их можно использовать повторно на странице без привязки к хедеру.
Если что-то можно переиспользовать в другой части страницы - это Блок. Если теряется смысл вне контекста - это Элемент.
А обязаны ли? Обязана ли корзина, поиск и личный кабинет, быть частью этой навигации? Допускается ли выносить эти смысловые элементы, за пределы тега nav? Вне его контекста. Например, в шапке.
Я понимаю, что можно всё, а как правильно и канонично сделать? Сомнения же именно в этом. Например поиск является частью навигации по сайту, так? Но ссылкой не является.
На хабре, например, решили сделать два блока main-navbar__section_left и main-navbar__section_right, причём поиск в блоке с меню. Но я так же видел несколько примеров, где сделано по-другому, и случаи, когда в nav только меню, а в хедере лежит всё остальное. И человек там пишет, main-header__basket, main-header__search. Хотя при чём тут хедер, если эти разделы не продублированы в другом варианте дизайна, а сами по себе, могут быть использованы в других частях сайта или на внутренних страницах.
Блоки можно вкладывать в Блоки, это нормально.
Ну, вот опять же, я хочу понять, в конкретном случае. Стоит ли писать main-nav__user-nav например?
Ну я уже склоняюсь, что не стоит...
Ладно, пойду перечитаю гайд по БЭМ, наверное )
Genri_Rus, Да, логично, спасибо за Ваш комментарий )
Видимо, так делают, с точки зрения необходимости в конкретном случае.
Я спрашивал, просто потому, что некоторые примеры, крупных ресурсов, сбивают меня с толку. Мне хотелось сделать правильно, если бы это было, чем-то подкреплено. В итоге я понял, что всё зависит от конкретной ситуации, а по умолчанию, делается так, как Вы описали.