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

为什么在嵌套扩展类(.button { &_red{} })时,`extend`不起作用?

在嵌套扩展类时,extend不起作用的原因是因为extend只能扩展选择器,而不能扩展类。在Sass或Less等预处理器中,嵌套扩展类的语法是通过使用&符号来引用父选择器的方式实现的。但是,当使用extend时,它会将选择器直接复制到目标选择器中,而不会将父选择器的引用传递给目标选择器。

例如,考虑以下示例代码:

代码语言:txt
复制
.button {
  color: blue;

  &_red {
    color: red;
  }
}

.error {
  @extend .button_red;
}

在上面的代码中,我们希望.error类继承.button_red类的样式。然而,由于extend无法扩展类,所以.error类不会继承.button_red类的样式。

解决这个问题的一种方法是使用混合器(mixins)来实现类似的效果。混合器允许我们将一组样式定义为可重用的代码块,并在需要时将其混合到其他选择器中。以下是使用混合器来实现上述示例的代码:

代码语言:txt
复制
@mixin button-red {
  color: red;
}

.button {
  color: blue;

  &_red {
    @include button-red;
  }
}

.error {
  @include button-red;
}

在上面的代码中,我们定义了一个名为button-red的混合器,并在.button_red.error选择器中使用@include指令将其混合进去。这样,.error类就能够继承.button_red类的样式了。

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

  • 腾讯云官网:https://cloud.tencent.com/
  • 云服务器(CVM):https://cloud.tencent.com/product/cvm
  • 云数据库 MySQL 版:https://cloud.tencent.com/product/cdb_mysql
  • 人工智能平台(AI Lab):https://cloud.tencent.com/product/ailab
  • 云存储(COS):https://cloud.tencent.com/product/cos
  • 腾讯云区块链服务(Tencent Blockchain):https://cloud.tencent.com/product/tencentblockchain
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

CSS预处理器之Sass

{ color: red; } /*# sourceMappingURL=index.css.map */ 2.3 属性嵌套 可以使用嵌套来组织 CSS 属性 语法 .container {...{ @extend %button-base; background-color: #007bff; color: #fff; } .button-secondary { @extend...这意味着文件的任何位置都可以使用该变量,包括嵌套的规则块内部。 局部作用域 局部作用域是指在特定的规则块内部定义的变量,只能在该规则块内部使用。这些变量规则块外部是不可见的。...当规则块嵌套,内部规则块可以访问外部规则块的变量,但外部规则块无法访问内部规则块的变量。...: $color; // 可以访问全局变量 width: $width; // 错误,无法访问外部规则块的变量 } } 全局作用域的另一种定义方法 局部作用域中定义一个变量,它默认只在当前作用域内有效

16410
  • CPU都被干冒烟了,拥抱HarmonyOS第二天,自定义组件

    :页面每次隐藏触发 onBackPress:用户点击返回按钮触发 自定义组件生命周期 aboutToAppear:组件即将出现时触发, build 之前 aboutToDisappear:组件即将销毁触发...Button('add counter') .onClick(this.myClickHandler.bind(this)) 组件嵌套 组件嵌套的方式,就是父组件后面添加 {},所有的容器组件都支持嵌套子组件...,也可以定义全局,全局定义需要在方法名之前添加 function 关键字 // 全局 @Styles function functionName() { ... } // 组件内 @Component...我们可以使用 @Extend 扩展原生组件样式 @Extend(UIComponentName) function functionName { ... } @Extend 仅支持全局定义 @...无法观测到更深层次的数据变化,因此层级结构复杂的数据类型的变化无法使用 @State 监听到完整的数据变化 嵌套对象的属性变化需要使用 @Observed 与 @ObjectLink 来观测数据的变化

    27200

    Sass(Scss)、Less的区别与选择 + 基本使用

    为什么要使用 CSS 预处理器 原因 CSS 仅仅是一个标记语言,不可以自定义变量,不可以引用。 语法不够强大,比如无法嵌套书写,导致模块化开发中需要书写很多重复的选择器。...预编译很容易造成后代选择器的滥用 何时使用 CSS 预处理器 系统级框架开发或者比较大型复杂的样式设计时 持续维护集成 复用型组件开发 Sass/Scss 与 Less 对比 基本介绍 Sass/Scss...相同之处 都属于 CSS 预处理器 目的是使得 CSS 开发更灵活和更强大 扩展的 CSS 功能特性基本相同 区别之处 Sass 是服务端处理的,以前是 Ruby,现在是 Dart-Sass 或 Node-Sass...压缩模式也会保留 */ 混入(Mixin) // Less // .bordered 所包含的属性就将同时出现在 #menu a 和 .post a 中了。....inline, nav ul { color: red; } // https://lesscss.org/features/#extend-feature 命名空间和访问符 // Less (

    1.4K00

    styled-components不完全手册

    我们能所学到的知识点 ❝ 初始化项目 基本用法 使用 Props 扩展样式 嵌套样式 扩展 React 组件 CSS变量 添加主题 处理动画 使用 as 属性 默认属性 ❞ ❝Styled-components...[3] 是一个库,它允许你构建 Reactjs 自定义组件,使用 JavaScript 写 CSS。... 扩展按钮!...嵌套样式 当然,现在的前端样式已经不满足之前介绍的针对单个元素的样式封装。我们还可以拥有像less/scss一样的样式嵌套。这样我们就可以一个样式逻辑种处理其内部的多个子元素。实现更好的封装。...当样式化 SVG 文档,这可能特别重要,因为 html 选择器不起作用。 ❞ 然后,我们可以styled components定义的组件种使用这个css变量。

    9610

    HarmonyOS学习路之方舟开发框架—学习ArkTS语言(基本语法 五)

    全局定义方法名前面添加function关键字,组件内定义则不需要添加function关键字。...装饰器:定义扩展组件样式 在前文的示例中,可以使用@Styles用于样式的扩展@Styles的基础上,我们提供了@Extend,用于扩展原生组件样式。...语法 @Extend(UIComponentName) function functionName { ... } 用规则 和@Styles不同,@Extend仅支持定义全局,不支持组件内部定义。...// @Extend(Text)可以支持Text的私有属性fontColor @Extend(Text) function fancy () { .fontColor(Color.Red) } //...Button处于第一个组件,默认获焦,生效focused指定的粉色样式。按压显示为pressed态指定的黑色。如果在Button前再放一个组件,使其不处于获焦态,就会生效normal态的黄色。

    37750

    Scss (Sass) 语法简介

    Scss (Sass) 语法简介 什么是 Scss Scss 是 CSS 的扩展保证兼容性的基础上, 允许使用变量、 嵌套、 混合、 导入等特性, 在编写大量的 CSS 文件很有帮助。...特色 完全兼容 CSS3 语法上扩展了变量、 嵌套以及混合等 操作颜色以及其它的有用的函数 高级特性, 比如针对库的控制声明 格式良好并且可控制的输出 Firebug 集成 基本语法 Scss 是...CSS3 的扩展 CSS3 的基础上, 添加了下面几个重要的特性: 变量 Scss 使用 $ 符号来定义变量, 支持的变量类型有 数字(可带单位)、 字符串 、颜色 以及 布尔值 等, 示例如下:...CSS 本身支持嵌套, 但是并不直观, Scss 提供了更加直观的嵌套语法: nav { ul { margin: 0; padding: 0; list-style: none....message; border-color: green; } .error { @extend .message; border-color: red; } .warning {

    79510

    Sass 基础(八)

    默认情况下,它会寻找 Sass 文件并         直接引入, 但是,少数几种情况下,它会被编译成 CSS 的 @import 规则:         如果文件的扩展名师 .css         ...    Sass 中的@extend 是用来扩展选择器或者占位符,比如     .error{       border:1px #f00;       background-color...:       @extend 不止扩展选择器,还可以扩展任何选择器,比如 .special.cool, a:hover, 或 a.user[href^="http://"] 例如       ...当你选择器嵌套多层之     后,想让某个选择器跳出,此时就可以使用 @at-root。...Sass 中是用来调试的,当你的 Sass 的源码中使用了     @debug 指令之后,Sass 代码在编译出错命令终端会输出你设置的提示 Bug:     @debug 10em +

    97590

    openwrt外网web管理_OpenAPI

    instance 对象内创建与 addon 模块名称一致的新命名空间是个惯例。这就是为什么我们 instance.oepetstore 设置一个空 dictionary。...这也解释了为什么显示 instance.oepetstore.HomePage , 是个空白区域, 它根本没有任何内容。...$el 当你部件中重载init(),必须以父部件作为第一参数传入,并调用传入给this....这就是为什么,大部分时间里,你定位部件里的 HTML ,必须限制 jQuery 选择器的选择范围。 出于同样的逻辑,你也可以猜测到,不能够部件里使用 HTML id。...通用的应用程序和模块里,id限制了组件的可复用性,往往使代码更加脆弱。几乎所有时候,id可为空,使用 CSS或保留一个DOM节点引用,或嵌套在一个jQuery的元素内去引用。

    6.3K10

    【编码规范】Airbnb CSS u002F Sass 编码风格指南

    名建议使用破折号代替驼峰法。如果你使用 BEM,也可以使用下划线(参见下面的 OOCSS 和 BEM)。 不要使用 ID 选择器。 一个规则声明中应用了多个选择器,每个选择器独占一行。...JavaScript 钩子 避免 CSS 和 JavaScript 中绑定相同的。否则开发者重构通常会出现以下情况:轻则浪费时间在对照查找每个要改变的,重则因为害怕破坏功能而不敢作出更改。...我们推荐创建用于特定 JavaScript 的,添加 .js- 前缀: Request to...Book 边框 定义无边框样式,使用 0 代替 none。...扩展指令 应避免使用 @extend 指令,因为它并不直观,而且具有潜在风险,特别是用在嵌套选择器的时候。即便是顶层占位符选择器使用扩展,如果选择器的顺序最终会改变,也可能会导致问题。

    2.4K20

    HarmonyOS学习路之方舟开发框架—学习ArkTS语言(基本语法 一)

    当前,ArkTSTS的基础上主要扩展了如下能力: 基本语法:ArkTS定义了声明式UI描述、自定义组件和动态扩展UI元素的能力,再配合ArkUI开发框架中的系统组件及其相关的事件方法、属性方法等共同构成了...基本语法概述 初步了解了ArkTS语言之后,我们以一个具体的示例来说明ArkTS的基本组成。如下图所示,当开发者点击按钮,文本内容从“Hello World”变为“Hello ArkUI”。...事件方法:组件可以通过链式调用设置多个事件的响应逻辑,如跟随Button后面的onClick()。...@Extend/@Style:扩展内置组件和封装属性样式,更灵活地组合内置组件。 stateStyles:多态样式,可以依据组件的内部状态的不同,设置不同样式。...) } 容器组件均支持子组件配置,可以实现相对复杂的多级嵌套

    86720

    (第二季)Vue2.0-全局API

    Vue.extend构造器的延伸 Vue.extend 返回的是一个“扩展实例构造器”,也就是预设了部分选项的Vue实例构造器。...经常服务于Vue.component用来生成组件,可以简单理解为当在模板中遇到该组件名称作为标签的自定义元素,会自动调用“扩展实例构造器”来生产组件实例,并挂载到自定义元素上。...当你利用索引直接设置一个项,vue不会为我们自动更新。 当你修改数组的长度,vue不会为我们自动更新。...组件可以扩展 HTML 元素,封装可重用的代码。较高层面上,组件是自定义元素,Vue.js 的编译器为它添加特殊功能。...在有些情况下,组件也可以表现为用 is 特性进行了扩展的原生 HTML 元素。

    90510

    扫码

    添加站长 进交流群

    领取专属 10元无门槛券

    手把手带您无忧上云

    扫码加入开发者社群

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭
      领券