Здравствуйте. Использую БЭМ, как способ именования классов. Встретился с такой проблемой. У меня есть несколько разных классов для стилизации ссылок. Например, разноцветная, особым образом подчеркнутая и тд. Вопрос - как лучше поступить?
- Делать для таких классов отдельные блоки с модификаторами: styled-link styled-link_underscore, styled-link styled-link_colorful. Но тут минус в том, что сами по себе styled-link не нужны. Это просто пустой класс (без стилей). Как-то не очень правильно добавлять пустой класс.
- Делать для таких классов просто блоки - styled-link-underscore, styled-link-colorful. Тут минус в том, что, по сути, это ссылки. И класс нужен только для придания разных стилей ссылки. И для каждой ссылки делать разный класс - как будто это совершенно разные блоки - кажется не очень правильным решением.
- Первый вариант, только не писать styled-link, а сразу писать модификатор - styled-link_colorful. Но это неправильно с точки зрения БЭМ, да? Модификатор модифицирует блок или элемент, то есть, должен идти в контексте с ним. А у меня просто так написан. 4.Какой-то другой вариант?
Я бы делал блок
link
и у него модификаторы булевыеcolorful
иunderscore
, если они могут быть одновременно. Или модификаторtype
со значениями, если они взаимоисключаемые.То есть, помимо класса-модификатора придется писать еще и ненужный класс link (у которого нет стилей)? Это самый лучший вариант?
В рамках методологии — да, пожалуй, лучший. Сегодня стилей нет, завтра добавится какой-нибудь
text-decoration: none
В любом случае, надо оперировать или блоками, или модификаторами. Можно, конечно, сделать отдельные блоки на каждый вид ссылок, но модификаторы одному блоку в данном случае лучше, кмк.
Можно, конечно, вообще не заводить никаких блоков/модификаторов, а просто задавать эти стили соответствующим элементам конкретных блоков.
Согласен с vithar.
Вы должны задавать классы всем блокам и элементам независимо от того будут на них стили или нет. Ведь вы можете не только в дальнейшем захотеть повесить на них стили, но и возможно перенести в другой проект в котором эти стили точно будут. У вас должна быть подготовлена база.