Less - Mixin a class 附加到父级
Less - Mixin a class that is attached to a parent
对于某些上下文,我使用 bootstrap nav pills as triggers for bootstrap collapsibles。
这就是 nav pills 的 bootstraps less 的样子(简化)
.nav-pills {
> li {
// Active state
&.active > a {
&,
&:hover,
&:focus {
color: @nav-pills-active-link-hover-color;
background-color: @nav-pills-active-link-hover-bg;
}
}
}
}
当可折叠项被折叠时,它会向触发器添加一个 collapsed
class(在本例中为 .nav-pills > li
元素)。我想做的是,当它没有 class .collapsed
.
时,只需将 .active
class 应用于导航丸
我试过了
:not(.collapsed) { .active; }
:not(.collapsed) { &:extend(.active); }
:not(.collapsed) { &:extend(.active all); }
但是其中 none 会产生我想要的结果。第一个甚至无法编译。
有办法实现吗?
更新
@import (reference) "bower_components/bootstrap/less/bootstrap.less";
.nav-pills {
> li > a:not(.collapsed) {
&:extend(.nav-pills > li.active > a all);
}
}
输出:
.nav-pills > li > a:not(.collapsed),
.nav-pills > li > a:not(.collapsed):hover,
.nav-pills > li > a:not(.collapsed):focus {
color: #ffffff;
background-color: #337ab7;
}
似乎 a:not(.collapsed)
不匹配没有 class
属性的 a
所以你用 class="collapsed"
:
启动你的 HTML
<ul class="nav nav-pills">
<li role="presentation"><a class="collapsed" data-toggle="collapse" data-parent="#tabs" href="#tab1">Tab 1</a></li>
<li role="presentation"><a class="collapsed" data-toggle="collapse" data-parent="#tabs" href="#tab2">Tab 2</a></li>
<li role="presentation"><a class="collapsed" data-toggle="collapse" data-parent="#tabs" href="#tab3">Tab 3</a></li>
</ul>
结束更新
我不确定我是否理解你的问题。我认为您可以使用 collapse events 和 jQuery:
$('#tabs').on('show.bs.collapse', function (event)
{
$('[href="#' + $(event.target).attr('id') + '"]').parent().addClass('active');
});
$('#tabs').on('hide.bs.collapse', function (event)
{
$('[href="#' + $(event.target).attr('id') + '"]').parent().removeClass('active');
});
对于某些上下文,我使用 bootstrap nav pills as triggers for bootstrap collapsibles。
这就是 nav pills 的 bootstraps less 的样子(简化)
.nav-pills {
> li {
// Active state
&.active > a {
&,
&:hover,
&:focus {
color: @nav-pills-active-link-hover-color;
background-color: @nav-pills-active-link-hover-bg;
}
}
}
}
当可折叠项被折叠时,它会向触发器添加一个 collapsed
class(在本例中为 .nav-pills > li
元素)。我想做的是,当它没有 class .collapsed
.
.active
class 应用于导航丸
我试过了
:not(.collapsed) { .active; }
:not(.collapsed) { &:extend(.active); }
:not(.collapsed) { &:extend(.active all); }
但是其中 none 会产生我想要的结果。第一个甚至无法编译。
有办法实现吗?
更新
@import (reference) "bower_components/bootstrap/less/bootstrap.less";
.nav-pills {
> li > a:not(.collapsed) {
&:extend(.nav-pills > li.active > a all);
}
}
输出:
.nav-pills > li > a:not(.collapsed),
.nav-pills > li > a:not(.collapsed):hover,
.nav-pills > li > a:not(.collapsed):focus {
color: #ffffff;
background-color: #337ab7;
}
似乎 a:not(.collapsed)
不匹配没有 class
属性的 a
所以你用 class="collapsed"
:
<ul class="nav nav-pills">
<li role="presentation"><a class="collapsed" data-toggle="collapse" data-parent="#tabs" href="#tab1">Tab 1</a></li>
<li role="presentation"><a class="collapsed" data-toggle="collapse" data-parent="#tabs" href="#tab2">Tab 2</a></li>
<li role="presentation"><a class="collapsed" data-toggle="collapse" data-parent="#tabs" href="#tab3">Tab 3</a></li>
</ul>
结束更新
我不确定我是否理解你的问题。我认为您可以使用 collapse events 和 jQuery:
$('#tabs').on('show.bs.collapse', function (event)
{
$('[href="#' + $(event.target).attr('id') + '"]').parent().addClass('active');
});
$('#tabs').on('hide.bs.collapse', function (event)
{
$('[href="#' + $(event.target).attr('id') + '"]').parent().removeClass('active');
});