БЭМ (BEM) Для Начинающих Часть 1

Поделиться
HTML-код
  • Опубликовано: 19 сен 2024
  • В этом видео мною допущена ошибка, где я говорю, что у элемента может быть другой элемент. Это неправильно. Спасибо за понимание.
    Основы БЭМ (BEM) для начинающих.
    CodePen codepen.io/ros/...
    Доки БЭМ ru.bem.info/
    Доки MCSS operatino.gith...
    Доки SMACSS smacss.com/
    Пишите комментарии, задавайте вопросы, ставьте лайк, подписывайтесь!

Комментарии • 79

  • @ДенисРоднов-ж4щ
    @ДенисРоднов-ж4щ 3 года назад +1

    Наконец-то хоть кто-то нормально объясняет эту тему, пересмотрел кучу видео и нашел то, что надо

  • @dispeltr1183
    @dispeltr1183 9 лет назад +10

    Отличная подача материала, приятно слушать и запоминать. Продолжайте в том же духе! Спасибо за урок!

    • @RosIvanov
      @RosIvanov  9 лет назад +1

      Dispel TR Спасибо!

  • @oleksandrkh2907
    @oleksandrkh2907 8 лет назад

    Видео очень понравилось! Особенно то, что автор говорит повседневным языком и нормально объясняет, а не как большинство сей час - как с учебника читают.

  • @enoughzenoughz4761
    @enoughzenoughz4761 8 лет назад +3

    Благодарю за видео, автор ты прекрасен!

    • @RosIvanov
      @RosIvanov  8 лет назад

      +Enoughz Enoughz Спасибо за отзыв!

  • @HlibShcherban
    @HlibShcherban 8 лет назад +2

    из всех 3 видео, которые я просмотрел ты Бест!!!

  • @tanyasayed7960
    @tanyasayed7960 5 лет назад

    Пересмотрела до этого 3 видео. Ничего не поняла. Только вы смогли донести до меня инфо. Спасибо большое. Вы суперрр!!!!

  • @artkit8bit
    @artkit8bit 8 лет назад

    Однозначно лайк!Спасибо,что рассказываешь и про свой подход.Для начинающего это очень познавательно.

    • @RosIvanov
      @RosIvanov  8 лет назад

      +Arthur Kitskan пожалуйста#

  • @nso655
    @nso655 5 лет назад

    Чувак - ты молодец и урок хороший! Но ты не так спиши при общении... Говори лучше спокойно без запинок. Если что люди поставят скорость на x2 - если ты обеспокоен этим.... А контент ТОП!

  • @PacoOfficial
    @PacoOfficial 9 лет назад +1

    интересненько! лайк

  • @def347art
    @def347art 9 лет назад +1

    А так все круто!) И БЭМ крутая штука)

  • @TheKoloky
    @TheKoloky 7 лет назад +1

    Спасибо за урок, очень круто! Но в плане наследования стилей кнопок, я бы сделал общий класс .btn и делал бы extend от него, как в языке программирования)

  • @r45her
    @r45her 8 лет назад

    Спасибо за видео. Есть ошибки, но в целом почерпнул для себя что-то новое.

    • @RosIvanov
      @RosIvanov  8 лет назад +1

      Элемент в элементе? В описании я это указал.

    • @r45her
      @r45her 8 лет назад

      Да я сначала написал, а потом прочитал описание) Ну там вроде ещё что-то было по мелочи. Щас не вспомню, а заново пересматривать времени нет. В целом всё гуд :)
      Да я и сам ещё далеко не всё знаю.

  • @ЛарисаКалинина-б4ф

    Полезный видос, хорошая подача

  • @nu3DN
    @nu3DN 9 лет назад +3

    У вас ошибка на 8:20. Элемент внутри назывался бы не .nav__item__col а просто .nav__col.

  • @st.petesburg9882
    @st.petesburg9882 9 лет назад +2

    Очень надеюсь, что Вы сделаете видео об использовании БЭМ, инструментария БЭМ на практике. Рассмотрите технологии БЭМ, которые формируют общий знаменатель для любого веб-проекта, будь-то лендинг или масшабная торговая площадка.

    • @RosIvanov
      @RosIvanov  9 лет назад

      +Chillout Me Это проблематично. Нужно много практики на этих инструментах, чтобы понять весь бэм стэк. Я пока использую более "народные" средства. Возможно в будущем буду для себя брать что-то из стэка и тогда можно будет сделать обзор.

    • @st.petesburg9882
      @st.petesburg9882 9 лет назад +2

      Понял Вас. Так или иначе, отличный обзор для того, чтобы понять, есть ли смысл углубляться в изучение БЭМ и благоприятная отправная точка для этого.

    • @RosIvanov
      @RosIvanov  9 лет назад

      Благодарю.

  • @def347art
    @def347art 9 лет назад +8

    На сайте БЭМа пример разметки такой, тоесть элемент привязывается к блоку, а элемент к элементу нет.
    Не нужно писать menu__layout__layout-unit__item
    Когда внутри блока элемент можно обозначить просто
    menu__item
    независимо от того вложен он еще в какие-либо элементы или нет

    Index

    Products

    Contact

    • @RosIvanov
      @RosIvanov  9 лет назад

      Alexander Nesterov Да, таким образом можно не плодить длинные классы.

  • @ilialataria4838
    @ilialataria4838 8 лет назад

    При рассуждении о .btn вы сказали что "тупо создавать одинаковые стили для разных элементов, поэтому можно создать один общий, к примеру .btn", а потом вы сказали что лучше использовать что дают, к примеру возможности екстенд SASS. Но он в итоге конвертится в тоже дублирование свойств. Вы на выходе получаете то что назвали тупость. Повторение одних и тех же свойств с одними и теми же значениями отдельно на разных элементах.

    • @RosIvanov
      @RosIvanov  8 лет назад

      +Ilia Lataria Я подразумевал, что не нужно копипастить одинаковые стили в разные элементы, для этого можно сделать глобальный класс или воспользоваться @extend.

  • @user-md6bo2pm2d
    @user-md6bo2pm2d 7 лет назад +3

    Ошибка. Использовать элемент в элементе с зависимым названием одного элемента от другого не допускается по данной методологии

    • @k.safonov
      @k.safonov Год назад

      Автор вообще не вкурил бэм ваапще. Еще и обучающее видео записал.

  • @cyberS7
    @cyberS7 8 лет назад

    Кнопка - это блок, а текст в кнопке - это элемент

  • @МихаилИванов-с1я9я
    @МихаилИванов-с1я9я 7 лет назад +2

    Эх, сейчас бы написать, что нельзя вкладывать элемент в элемент и почувствовать себя илитой! Но, пожалуй, воздержусь.

    • @RosIvanov
      @RosIvanov  7 лет назад

      см описание к видео

    • @МихаилИванов-с1я9я
      @МихаилИванов-с1я9я 7 лет назад

      это был сарказм))) Автор, спасибо за видео.

    • @ДмитрийПащенко-щ9е
      @ДмитрийПащенко-щ9е 5 лет назад

      Погодите, сударь, дак можно вкладывать элемент в элемент, просто он будет являться частью блока(в названии). Надеюсь, вы это имели ввиду))

  • @РустамБашаров-з2щ
    @РустамБашаров-з2щ 9 лет назад

    Отличное видео, но есть такой момент, на сколько я понял, по БЭМ методологии элемент элемента это новый блок, если нет, то поправьте меня.

    • @RosIvanov
      @RosIvanov  9 лет назад

      Рустам Башаров Спасибо за отзыв. Нет, элемент элемента это не новый блок.

    • @alien7086
      @alien7086 9 лет назад +1

      Рустам Башаров ru.bem.info/method/faq/#В-каком-случае-создавать-блок-в-каком-элемент

    • @r3ff
      @r3ff 8 лет назад

      +Ros Ivanov Элемент элемента - это вообще не по БЭМу! В документации четко и понятно об этом пишут. Нет ничего хуже разбирать псевдо-БЭМ, когда горе-девелоперы лепят что попало, и это только с толку сбивает. В любом случае спасибо за старания.

    • @RosIvanov
      @RosIvanov  8 лет назад

      +Andrew Reva Это моя ошибка которую уже обсудили в коментах. В любом случае хорошо, что обратили внимание.

    • @r3ff
      @r3ff 8 лет назад

      +Ros Ivanov Прошу прощения, не заметил. Спасибо

  • @user-xg9pe4gi3n
    @user-xg9pe4gi3n 8 лет назад +2

    а на основании чего он вкладывает один елемент в другой, методология БЭМ это запрещает

    • @RosIvanov
      @RosIvanov  7 лет назад +2

      Посмотрите описание к видео.

  • @Alex-jf2yk
    @Alex-jf2yk 8 лет назад

    вопрос: например я для кнопки решил использовать класс btn, в каком нибудь блоке эта кнопка отличается от класса btn, какой следует добавить дополнительный класс данной кнопке block-name__btn или btn_modif?

    • @RosIvanov
      @RosIvanov  8 лет назад +1

      Я бы поставил .btn.btn_modif

  • @RosIvanov
    @RosIvanov  9 лет назад +1

    Для господина nu3DN
    Для начала было бы неплохо если вы включите возможность отвечать на ваши комментарии (настройки google+).
    Если я скажу, что элемент col принадлежит элементу item, тогда почему .nav__item__col ошибка ?
    Запись .nav__col более лаконична, уменьшает логический каскад и в целом это правильный подход, но это не всегда так.

    • @warrior1984spb
      @warrior1984spb 9 лет назад +1

      Ros Ivanov Это не рекомендовано по методологии bem ru.bem.info/faq/#Почему-в-БЭМ-не-рекомендуется-создавать-элементы-элементов-block__elem1__elem2

    • @RosIvanov
      @RosIvanov  9 лет назад

      Игорь Попов Окей. Кстати ссылка уже была ниже в коментах.

    • @alexbel3021
      @alexbel3021 8 лет назад +3

      +Ros Ivanov а если вам нужно будет элемент .nav__item__col вынести из .nav__item? Тогда такое название класса абсолютно теряет смысл. Элемент может быть лишь у блока, но никак не у элемента. BEM в своем подходе к наименованию DOM элементов не ставит задачу повторить DOM дерево. BEM дерево и DOM дерево существуют независимо друг от друга. Та что nu3DN прав, это ошибка. Даже более того, такое наименование класса - это уже не BEM.

    • @RosIvanov
      @RosIvanov  8 лет назад +1

      Alex Bel Да, ошибка.

  • @madmax5254
    @madmax5254 9 лет назад

    Спасибо, очень полезно и понятно. Вопрос касательно BEM + Bootstrap(bootstrap grid). Как правильней делать каркас?? Примешивать bootstrap классы к BEM-блокам или создавать отдельно bootstrap-блоки и в них помещать BEM-блоки??

    • @RosIvanov
      @RosIvanov  9 лет назад +2

      Maxim MadMax Привет, я лично не смешиваю бутстрап сетку с блоками.
      Например
      .container
      .row
      .col-md-6
      .my-block1
      .col-md-6
      .my-block2
      Cтараюсь держать по-отдельности свои классы и классы фреймворков, чтоб потом не путаться.

    • @k.safonov
      @k.safonov Год назад

      Либо бэм либо бутстрап.

  • @AlexLapinX
    @AlexLapinX 7 лет назад

    Конечно спасибо за ликбез, но совершенствуйте свою подачу пожалуйста. Очень трудно не уснуть.

  • @ne4to777
    @ne4to777 8 лет назад +2

    после того, как нас пол часа отучали от каскадов, потом снова прийти к их использованию для "железобетонности", - само решение БЭМ уже становится сомнительным.

    • @RosIvanov
      @RosIvanov  8 лет назад

      +Алексей Алексеев Так бэм не навязывает каскадность, а набооборт не рекомендует ее.

    • @ne4to777
      @ne4to777 8 лет назад

      Ros Ivanov , что не мешает автору рекомендовать каскадность.

    • @alexbel3021
      @alexbel3021 8 лет назад

      +Алексей Алексеев каскад от модификатора блока к элементам этого блока допускается. Это не вызывает проблем. Допустим, у вас список из 20 элементов, и нужно каждому поменять какое-то свойство. Есть два варианта: 1) каскад от модификатора, 2) добавление модификатора каждому элементу. Что проще: добавить один модификатор или 20?

    • @ne4to777
      @ne4to777 8 лет назад

      Alex Bel , согласно методологии БЭМ должен быть общий класс для элементов и класс модификатора, типа class="item item--mod". Для решения этой задачи есть бэм препроцессоры, которые отлично вносят нужную разметку на страницу. Например связка jade+ bemto+stylus очень хорошо себя ведет.
      БЭМ создавали не для того, чтобы вам было меньше писать, а чтобы легче поддерживать и править.
      Если хотите каскадность, пользуйте ее, но зачем вам тогда БЭМ?

    • @alexbel3021
      @alexbel3021 8 лет назад

      +Алексей Алексеев см. ru.bem.info/faq/#Почему-нежелательно-использовать-вложенные-селекторы
      "Методология БЭМ допускает использование таких селекторов, но рекомендует по-максимуму его сократить. Например, вложенность уместна, чтобы менять элементы в зависимости от состояния блока или заданной ему темы".

  • @alyu6351
    @alyu6351 9 лет назад +2

    ruclips.net/video/5Gp_2kN5Bv4/видео.html в этом моменте с екстендом кнопки. Это конкретный пример, используемый в боевых условиях или просто показан принцип? Просто если .searchbox__btn изменится, то это же повлияет и на .login__btn. Я не очень матерый в сасс, может вопрос и глупый.

    • @alexbel3021
      @alexbel3021 8 лет назад

      +Алексей Юдин в таком случае рекомендуют использовать т. н. абстрактные блоки. Одинаковые свойства выносятся в @extend, который по сути и является абстрактным блоком, и далее подключается к требуемым селекторм (в данном случае классам элементов).

  • @p_levin
    @p_levin 9 лет назад

    Очевидный минус эксетдов это конкретно раздутый css, он ведь вставляет css в каждый класс, хз что в этом крутого, когда лучше перечислять классы и то там есть свои ограничения.

    • @alexbel3021
      @alexbel3021 8 лет назад

      +Павел Левин вставляет свойства в каждый элемент как раз @mixin, а @extend группирует элементы, добавляя к ним свойства единожды и вынося их отдельно от остальных элементов.

  • @k.safonov
    @k.safonov Год назад

    Каскад это зло. БЭМ нужен, чтоб минимизировать его использование. А юзать и бэм и каскад вместе это как сидя в моторной лодке продолжать грести веслом.

  • @vladyslavspivakov8337
    @vladyslavspivakov8337 8 лет назад

    Здравствуйте у вас уже не будут выходить видео?
    Хотелось бы послушать про единицы измерения (em, px) в вашем исполнении

    • @RosIvanov
      @RosIvanov  8 лет назад

      +Влад Спиваков Возможно будут видео, а что именно интересует в px, em ?

    • @vladyslavspivakov8337
      @vladyslavspivakov8337 8 лет назад

      Вот у вас отступы все заданы в em(почему лучше чем px, как рассчитывать, где ещё нужно применять, а где лучше px)...читал разные статьи, но не сильно "въехал" в это дело. Также было и с БЭМ, но после вашего видео сразу начал использовать)

    • @RosIvanov
      @RosIvanov  8 лет назад

      +Влад Спиваков есть другое предложение: добавляйся в скайп, поговорим о твоих вопросах, заодно запишу видео по теме.

  • @merrym2675
    @merrym2675 7 лет назад +1

    Что за глупое наследование!!!!
    ruclips.net/video/5Gp_2kN5Bv4/видео.html
    Мы меняем .searchbox__btn, и у нас меняется .login__btn
    Если хочется наследование, то нужно создать глобальный класс и от него наследоваться, в .searchbox_btn и login_btn.Каждая кнопка в свою очередь, будет дополнять свои стили.

  • @ScubyDooBy69
    @ScubyDooBy69 7 лет назад

    Где-то я все читал это.

  • @Артем-ш6ц2й
    @Артем-ш6ц2й 7 лет назад

    27:00 каскад же в sass невозможен?

  • @oleksandrmohylivskyi9528
    @oleksandrmohylivskyi9528 8 лет назад

    звук жуть

  • @Sergey4880
    @Sergey4880 7 лет назад

    укурок какой-то

    • @dimastrizhak3653
      @dimastrizhak3653 7 лет назад +2

      иди на завод работай, что ты тут забыл?