【问题标题】:Nested LESS statements when dealing with the :before and :after sudo classes处理 :before 和 :after 伪类时的嵌套 LESS 语句
【发布时间】:2015-07-11 13:09:41
【问题描述】:

我有以下 LESS 语句尝试在 :after sudo 类上放置彩色背景:

.hexagon:after {
  content: "";
  position: absolute;
  bottom: -50px;
  left: 0;
  width: 0;
  height: 0;
  border-left: 100px solid transparent;
  border-right: 100px solid transparent;
  &.red-light {
    border-top: 50px solid @brand-red-light;
  }
  &.red {
    border-top: 50px solid @brand-red;
  }
  &.red-dark {
    border-top: 50px solid @brand-red-dark;
  }
  &.freen-light {
    border-top: 50px solid @brand-green-light;
  }
  &.green {
    border-top: 50px solid @brand-green;
  }
  &.green-dark {
    border-top: 50px solid @brand-green-dark;
  }
}

只有嵌套 LESS 语句中的任何内容,例如:border-top: 50px solid @brand-red-light 在渲染时不会出现在屏幕上。我试过取出“&”符号并用“>”替换它,但没有运气。我正在尝试用 CSS 绘制一个六边形。

【问题讨论】:

  • 将你的 :after 内容放入一个 &:after {} 的子元素中,这样可能会起作用
  • freen-light 应该是green-light
  • 如果饥饿之星的回答不能解决您的问题,请在问题中添加 HTML 标记。

标签: css class less


【解决方案1】:

您的 LESS 正在创建以下 CSS 选择器:

.hexagon:after
.hexagon:after.red-light
.hexagon:after.red
.hexagon:after.red-dark
.hexagon:after.green-light
.hexagon:after.green
.hexagon:after.green-dark

我认为你的意思是生成这个:

.hexagon:after
.hexagon.red-light:after
.hexagon.red:after
.hexagon.red-dark:after
.hexagon.green-light:after
.hexagon.green:after
.hexagon.green-dark:after

如果是这样,请将您的 LESS 重新配置为以下内容:

.hexagon {
    &:after {
        content: "";
        position: absolute;
        bottom: -50px;
        left: 0;
        width: 0;
        height: 0;
        border-left: 100px solid transparent;
        border-right: 100px solid transparent;
    }    
    &.red-light:after {
        border-top: 50px solid @brand-red-light;
    }
    &.red:after {
        border-top: 50px solid @brand-red;
    }
    &.red-dark:after {
        border-top: 50px solid @brand-red-dark;
    }
    &.green-light:after {
        border-top: 50px solid @brand-green-light;
    }
    &.green:after {
        border-top: 50px solid @brand-green;
    }
    &.green-dark:after {
        border-top: 50px solid @brand-green-dark;
    }
}

【讨论】:

  • 这正是我想要的。对不起,我的问题令人困惑。你的答案是如此简单和优雅。我不知道 sudo 类可以像你一样表达。非常感谢!!!
  • 没问题,在Less中&代表当前选择器父/路径。将其视为包含当前选择器并在每次嵌套时添加到其中的变量。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-04-02
  • 2020-01-10
  • 2011-10-20
  • 2012-07-06
  • 2020-09-20
  • 2018-07-30
  • 2018-04-04
相关资源
最近更新 更多