使用 Bootstrap v4 证明导航药丸的合理性

Posted

技术标签:

【中文标题】使用 Bootstrap v4 证明导航药丸的合理性【英文标题】:Justify Nav-pills with Bootstrap v4 【发布时间】:2016-03-28 11:36:56 【问题描述】:

我想在 div 的宽度上证明我的导航栏是合理的。问题是我使用Bootstrap v4 并且 nav-justify 类还不可用。

代码如下:

<ul class="nav nav-pills">
    <li class="nav-item">
        <a class="nav-link active" href="#subscribed" data-toggle="tab">Mes inscriptions</a>
    </li>
    <li class="nav-item">
        <a class="nav-link" href="#eventPassed" data-toggle="tab">Événements passés</a>
    </li>
    <li class="nav-item">
        <a class="nav-link" href="#eventNow" data-toggle="tab">Événements en cours</a>
    </li>
    <li class="nav-item">
        <a class="nav-link" href="#eventIncoming" data-toggle="tab">Événements futurs</a>
    </li>
    <li class="nav-item">
        <a class="nav-link" href="#eventCreation" data-toggle="tab">Créer un événement</a>
    </li>
    <li class="nav-item">
        <a class="nav-link" href="#eventOwn" data-toggle="tab">Mes événements</a>
    </li>
</ul>

我不想在 CSS 中使用百分比来做到这一点;我想要响应式的东西。

【问题讨论】:

【参考方案1】:

从 Bootstrap alpha 6 开始,nav-justified 又回来了,并且有一个新的 nav-fill 类。

http://v4-alpha.getbootstrap.com/components/navs/#fill-and-justify

您只需将课程添加到您的nav..

<ul class="nav nav-pills nav-justified">
        ..
</ul>

Bootstrap 4 Justified Nav

【讨论】:

【参考方案2】:

确实缺少nav-justify class。暂时可以根据 TB3 的代码自行添加:

SCSS 代码:

// Justified nav links
// -------------------------

@mixin nav-justified 
  width: 100%;

  .nav-item 
    float: none;
  

  .nav-link 
    text-align: center;
    margin-bottom: 5px;
  

  > .dropdown .dropdown-menu  //todo: remove child selector
    top: auto;
    left: auto;
  

  @include media-breakpoint-up(sm) 
    .nav-item 
      display: table-cell;
      width: 1%;
    
    .nav-link 
        margin-bottom: 0;
    
  


// Move borders to anchors instead of bottom of list
//
// Mixin for adding on top the shared `.nav-justified` styles for our tabs
@mixin nav-tabs-justified 
  border-bottom: 0;

  .nav-link 
    // Override margin from .nav-tabs
    margin-right: 0;
    border-radius: $border-radius;
  

  .nav-link.active,
  .nav-link.active:hover,
  .nav-link.active:focus 
    border: 1px solid $nav-tabs-justified-link-border-color;
  

  @include media-breakpoint-up(sm) 
    .nav-link 
      border-bottom: 1px solid $nav-tabs-justified-link-border-color;
      border-radius: $border-radius $border-radius 0 0;
    
   .nav-link.active,
   .nav-link.active:hover,
   .nav-link.active:focus 
      border-bottom-color: $nav-tabs-justified-active-link-border-color;
    
  


.nav-justified 
  @include nav-justified;
  @include nav-tabs-justified;

编译的 CSS 代码:

.nav-justified 
  width: 100%;
  border-bottom: 0; 
  .nav-justified .nav-item 
    float: none; 
  .nav-justified .nav-link 
    text-align: center;
    margin-bottom: 5px; 
  .nav-justified > .dropdown .dropdown-menu 
    top: auto;
    left: auto; 
  @media (min-width: 544px) 
    .nav-justified .nav-item 
      display: table-cell;
      width: 1%; 
    .nav-justified .nav-link 
      margin-bottom: 0;  
  .nav-justified .nav-link 
    margin-right: 0;
    border-radius: 0.25rem; 
  .nav-justified .nav-link.active,
  .nav-justified .nav-link.active:hover,
  .nav-justified .nav-link.active:focus 
    border: 1px solid #ddd; 
  @media (min-width: 544px) 
    .nav-justified .nav-link 
      border-bottom: 1px solid #ddd;
      border-radius: 0.25rem 0.25rem 0 0; 
    .nav-justified .nav-link.active,
    .nav-justified .nav-link.active:hover,
    .nav-justified .nav-link.active:focus 
      border-bottom-color: #fff;  

HTML

<div class="container">
<ul class="nav nav-pills nav-justified">
  <li class="nav-item">
    <a class="nav-link active" href="#">Active</a>
  </li>
  <li class="nav-item">
    <a class="nav-link" href="#">Link</a>
  </li>
  <li class="nav-item">
    <a class="nav-link" href="#">Another link</a>
  </li>
  <li class="nav-item">
    <a class="nav-link disabled" href="#">Disabled</a>
  </li>
</ul>
</div>

大屏幕

小屏幕

更新:从 BS4 alpha 6 开始,nav-justified 又回来了,还有一个新类 nav-fill http://v4-alpha.getbootstrap.com/components/navs/#fill-and-justify

【讨论】:

我需要改变 2-3 件事,但这正是我所需要的。我将断点更改为 md。我只需要安装 SCSS 编译器。感谢您的帮助!【参考方案3】:

他们在 Boostrap v.4 alpha、on this page 的文档中拥有它,但现在它已经坏了。

有对应的ticket for this,已经创建了pull request for v4-dev branch。

在这里发布整个代码sn-p,没有意义,所以the changes you may see here,并修补自己的SASS文件:

// Justified nav links
// -------------------------

@mixin nav-justified 
  width: 100%;

  .nav-item 
    float: none;
  

  .nav-link 
    margin-bottom: $nav-tabs-justified-link-margin-bottom;
    text-align: center;
  

  .dropdown .dropdown-menu 
    top: auto;
    left: auto;
  

  @include media-breakpoint-up(md) 
    .nav-item 
      display: table-cell;
      width: 1%;
    
    .nav-link 
      margin-bottom: 0;
    
  


// Move borders to anchors instead of bottom of list
//
// Mixin for adding on top the shared `.nav-justified` styles for our tabs
@mixin nav-tabs-justified 
  border-bottom: 0;

  .nav-link  // Override margin from .nav-tabs
    margin-right: 0;
    @include border-radius($nav-tabs-justified-link-border-radius);
  

  .nav-link.active 
    @include plain-hover-focus 
      border: $nav-tabs-justified-link-border-width solid $nav-tabs-justified-link-border-color;
    
  

  @include media-breakpoint-up(md) 
    .nav-link,
    .nav-link.disabled,
    .nav-link.disabled:hover 
      border-bottom: $nav-tabs-justified-link-border-width solid $nav-tabs-justified-link-border-color;
      @include border-top-radius($nav-tabs-justified-link-border-radius);
    
    .nav-link.active 
      @include plain-hover-focus 
        border-bottom-color: $nav-tabs-justified-active-link-border-color;
      
    
  

【讨论】:

以上是关于使用 Bootstrap v4 证明导航药丸的合理性的主要内容,如果未能解决你的问题,请参考以下文章

使用 Bootstrap v4 对齐按钮

更改背景图像引导导航药丸

如何使用引导程序让单击的导航药丸保持活动状态?

VueJS vue-router 的引导导航药丸

如何在 bootstrap 3 导航栏中使 select2 v4 搜索框响应?

如何为移动屏幕的导航栏项目添加切换按钮,并使用 HTML、CSS 和 Bootstrap v4 将它们切换为下拉菜单