首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用BEM + Sass父选择器来确定修饰符的子元素的目标,而无需重复类名

BEM(Block Element Modifier)是一种前端命名约定,用于组织和命名CSS类。它的核心思想是将页面分解为独立的块(Block),块内部包含元素(Element),并且可以通过修饰符(Modifier)来改变块或元素的外观和行为。

Sass是一种CSS预处理器,它扩展了CSS的功能,提供了变量、嵌套、混合(Mixin)等特性,使得CSS的编写更加高效和可维护。

父选择器是指在CSS中使用选择器来选择某个元素的父元素。在BEM中,可以使用父选择器来确定修饰符的子元素的目标,而无需重复类名。这样可以减少代码的冗余,并且使得CSS的结构更加清晰和易于维护。

下面是一个示例代码,演示了如何使用BEM + Sass父选择器来确定修饰符的子元素的目标:

HTML代码:

代码语言:html
复制
<div class="block">
  <div class="block__element">Element</div>
  <div class="block__element block__element--modifier">Modified Element</div>
</div>

Sass代码:

代码语言:scss
复制
.block {
  // 块的样式
  background-color: #f0f0f0;
  
  &__element {
    // 元素的样式
    padding: 10px;
    
    &--modifier {
      // 修饰符的样式
      font-weight: bold;
    }
  }
}

在上面的代码中,.block表示块,.block__element表示块内的元素,.block__element--modifier表示具有修饰符的元素。通过使用父选择器&,我们可以在Sass中嵌套定义修饰符的样式,而无需重复写类名。

BEM + Sass父选择器的优势包括:

  1. 代码结构清晰:使用BEM命名约定可以使CSS的结构更加清晰和易于理解。
  2. 代码复用性高:通过使用修饰符,可以轻松地改变块或元素的外观和行为,提高代码的复用性。
  3. 减少代码冗余:使用父选择器可以避免重复写类名,减少代码的冗余。
  4. 提高开发效率:Sass的特性使得CSS的编写更加高效和可维护。

BEM + Sass父选择器适用于各种前端开发场景,特别是在大型项目中,可以帮助开发者更好地组织和管理CSS代码。

腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

post-csslesssass样式嵌套与命令之&符号—BEM

color:blue;  }}这一是最常见这个一是我们日常所常见&高级用法作为内层选择器表示对选择器引用选择器运算符 & 作用,就是让当前选择器选择器,按照特定规则进行连接。...它有多种用途,比如创建重复:.button {  &-ok {    background-image: url("ok.png");  }  &-cancel {    background-image...,不是仅仅重复最近祖先选择器。...&还可以反转嵌套顺序并且可以应用到多个上。....每个块在逻辑上和功能上都是相互独立。 */.block {}/* 元素是块中组成部分。元素不能离开块来使用BEM 不推荐在元素中嵌套其他元素

45230
  • post-csslesssass样式嵌套与命令之&符号—BEM

    color:blue;  }}这一是最常见这个一是我们日常所常见&高级用法作为内层选择器表示对选择器引用选择器运算符 & 作用,就是让当前选择器选择器,按照特定规则进行连接。...它有多种用途,比如创建重复:.button {  &-ok {    background-image: url("ok.png");  }  &-cancel {    background-image...,不是仅仅重复最近祖先选择器。...&还可以反转嵌套顺序并且可以应用到多个上。....每个块在逻辑上和功能上都是相互独立。 */.block {}/* 元素是块中组成部分。元素不能离开块来使用BEM 不推荐在元素中嵌套其他元素

    37520

    编写模块化CSS——BEM

    BEM 中,块被写为像 class 名字一样,如下所示: ? BEM 使用 .form 不是 元素原因是因为 允许无限可重用性,即使是最基本元素也可能改变样式。...但是有两种方法可以编写简洁 CSS,不需要额外 class! 方法 1:使用 mixin 第一种方式,如果使用 Sass 或任何其他预处理器,则 使用mixin封装 需要重用 所有代码。...所以强烈推荐你尝试它:) 我们来看看 BEM 第三个重要部分 —— 元素元素(Elements) 元素是块节点。为了表明某个东西是一个元素,你需要在块后添加 __element。...如果你使用 BEM 元素,则可以使用优先级为 10 不是 20 选择器为 .form__row 提供样式。...他们是: 只把子元素链接到有意义块 创建新保存元素 链接孙元素到块 虽然 BEM 建议你将 BEM 元素写作 .block__element ,但它不会规定你 HTML 应如何。

    2.1K70

    进阶 | CSS进阶:提高你前端水平 4 个技巧

    节点是 stream ,内容是一个文章列表。它节点是 streamItem ,内容是文章列表中一篇具体文章。这使我们很容易了解到节点和节点之间关系。...使用组件思想将会使你代码解耦。解耦代码越多,你之间依赖就越低。这会让你代码更容易修改,并且使你代码更长时间工作下去不用修改它。...BEM 代表块(block)、元素(element)和修饰符(modifier)。Yandex,在俄罗斯相当于谷歌搜索引擎,为了解决他们 CSS 代码库中缩放问题而提出了它(它指BEM)。...元素(Elements)是块子模块。修饰符(modifiers)代表不同状态。...我们可以将 splash 作为一个一般全屏,它可以拥有任何节点。所有节点关注属性,都在 splash content 中,与节点属性是完全解耦

    44310

    如何使用CSS命名规范提高您编码效率

    通过使用合理命名、可重用组件以避免重复,并遵循最佳实践,可以实现这一目标。...还应具有连贯性,连接兄弟元素或显示父子元素之间关系。 避免过度嵌套:在为分配名称时,命名模式应保持浅层,并且选择器不应过度嵌套。这样可以提高可读性并使代码更易于维护。...避免使用泛泛名称:应该反映其所分配给元素意图和含义。它应该是一个描述性名称,能够传达其功能,以便更容易搜索和理解。...这些通常是包裹元素级/顶级元素。块使用小写字母和连字符表示。例如:.nav , .header , .carousel , .card 等。...使用BEM,我们还可以在CSS中编写样式时表示一个元素是特定元素

    38330

    CSS规范--BEM入门

    另外现在都用IDE编写代码了,有自动提示功能,也无须担心重复输入过长名字。因为命名长,我们是不是可以用子代选择器代替BEM命名?这样至少在HTML编写时,让HTML标签看起来美观一点。 3....当我们遵循了这个规定,无论元素发生改变,或是模块构造发生改变,还是元素之间层级关系互相变动,这些都不会影响元素名字。...组件应该是“自洽”,其本身就应该构成了一个“生态圈”,也就是说,他几乎不需要外部供给,自给自足就能够运转下去。 7. 关于选择器 子代选择器方式是,通过组件根节点名称选取子代元素。...*/ } 这还仅仅只有两个组件而已,实际项目中,十几个或几十个组件,难道我们要每个组件都检查一下“新组件是否和以往组件元素命名冲突了”么?...如果我们用BEM,要覆盖样式很简单:找到要覆盖样式元素,得知它,在媒体查询中,用它名作为选择器,写下覆盖样式,样式就覆盖成功了,不需要担心前面样式权重过大。

    1.2K20

    从element-ui源码来看BEM实现

    BEM代表“块(block),元素(element),修饰符(modifier)”,开发组件过程中经常使用这三个实体,而在选择器中,这三个实体由以下符号表示扩展关系: - 中划线:仅作为连字符使用...__ 双下划线:双下划线用来连接块和块元素。 _ 单下划线:单下划线用来描述一个块或者块元素一种状态。...,我们应该把关注点放在if和eles分支上,为什么会出现hitAllSpecialNestRule函数判断分支,原因是在修饰符或者其他mixin中嵌套一个元素element,会出现修饰符在前,元素在后编译结果...,接下来三个函数,分别判断了是否存在修饰符、flag例如(.isCenter)、伪情况。...利用刚刚介绍函数,以及块、元素修饰符实现代码,在sass中已经能非常高效率并且优雅基于BEM规范代码了。

    1.9K30

    团队分享,Bem规范调研及实践

    BEM 是 BlockElementModifier 缩写 ,其中B 表示块(block)、E 表示元素(element)、M 表示修饰符(modifier)。 这三个部分通常使用__ 与--连接。...即: .块__元素--修饰符{} Block:代表了一个独立块级元素,可以理解为功能组件块。...事实上: 从右到左进行匹配,遍历页面上每个 li元素确定其父元素 #ul-id li {} 所以不要让你css超过三层。...在 css 定义时,也必须依靠层级选择器限定约束作用域,以避免跨组件样式污染。...这有悖BEM命名规范,BEM命名中只包含三个部分,元素只占其中一部分,所以不能出现多个元素情况。这样约定可以防止当层级很深命名过长问题。

    79610

    这些 CSS 命名规范将省下你大把调试时间(文末有福利)

    总的来说,这些 CSS 命名规范试图解决 3 问题: 仅从名字就能知道一个 CSS 选择器具体做什么 从名字能大致清楚一个选择器可以在哪里使用 从 CSS 名称可以看出它们之间联系 不知你是否见过这样...向 5 岁小孩解释 BEM 规范 BEM 规范试图将整个用户界面分解成一个个小重复使用组件。...这些 head、feet 和 arms 都是组件中元素。它们可视作组件(child components),也就是组件组成部分。...如果使用 BEM 命名规范的话,这些元素都可以通过在两条下划线后加上元素名称产生。...如果使用 BEM 的话,这些修饰符都可以通过在两条连字符后加上元素产生。

    927100

    如何更优雅编写CSS代码

    使用嵌套可以使你花费更少时间编写复杂css选择器。 分块和导入 当涉及到可维护性和可读性上时,不可能将所有的代码都保存在一个大文件中。...CSS 代码组织方案:BEM 我曾经无数次给我css提供我能想到全部术语,你懂,比如这些命名:.button .page-1 .page-2 。我经常不知道如何进行命名。...BEM 帮助我们解决该问题。BEM 是一种命名约定,表示“块 元素 修饰符”。 该方案可以使我们代码更加结构化,更加模块化和更大可复用性。现在我解释下什么是块、元素修饰符。...示例:.post--important,.post__btn--disabled 注意点 当你使用 BEM 时,你命名只有 class 并且只使用 class ,没有 id ,没有标签,就只使用...这种情况请使用具体 class 替代。 是的,你 HTML 文件将会因为 BEM 变得臃肿,但比起BEM带来好处,这只是一个无足轻重小缺点。 举个例子 这是给你练习。

    1.9K10

    浅谈 Css 规范

    使用小写字母命名元素修饰符修饰符必须紧跟着元素或块。 修饰符可以使用中划线(_)或破折号(-)进行命名。...避免样式冲突: BEM 命名约定避免了样式冲突,每个块和元素都有独立命名空间,不会受到外部样式影响。 缺点: 命名冗长: BEM 命名规范较为严格,可能导致过长,增加了代码量和阅读难度。...,使用 OOCSS的话,需要创建更多 “原子类”,并且每个样式对应一个,这样可以重复使用这些样式,避免写相同样式。...无语义化: 根据两个核心分离原则,我们代码中不可能会出现 .btn 这样一个搞定样式情况,我们只会拆分很细,但同时我们又需要 .btn 这样业务。...命名规则 SMACSS 推荐使用前缀区分不同部件: 基础规则是直接作用于元素,因此不需要前缀,一般使用元素、属性、伪选择器。不应该出: class、ID、!important 等。

    9310

    CSS — BEM 命名规范

    前言: 最近团队要考虑代码风格统一 1 什么是 BEM 命名规范 Bem 是块(block)、元素(element)、修饰符(modifier)简写,由 Yandex 团队提出一种前端 CSS 命名方法论...__ 双下划线:双下划线用来连接块和块元素 _ 单下划线:单下划线用来描述一个块或者块元素一种状态 BEM 是一个简单又非常有用命名约定。...使用两个连字符和下划线不是一个,是为了让你自己块可以用单个连字符界定。...在 css 定义时,也必须依靠层级选择器限定约束作用域,以避免跨组件样式污染。...而且,一般来说会使用通过 LESS/SASS 等预处理器语言编写 CSS,利用其语言特性书写起来要简单很多。

    2.7K31

    CSS模块化演进

    一般来说,它们基于 CSS 扩展了一套属于自己 DSL,解决我们书写 CSS 时难以解决问题: 语法不够强大,比如无法嵌套书写导致模块化开发中需要书写很多重复选择器 没有变量和合理样式复用机制...BEM BEM 即Block Element Modifier;命名规则: Block__Element—Modifier Block 所属组件名称 Element 组件内元素名称 Modifier...元素或组件修饰符 其核心思想就是组件化。...首先一个页面可以按层级依次划分未多个组件,其次就是单独标记这些元素BEM通过简单块、元素修饰符约束规则确保唯一,同时将选择器语义化提升了一个新高度。...从开发体验上来看,这种做法让开发者不必在命名上小心翼翼,直接使用随机编译生成唯一标识即可。

    1.7K20

    「前端工程四部曲」模块化前世今生(下)

    BEM意思就是块(block)、元素(element)、修饰符(modifier),是由 Yandex 团队提出一种前端命名方法论。...- 符号,这个是为了让你自己视图块可以用单个连字符界定,__ 代表元素,-- 代表修饰符。...「优点:」 BEM 优点在于所产生 CSS 都只使用一个类别选择器,可以避免传统做法中由于多个类别选择器嵌套带来复杂属性级联问题。...而且需要巧妙运用,因为特定要求(强调重复使用选择器,避免使用ID选择器)如果运用不得当,反而可能会造成后续维护困难,所以使用此方案最好写上说明文档。...data-v 开头自定义属性, CSS 为其添加样式时,通过+属性选择器方法避免命名冲突,从而实现模块化。

    72220

    怎样才能写出更好 CSS

    如果你想了解更多信息,请查看相应文档 戳这里。文档写得很好,且易于理解。 2. 组织 CSS 代码:BEM 方法论 我记不清曾经多少次在CSS使用包揽一切名字了。...BEM 是一种命名约定,是英文 Block Element Modifier(块元素修饰符缩写。 这种方法可以使我们代码结构化,并提高模块化和可重用性。现在让我们说一说什么是块、元素修饰符。...命名:块+ __ +元素:.block__element 示例:.post__author、.post__date、.post__text 修饰符 现在窗户已经建好了,但是你可能想要一个绿色或一个小窗户...BEM 时候,你可以用且只能用命名。...是的,你 HTML 文件会超负荷,但是不用担心,与 BEM 带来好处相比,这只是个小小缺点。 示例 以下是一个练习。你可以去你最喜欢或最常用网站,然后想想看哪些是块、元素修饰符

    1.7K10

    两种 CSS 方法论 「详细分析」

    BEM 将页面的名分为块(Block)、元素(Element)、修饰符(Modifier)。...通过上面的示例可以看出,块与元素是通过两个下划线(__)连接元素修饰符之间是通过两个短横线(--)连接。...工具作用是帮助程序减少一些重复代码,并提供一致实现。 命名规则:u-[sm-|md-|lg-]。...命名规则:[-][-后代名][--修饰符],这样命名方式,在编写 HTML 和 CSS 时候有几个好处: 有助于区分组件元素,后代元素,以及用来修饰; 降级重复几率...,欢迎关注我公众号「更了不起前端」  复制代码 组件--修饰符 修饰符是一种表示组件特定状态修饰符名称同样使用小驼峰规则命名,并且和组件直接需要用两个短横线(-

    97010

    如何写出一套可维护CSS库?

    BEMCSS BEM 分别代表着:Block(块)、Element(元素/块/组成部分)、Modifier(修饰符),是一种组件化 CSS 命名方法和规范,由俄罗斯 Yandex 团队所提出。...[命名空间]-[组件/块]__[元素/元素]--[修饰符] 情景 需要构建一个 search 组件。...块内部元素,都被认为是块元素。一个块中元素必须用级块名称作为前缀,因此不能写成:block__elem1__elem2。...个人建议可以尝试使用 BEM 规范来书写代码。 BEM 命名会使得 Class 变长,但经过 GZIP 等压缩后,文件体积其实并无太大影响。...,通过在html代码中添加添加属性,不必再去找相对应选择器css代码修改样式。

    71230
    领券