これは私を夢中にさせています。
ブートストラップ v3 にラベル コンポーネントがあります。ラベルには、label-danger (赤)、label-success (緑) などの修飾子があります。ラベルがリンクかどうかを区別する必要があります。
私は2つのリストを持っています.1つは子要素としてアンカーを持ち、他は持っていません:
<ul id="labels1">
<li>Success</li>
<li>Danger</li>
<ul id="labels2">
<li><a href="#">Success</a></li>
<li><a href="#">Danger</a></li>
</ul>
次は次のような labels.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%);
}
}
次は、次のように定義する LESS マスターシートがあります。
#labels1 {
li {
.label;
&:first-child {
.label-success;
}
&:last-child {
.label-danger;
}
}
}
そして、この部分まではOKです:
#labels2 {
li {
a {
.label;
}
&:first-child {
a {
.label-success;
}
}
&:last-child {
a {
.label-danger;
}
}
}
}
要素をスタイリングしていることを LESS で伝える方法がないa
ため、色を暗くする必要があります。
私がこのようなことをすると:
#labels2 {
li {
&:first-child {
.label;
.label-success;
}
// etc
}
}
通常の色が生成されます (暗い色ではありません)。
私がやりたいことは、LESS に存在しない何かに対する回避策を見つけることです (チェーン内の祖父母セレクターのマッチング):
.label-success {
background-color: @label-success-bg;
a {
&& { // go 2 levels up and style the .label-success
// if LESS can dig to this rule - eg. if there technically
// exists an anchor inside the li.
background-color: darken(@label-success-bg, 10%);
}
}
}
そのような場合に何をすべきか誰にも分かりますか?