Chr*_*ina 26 jquery twitter-bootstrap twitter-bootstrap-3
目前,在Bootstrap 3中设置选项卡时,选项卡不响应.
这个:

变成这样:

CSS.修复它的外观很容易,只需在最大宽度处移除浮子等.但是,内容与选项卡脱节,因此一堆选项卡将像标签一样工作,但在较小的视口上,您可能会看到内容的变化,也可能看不到内容的变化.
这是制作标签式导航的基本html:
<!--begin tabs going in wide content -->
<ul class="nav nav-tabs" id="maincontent" role="tablist">
<li class="active"><a href="#home" role="tab" data-toggle="tab">Home</a></li>
<li><a href="#profile" role="tab" data-toggle="tab">Profile</a></li>
<li class="dropdown">
<a href="#" id="myTabDrop1" class="dropdown-toggle" data-toggle="dropdown">Dropdown <span class="caret"></span></a>
<ul class="dropdown-menu" role="menu" aria-labelledby="myTabDrop1">
<li><a href="#dropdown1" tabindex="-1" role="tab" data-toggle="tab">@fat</a></li>
<li><a href="#dropdown2" tabindex="-1" role="tab" data-toggle="tab">@mdo</a></li>
</ul>
</li>
</ul><!--/.nav-tabs.content-tabs -->
<div class="tab-content">
<div class="tab-pane fade in active" id="home">
<p>Home Content : ...</p>
</div><!--/.tab-pane -->
<div class="tab-pane fade" id="profile">
<p>Profile Content : ...</p>
</div><!--/.tab-pane -->
<div class="tab-pane fade" id="dropdown1">
<p>Dropdown1 - ...</p>
</div><!--/.tab-pane -->
<div class="tab-pane fade" id="dropdown2">
<p>Dropdown 2 - ...</p>
</div><!--/.tab-pane -->
</div><!--/.tab-content -->
Run Code Online (Sandbox Code Playgroud)
如何将Tabs转换为Accordion或Collapse,以便它对视口友好?
Lee*_*Lee 30
Slack有一种很酷的方式可以在一些管理页面上使标签小视口友好.我用bootstrap做了类似的东西.这是一个标签→下拉列表.
以下是它在小视口上的折叠方式:
以下是它在小视口上展开的方式:
HTML与默认引导选项卡完全相同.
有一个小的JS片段,需要jquery(并在DOM中插入两个span元素):
$.fn.responsiveTabs = function() {
this.addClass('responsive-tabs');
this.append($('<span class="glyphicon glyphicon-triangle-bottom"></span>'));
this.append($('<span class="glyphicon glyphicon-triangle-top"></span>'));
this.on('click', 'li.active > a, span.glyphicon', function() {
this.toggleClass('open');
}.bind(this));
this.on('click', 'li:not(.active) > a', function() {
this.removeClass('open');
}.bind(this));
};
$('.nav.nav-tabs').responsiveTabs();
Run Code Online (Sandbox Code Playgroud)
然后有很多css(更少):
@xs: 768px;
.responsive-tabs.nav-tabs {
position: relative;
z-index: 10;
height: 42px;
overflow: visible;
border-bottom: none;
@media(min-width: @xs) {
border-bottom: 1px solid #ddd;
}
span.glyphicon {
position: absolute;
top: 14px;
right: 22px;
&.glyphicon-triangle-top {
display: none;
}
@media(min-width: @xs) {
display: none;
}
}
> li {
display: none;
float: none;
text-align: center;
&:last-of-type > a {
margin-right: 0;
}
> a {
margin-right: 0;
background: #fff;
border: 1px solid #DDDDDD;
@media(min-width: @xs) {
margin-right: 4px;
}
}
&.active {
display: block;
a {
@media(min-width: @xs) {
border-bottom-color: transparent;
}
border: 1px solid #DDDDDD;
border-radius: 2px;
}
}
@media(min-width: @xs) {
display: block;
float: left;
}
}
&.open {
span.glyphicon {
&.glyphicon-triangle-top {
display: block;
@media(min-width: @xs) {
display: none;
}
}
&.glyphicon-triangle-bottom {
display: none;
}
}
> li {
display: block;
a {
border-radius: 0;
}
&:first-of-type a {
border-radius: 2px 2px 0 0;
}
&:last-of-type a {
border-radius: 0 0 2px 2px;
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
Chr*_*ina 29
Bootstrap选项卡没有开箱即用的响应.响应,IMO,是一种风格变化,变化的功能是自适应的.有一些插件可以将Bootstrap 3选项卡转换为Collapse组件.最好的和最新的是:https://github.com/flatlogic/bootstrap-tabcollapse.
这是实现它的一种方法:
这会将内容转换为折叠组件:

依赖关系:
HTML - 与添加类名的问题相同:
<ul class="nav nav-tabs content-tabs" id="maincontent" role="tablist">
Run Code Online (Sandbox Code Playgroud)
jQuery的:
$(document).ready(function() {
// DEPENDENCY: https://github.com/flatlogic/bootstrap-tabcollapse
$('.content-tabs').tabCollapse();
// initialize tab function
$('.nav-tabs a').click(function(e) {
e.preventDefault();
$(this).tab('show');
});
});
Run Code Online (Sandbox Code Playgroud)
CSS - 胖手指和活动状态的可选项:
.panel-heading {
padding: 0
}
.panel-heading a {
display: block;
padding: 20px 10px;
}
.panel-heading a.collapsed {
background: #fff
}
.panel-heading a {
background: #f7f7f7;
border-radius: 5px;
}
.panel-heading a:after {
content: '-'
}
.panel-heading a.collapsed:after {
content: '+'
}
.nav.nav-tabs li a,
.nav.nav-tabs li.active > a:hover,
.nav.nav-tabs li.active > a:active,
.nav.nav-tabs li.active > a:focus {
border-bottom-width: 0px;
outline: none;
}
.nav.nav-tabs li a {
padding-top: 20px;
padding-bottom: 20px;
}
.tab-pane {
background: #fff;
padding: 10px;
border: 1px solid #ddd;
margin-top: -1px;
}
Run Code Online (Sandbox Code Playgroud)
hay*_*lem 12

有一个新的:http://hayatbiralem.com/blog/2015/05/15/responsive-bootstrap-tabs/
此外,还有Codepen示例:http://codepen.io/hayatbiralem/pen/KpzjOL
没有需要的插件.它只使用了一点css和jquery.
这是一个示例选项卡标记:
<ul class="nav nav-tabs nav-tabs-responsive">
<li class="active">
<a href="#tab1" data-toggle="tab">
<span class="text">Tab 1</span>
</a>
</li>
<li class="next">
<a href="#tab2" data-toggle="tab">
<span class="text">Tab 2</span>
</a>
</li>
<li>
<a href="#tab3" data-toggle="tab">
<span class="text">Tab 3</span>
</a>
</li>
...
</ul>
Run Code Online (Sandbox Code Playgroud)
..和jQuery代码也在这里:
(function($) {
'use strict';
$(document).on('show.bs.tab', '.nav-tabs-responsive [data-toggle="tab"]', function(e) {
var $target = $(e.target);
var $tabs = $target.closest('.nav-tabs-responsive');
var $current = $target.closest('li');
var $parent = $current.closest('li.dropdown');
$current = $parent.length > 0 ? $parent : $current;
var $next = $current.next();
var $prev = $current.prev();
var updateDropdownMenu = function($el, position){
$el
.find('.dropdown-menu')
.removeClass('pull-xs-left pull-xs-center pull-xs-right')
.addClass( 'pull-xs-' + position );
};
$tabs.find('>li').removeClass('next prev');
$prev.addClass('prev');
$next.addClass('next');
updateDropdownMenu( $prev, 'left' );
updateDropdownMenu( $current, 'center' );
updateDropdownMenu( $next, 'right' );
});
})(jQuery);
Run Code Online (Sandbox Code Playgroud)
Fed*_*zio 11
我更喜欢基于水平滚动的css方案,比如android上的标签.这是我的解决方案,只需使用类nav-tabs响应:
<div class="nav-tabs-responsive">
<ul class="nav nav-tabs" role="tablist">
<li>...</li>
</ul>
</div>
Run Code Online (Sandbox Code Playgroud)
还有两条css线:
.nav-tabs { min-width: 600px; }
.nav-tabs-responsive { overflow: auto; }
Run Code Online (Sandbox Code Playgroud)
600px是您将响应的重点(您可以使用引导变量设置它)
小智 5
纯 CSS 仅用于导航选项卡,对于小屏幕非常简单:
@media (max-width: 767px) {
.nav-tabs {
min-width: 100%;
display: inline-grid;
}
}
Run Code Online (Sandbox Code Playgroud)