Twitter bootstrap 少-如果孩子存在,回到祖父母那里

Twitter bootstrap 少-如果孩子存在,回到祖父母那里,twitter-bootstrap,less,chaining,nested,Twitter Bootstrap,Less,Chaining,Nested,这个让我发疯了 我在BootstrapV3中有标签组件。 标签具有标签危险(红色)、标签成功(绿色)等修改器。 需要区分标签是否为链接 我有两个列表,一个有锚作为子元素,另一个没有: <ul id="labels1"> <li>Success</li> <li>Danger</li> 下一件事是-我有一个较少的母版,我定义: #labels1 { li { .label; &am

这个让我发疯了

我在BootstrapV3中有标签组件。 标签具有标签危险(红色)、标签成功(绿色)等修改器。 需要区分标签是否为链接

我有两个列表,一个有锚作为子元素,另一个没有:

<ul id="labels1">
    <li>Success</li>
    <li>Danger</li>
下一件事是-我有一个较少的母版,我定义:

#labels1 {
    li {
        .label;
        &:first-child {
            .label-success;
        }
        &:last-child {
            .label-danger;
        }
    }
}
在这部分之前,一切都很好:

#labels2 {
    li {
        a {
            .label;
        }
        &:first-child {
            a {
                .label-success;
            }
        }
        &:last-child {
            a {
                .label-danger;
            }
        }
    }
}
没有办法通过LESS判断我正在设计
元素的样式,因此它应该有一个更暗的颜色

如果我这样做:

.label {
  display: inline;
  padding: .25em .6em;
  font-size: 75%;
  font-weight: 500;
  color: #fff;
  line-height: 1;
  vertical-align: middle;
  white-space: nowrap;
  text-align: center;
  background-color: @grayLight;
  border-radius: .25em;

  a,
  a:hover,
  a:focus,
  a&,
  a&:hover,
  a&:focus {
    color: #fff;
    text-decoration: none;
    cursor: pointer;
  }
}

.label-danger {
  background-color: @label-danger-bg;
  a& {
    background-color: darken(@label-danger-bg, 10%);
  }
}
.label-success {
  background-color: @label-success-bg;
  a& {
    background-color: darken(@label-success-bg, 10%);
  }
}
#labels2 {
    li {
        &:first-child {
            .label;
            .label-success;
        }
        //  etc
    }
}
它只会产生正常的颜色(不是那些较暗的)

我想做的是为LESS中不存在的东西找到一个解决方法(祖父母选择器匹配链):


有人知道在这种情况下该怎么办吗?

我认为您的规则中不需要“&”。应该是:

.label-danger {
  background-color: @label-danger-bg;
  a {
    background-color: darken(@label-danger-bg, 10%);
  }
}
.label-success {
  background-color: @label-success-bg;
  a {
    background-color: darken(@label-success-bg, 10%);
  }
}
那么#标签1的规则应该适用于以下两种情况:

#labels1, #labels2 {
    li {
        .label;
        &:first-child {
            .label-success;
        }
        &:last-child {
            .label-danger;
        }
    }
}

您是否要求
a&
labels.less中的那样?
.label-danger {
  background-color: @label-danger-bg;
  a {
    background-color: darken(@label-danger-bg, 10%);
  }
}
.label-success {
  background-color: @label-success-bg;
  a {
    background-color: darken(@label-success-bg, 10%);
  }
}
#labels1, #labels2 {
    li {
        .label;
        &:first-child {
            .label-success;
        }
        &:last-child {
            .label-danger;
        }
    }
}