我有一个包含10个按钮的按钮组。在某些屏幕宽度(响应)下,我使用媒体查询隐藏其中一些按钮。
问题是,如果我隐藏最后一个按钮,新的最后一个按钮的边缘不会变圆。
这是一个难以描述的问题,但很容易在Fiddle中显示。
我的问题:如何将圆角添加到按钮组中的最后一个可见按钮,而不是简单地将最后一个按钮添加到当前。
根据SO的规则,来自Fiddle的代码:
<div class="btn-group" id="sortBtns" role="group">
<button type="button" class="btn btn-default">First</button>
<button type="button" class="btn btn-default">Second</button>
<button type="button" class="btn btn-default">Third</button>
<button type="button" class="btn btn-default">Fourth</button>
<button type="button" class="btn btn-default">Fifth</button>
<button type="button" class="btn btn-default">Sixth</button>
</div>
<div class="btn-group" id="sortBtns" role="group">
<button type="button" class="btn btn-default">First</button>
<button type="button" class="btn btn-default">Second</button>
<button type="button" class="btn btn-default">Third</button>
<button type="button" class="btn btn-default">Fourth</button>
<button type="button" class="btn btn-default">Fifth</button>
<button type="button" class="btn btn-default" style="display:none;">Sixth</button>
</div>
请注意第二个按钮组中“第五个”缺少圆角。
我可以通过向最后一个可见元素添加一个新类来使用JavaScript来实现这一点,但我宁愿不这样做。是否有更简洁的CSS解决方案?
答案 0 :(得分:3)
如果您不介意添加依赖项,我建议使用AngularJS'ng-if
。它派上了用场when using css selectors that rely on an element's position within the DOM, such as the :first-child or :last-child pseudo-classes。它将从DOM中删除元素,并允许您实现目标。
答案 1 :(得分:0)
一种选择是简单地复制代码,并将hidden-xs
类添加到第一个代码块,将visible-xs
添加到另一个代码块。
像这样:
<div class="btn-group hidden-xs" id="sortBtns" role="group">
<button type="button" class="btn btn-default">First</button>
<button type="button" class="btn btn-default">Second</button>
<button type="button" class="btn btn-default">Third</button>
<button type="button" class="btn btn-default">Fourth</button>
<button type="button" class="btn btn-default">Fifth</button>
<button type="button" class="btn btn-default">Sixth</button>
</div>
<div class="btn-group visible-xs" id="sortBtns2" role="group">
<button type="button" class="btn btn-default">First</button>
<button type="button" class="btn btn-default">Fifth</button>
<button type="button" class="btn btn-default">Sixth</button>
</div>
另一个选择是将css规则应用于edgy元素:
.edgy-right-element {
border-top-left-radius: 0;
border-bottom-left-radius: 0;
border-top-right-radius: 4px;
border-bottom-right-radius: 4px;
}
答案 2 :(得分:0)
这是使用jQuery的解决方案:
$('.btn-group').has('.btn:hidden').find('.btn').css('border-radius', 0);
$('.btn-group').has('.btn:hidden').find('.btn:visible:first').css({
'border-top-left-radius': '3px',
'border-bottom-left-radius': '3px',
});
$('.btn-group').has('.btn:hidden').find('.btn:visible:last').css({
'border-top-right-radius': '3px',
'border-bottom-right-radius': '3px',
});
对于每个带有隐藏按钮的按钮组,这将删除其中所有按钮的边框半径,然后为第一个和最后一个可见按钮添加边框半径。