私の意見では、ここでの他の解決策にはまだ多くのことが望まれています。これは、以前のソリューションに基づいて構築されていますが、CSS flexbox を使用するソリューションです。タブは可能な限り横に並び、必要な場合にのみ複数行に折り返され、画面の幅いっぱいに表示され、水平方向のスペースは均等に配分されます。すっきりとバランスが取れており、長いタブや多数のタブを処理するために適切にスケーリングされます. また、他のソリューションのいくつかの境界および境界半径の問題も解決します。
SCSS:
@media (max-width: $screen-xs-max) {
.nav-tabs {
display: flex;
flex-wrap: wrap;
padding-right: 1px;
> li {
flex: auto;
text-align: center;
border: 1px solid $nav-tabs-border-color;
margin-right: -1px;
> a {
margin: 0;
}
&.active {
background: $gray-lighter;
> a, > a:hover, > a:focus {
border: none;
background: none;
}
}
}
}
}
または、プレーン CSS:
@media (max-width: 767px) {
.nav-tabs {
display: flex;
flex-wrap: wrap;
padding-right: 1px;
}
.nav-tabs > li {
flex: auto;
text-align: center;
border: 1px solid #ddd;
margin-right: -1px;
}
.nav-tabs > li > a {
margin: 0;
}
.nav-tabs > li.active {
background: #eee;
}
.nav-tabs > li.active > a,
.nav-tabs > li.active > a:hover,
.nav-tabs > li.active > a:focus {
border: none;
background: none;
}
}