bootstrap-vue 选项卡 - 在 url 中给定锚点打开选项卡内容

Adr*_*ano 6 javascript vue.js bootstrap-4 bootstrap-vue

我正在使用bootstrap-vueSPA 并且我正在处理一个页面,我们需要在其中嵌套一些内容b-tabs

通过给定一个带有锚点的网址(例如:),www.mydomain.com/page123#tab-3我想在Tab 3.

问题:我如何在 bootstrap-vue 中做到这一点?有我可以使用的本机功能吗? 参考:(我在文档中找不到它:https : //bootstrap-vue.js.org/docs/components/tabs/


这是我的代码:

<b-tabs>


  <b-tab title="Tab 1" active>
    Tab 1 content
  </b-tab>

  <b-tab title="Tab 2">
    Tab 2 content
  </b-tab>

  <b-tab title="Tab 3">
    Tab 3 content
  </b-tab>


</b-tabs>
Run Code Online (Sandbox Code Playgroud)

这是呈现的html 代码:

<div class="tabs">
  <div class="">
    <ul role="tablist" tabindex="0" class="nav nav-tabs">
      <li class="nav-item">
        <a role="tab" tabindex="-1" href="#" class="nav-link active">Tab 1</a>
      </li>
      <li class="nav-item">
        <a role="tab" tabindex="-1" href="#" class="nav-link">Tab 2</a>
      </li>
      <li class="nav-item">
        <a role="tab" tabindex="-1" href="#" class="nav-link">Tab 3</a>
      </li>
    </ul>
  </div>
  <div class="tab-content">
    <div class="tab-pane show fade active">
      Tab 1 content
    </div>
    <div class="tab-pane fade" style="display: none;">
      Tab 2 content
    </div>
    <div class="tab-pane fade" style="display: none;">
      Tab 3 content
    </div>
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

Tro*_*use 11

b-tabs应该用于基于本地(非 url)的内容(不推荐使用该href道具b-tab

但是,您可以轻松地使用b-navdivs 来生成基于 URL 导航的选项卡:

<div class="tabs">
  <b-nav tabs>
    <b-nav-item to="#" :active="$route.hash === '#' || $route.hash === ''">
      One
    </b-nav-item>
    <b-nav-item to="#two" :active="$route.hash === '#two'">
      Two
    </b-nav-item>
    <b-nav-item to="#three" :active="$route.hash === '#three'">
      Three
    </b-nav-item>
  </b-nav>
  <div class="tab-content">
    <div :class="['tab-pane', { 'active': $route.hash === '#' || $route.hash === '' }]" class="p-2">
      <p>Tab One (default) with no hash</p>
    </div>
    <div :class="['tab-pane', { 'active': $route.hash === '#two' }]" class="p-2">
      <p>Tab One with hash #two</p>
    </div>
    <div :class="['tab-pane', { 'active': $route.hash === '#three' }]" class="p-2">
      <p>Tab One with hash #three</p>
    </div>
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

这假设您使用的是 Vue 路由器。

  • 好的!那行得通。我将尝试创建一个返回“active”类的函数,以便可以在每个选项卡中重用它,而不是对其进行硬编码。但非常感谢:) (2认同)