当前位置: 首页 > 面试题库 >

SCSS扩展嵌套选择器并覆盖嵌套规则集

萧树
2023-03-14
问题内容

好的,所以我有一个带有嵌套选择器的占位符:

%block {
  .title {
    font-size:12px;
  }
}

我想扩展它并添加到.title类中:

.superblock {
  @extend %block;
  .title {
    font-weight:bold;
  }
}

我想要的答案是这样的:

.superblock .title {
  font-size: 12px;
  font-weight: bold; }

但是,我得到的答案是这样的:

.superblock .title {
  font-size: 12px; }

.superblock .title {
  font-weight: bold; }

我是在做错什么,还是这只是工作原理?为了澄清,我想将其合并。如果我直接在中添加一些内容,.superblock并且像添加了.superblock2同样扩展%block的其他内容一样,则它们合并不会出现任何问题。


问题答案:

Sass没有“合并”重复选择器的功能。编译CSS之后,您需要找到另一个实用程序来执行此操作。

@extend指令不仅是使用类代替mixin的一种方式(类似于LESS风格的mixin调用)。@extend当您扩展普通类而不是扩展类时,为什么工作的方式变得很清楚:

.block {
  font-size:12px;
}

.foo {
    @extend .block;
    font-weight: bold;
}

输出:

.block, .foo {
  font-size: 12px;
}

.foo {
  font-weight: bold;
}

使用扩展类只会抑制原始类名的发出。

既然您已经了解了为什么能如此@extend运作, 您是否还想要@extend提供什么? 如果答案是否定的,那么您需要使用mixin:

@mixin block {
    // styles
    .title {
        font-size: 12px;
        @content;
    }
}

.superblock {
    @include block {
        font-weight: bold;
    }
}

输出:

.superblock .title {
  font-size: 12px;
  font-weight: bold;
}


 类似资料:
  • 描述 (Description) 使用extend选择器匹配嵌套选择器。 例子 (Example) 以下示例演示了如何在LESS文件中使用扩展嵌套选择器 - extend_syntax.htm <!doctype html> <head> <link rel = "stylesheet" href = "style.css" type = "text/css" /> </h

  • 在使用标准CSS时,要为多层嵌套的元素定义样式,要么使用后代选择器从外到内的嵌套定义,要么给这个元素加上类名或 id 来定义。这样的写法虽然很好理解,但维护起来很不方便,因为无法清晰了解到样式之间的关系。 在Less中,嵌套规则使这个问题迎刃而解。嵌套规则允许在一个选择器中嵌套另一个选择器,这更容易设计出精简的代码,并且样式之间的关系一目了然。假设以下HTML 代码片段: <header>   

  • css中重复写选择器是非常恼人的。如果要写一大串指向页面中同一块的样式时,往往需要 一遍又一遍地写同一个ID: #content article h1 { color: #333 } #content article p { margin-bottom: 1.4em } #content aside { background-color: #EEE } 像这种情况,sass可以让你只写一遍,且

  • 描述 (Description) 它是一组CSS属性,允许将一个类的属性用于另一个类,并包含类名作为其属性。 在LESS中,您可以使用类或id选择器以与CSS样式相同的方式声明mixin。 它可以存储多个值,并且可以在必要时在代码中重用。 例子 (Example) 以下示例演示了在LESS文件中使用嵌套规则 - <html> <head> <title>Nested Rules<

  • 4.3 嵌套组合与扩展 VimL 虽然只提供了列表与字典两种数据结构,但通过列表与字典的合理组合,几乎能表 达任意复杂的数据结构。这与许多其他流行的脚本语言(如 python)的思想如出一辙。 本节就讨论在 VimL 中如何用列表与字典表示常用数据结构。 堆栈与队列 堆栈是所谓先进后出的结构,队列是先进先出的结构。这可以直接用一个 list 表示, 因为 list 相当于个动态数组,支持随意在两端

  • 问题内容: 跨浏览器的支持似乎有所不同。 检查链接] Firefox:黑底白字。 Opera,Chrome,IE9:蓝色,黑色文字。 哪个是正确的,我将如何使其一致? 编码 ​ 有趣的是,似乎在条件中嵌套媒体查询似乎确实有效。 例如: Index.html importer.css media.css 问题答案: 对于那些只是寻找“哪些浏览器支持@media规则嵌套?”答案的人,简短的答案是所有现