首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >BEM:这是写BEM的正确方式吗?

BEM:这是写BEM的正确方式吗?
EN

Stack Overflow用户
提问于 2017-03-19 20:17:07
回答 1查看 502关注 0票数 1

刚开始学习BEM做一个新项目。有人能看看我是否正确地理解了下面的模板的边界元方法吗?我有点理解,但我觉得可能会更好。

我的模板

代码语言:javascript
复制
 <div id="wrapper" class="content">
  <header>
    <div class="site-logo">
      <img src="path/to/logo.png" class="site-logo__main">
    </div>
    <div class="site-navigation">
      <nav class="main-menu">
        <ul class="list">
          <li class="list-item">
            <a href="" class="main-menu__active">Nav link</a>
          </li>
          <li class="list-item">
            <a href="">Nav link</a>
          </li>
        </ul>
      </nav>
    </div>
    <div class="header-avatar">
         <img src="path/to/logo.png" class="header-avatar__main">
    </div>
  </header>
  <main>
    <aside class="user-details">
      <ul class="list">
        <li class="list-item">
          <a href="" class="user-details__active">Nav link</a>
        </li>
        <li class="list-item">
          <a href="">Nav link</a>
        </li>
        </ul>
      <div class="sidebar-avatar">
        <img src="path/to/logo.png" class="user-details-avatar">
      </div>
    </aside>
    <section class="contact-us">
      <div class="container">
        <div class="row">
          <div class="contact-details">xxx</div>
          <div class="contact-image"></div>
        </div>
      </div>
    </section>
  </main>
  <footer>
    <div class="footer-avatar">xxx</div>
    <div class="copyright">xxx</div>
    <div class="footer-links">
                    <ul class="list">
          <li class="list-item">
            <a href="">Nav link</a>
          </li>
          <li class="list-item">
            <a href="">Nav link</a>
          </li>
        </ul>
    </div>
  </footer>
</div>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-19 20:55:28

从面向对象的角度来看,这可能更有意义。

代码语言:javascript
复制
<div id="wrapper">
    <header class="header">
        <div class="header__site-logo">
            <img src="path/to/logo.png">
        </div>
        <div class="header__site-navigation">
            <nav class="main-menu">
                <ul class="main-menu__list list">
                    <li class="list-item">
                        <a href="" class="main-menu__link active">Nav link</a>
                    </li>
                    <li class="list-item">
                        <a href="" class="main-menu__link">Nav link</a>
                    </li>
                </ul>
            </nav>
        </div>
        <div class="header__avatar">
             <img src="path/to/logo.png">
        </div>
    </header>
    <main id="content">
        <aside class="user-details">
            <ul class="user-details__list list">
                <li class="list-item">
                    <a href="" class="user-details__link active">Nav link</a>
                </li>
                <li class="list-item">
                    <a href="" class="user-details__link">Nav link</a>
                </li>
                </ul>
            <div class="user-details__avatar">
                <img src="path/to/logo.png">
            </div>
        </aside>
        <section class="contact-us">
            <div class="container">
                <div class="row">
                    <div class="contact-us__details">xxx</div>
                    <div class="contact-us__image"></div>
                </div>
            </div>
        </section>
    </main>
    <footer class="footer">
        <div class="footer__avatar">xxx</div>
        <div class="footer__copyright">xxx</div>
        <div class="footer__links">
            <ul class="footer__list list">
                <li class="list-item">
                    <a href="" class="footer__link">Nav link</a>
                </li>
                <li class="list-item">
                    <a href="" class="footer__link">Nav link</a>
                </li>
            </ul>
        </div>
    </footer>
</div>

尝试将DOM想象为一组高级组件:

代码语言:javascript
复制
wrapper div
  > header
    > main-menu
  > content
    > user-details
    > contact-us
  > footer

使用这些块作为“块”,这意味着它们位于类名中的双下划线之前。

对于这些块中的每个组件,向该组件附加一个友好的名称,并将其作为类名使用。

代码语言:javascript
复制
header
  > header__site-logo
  > header__site-navigation
  > header__avatar
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42891737

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档