首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用BEM的Sass嵌套

使用BEM的Sass嵌套
EN

Stack Overflow用户
提问于 2019-01-21 02:59:50
回答 2查看 472关注 0票数 1

我正在尝试弄清楚如何使用BEM改进我与sass的工作。我应该在下面的代码中更改任何内容吗?我认为它在HTML中是非常干净的,但在SASS中很难找出嵌套在哪个块中的内容。我在顶部有一个.c-header类,所有项目都在一行中使用'&‘。我怎样才能修复它并使它变得更好?

代码语言:javascript
复制
<header class="c-header">
        <nav class="c-header__nav">
            <div class="c-header__logo">
                <a href="#">
                    <div class="c-header__circle">
                        <i class="c-header____leaf fab fa-envira"></i>
                    </div>
                    <h1 class="c-header____title">treehouse</h1>
                </a>
            </div>
            <i class="c-header____burger fas fa-bars"></i>
            <ul class="c-header__menu">
                <li class="c-header__item"><a href="#">home</a></li>
                <li class="c-header__item"><a href="#">about</a></li>
                <li class="c-header__item"><a href="#">blog</a></li>
                <li class="c-header__item"><a href="#">portfolio</a></li>
                <li class="c-header__item"><a href="#">contact</a></li>
            </ul>
        </nav>
        <div class="c-header__content">
            <h1 class="c-header__caption">creative digital solutions</h1>
            <p class="c-header__paragraph">Lorem ipsum dolor sit amet consectetur.</p>
            <button class="c-header__button">view portfolio</button>
        </div>
    </header>``
EN

回答 2

Stack Overflow用户

发布于 2019-02-02 06:06:10

这是BEM的目的之一:减少CSS对HTML结构的依赖。

这就是为什么我们没有针对孙子元素的特殊类。换句话说,这就是.block__element__sub-element类被禁止的原因。

根据the official documentation的说法

除了类看起来更好之外,它还使得元素只依赖于块。因此,在向界面提供更改时,您可以轻松地在整个块之间移动它们。块DOM结构的更改不需要对CSS代码进行相应的更改。

所以,是的,您的HTML在这里非常干净。我相信你的CSS也是干净的;)

PS:有些类的背景太多了,比如c-header____burger

票数 0
EN

Stack Overflow用户

发布于 2020-08-29 22:43:12

使用BEM,您应该致力于创建级联层次结构,以便您可以利用SASS嵌套并以类似于组件的结构编写SCSS。

c-header c-header__nav c-header__nav__logo c-header__nav__logo__circle -header__nav__logo__title

在这种情况下,你的粗鲁应该是:

代码语言:javascript
复制
.c-header {
  width:100px;
  
  &__nav {
    width:101px;
    
    &__logo {
      width:102px;
      
      &__circle { width:103px; }
      &__title { width:104px; }
    }
  }
}

请注意,建议的结构是相当猜测,因为我没有一个清晰的概述您的项目看起来,但我希望它有助于澄清您的疑惑。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54279893

复制
相关文章

相似问题

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