首页 > 文章列表 > 动态样式类名为何失效:嵌套与并列选择器的区别在哪里?

动态样式类名为何失效:嵌套与并列选择器的区别在哪里?

380 2025-01-13

动态样式类名为何失效:嵌套与并列选择器的区别在哪里?

动态样式类名不起作用:嵌套与并列问题

在使用动态样式类名时,有时会遇到尽管触发事件但样式却没有改变的情况。这可能是由于使用了后代选择器而造成的。

以提供的代码为例:

<div class="content" :class="{ active:isCollapse }">

<style>块中,嵌套的<active>类是content类的后代。这意味着<active>类仅在<content>元素包含<active>子元素时才能生效。

为了解决这个问题,需要将<content>与<active>类编写为并列,而不是嵌套方式:

.content.active { padding-left: 65px; }

同级选择器与后代选择器

  • 同级选择器(B.A):选择与另一个元素(A)位于同一级别的元素。在这种情况下,使用点(.)作为选择器连接符,例如.content.active。
  • 后代选择器(A B):选择A元素内的所有B元素。在这种情况下,使用空格作为选择器连接符,例如.content .active。

在动态样式类名中,使用同级选择器更合适,因为它指定当content元素具有active类时应用样式,而不是当content元素包含active子元素时应用样式。

Sass/SCSS 同级写法

在 Sass/SCSS 中,可以使用&符表示同级关系:

&.active { padding-left: 65px; }

这将编译为.content.active { padding-left: 65px; }。

来源:1730466554