📜  html中的选项卡(1)

📅  最后修改于: 2023-12-03 15:01:19.343000             🧑  作者: Mango

HTML中的选项卡

选项卡(tab)是一种常见的网页布局方式,通常用于将信息分组并在有限的屏幕空间内呈现给用户。在HTML中,可以通过几种方法实现选项卡,包括CSS,JavaScript和框架(如Bootstrap)。

通过CSS实现选项卡

使用CSS可以轻松创建基本的选项卡样式。首先,创建一个包含选项卡标题和内容的HTML结构:

<div class="tabs">
  <ul class="tab-links">
    <li><a href="#tab1">Tab 1</a></li>
    <li><a href="#tab2">Tab 2</a></li>
    <li><a href="#tab3">Tab 3</a></li>
  </ul>
 
  <div class="tab-content">
    <div id="tab1" class="tab active">
      <h2>Tab 1 Content</h2>
      <p>Some content here...</p>
    </div>
 
    <div id="tab2" class="tab">
      <h2>Tab 2 Content</h2>
      <p>More content here...</p>
    </div>
 
    <div id="tab3" class="tab">
      <h2>Tab 3 Content</h2>
      <p>Even more content here...</p>
    </div>
  </div>
</div>

对于CSS,我们需要在样式表中为每个选项卡标题和内容定义样式,以及指定哪个选项卡是活动状态。

.tabs {
  width: 100%;
  display: block;
  margin: 0 auto;
}
 
.tab-links {
  font-size: 1.2em;
  margin: 0;
  padding: 0;
  list-style: none;
}
 
.tab-links li {
  display: inline;
  margin: 0 10px 0 0;
}
 
.tab-links a {
  padding: 10px;
  display: inline-block;
  background: #fff;
  text-decoration: none;
  border-bottom: none;
}
 
.tab-links a.active {
  background: #f2f2f2;
  border-bottom: 2px solid #f2f2f2;
}
 
.tab-content {
  padding: 20px;
  background: #fff;
  border-top: none;
}
 
.tab {
  display: none;
}
 
.tab.active {
  display: block;
}

在上面的CSS中,将选项卡标题链接定义为标准的HTML链接,并将选项卡内容定义为不可见的,并且在需要时将其切换为可见状态的类。

通过JavaScript实现选项卡

使用JavaScript可以创建更功能齐全的选项卡,例如滑动和淡入淡出效果。 首先,需要创建与CSS实现相同的HTML结构。

<div class="tabs">
  <ul class="tab-links">
    <li class="active"><a href="#tab1">Tab 1</a></li>
    <li><a href="#tab2">Tab 2</a></li>
    <li><a href="#tab3">Tab 3</a></li>
  </ul>
 
  <div class="tab-content">
    <div id="tab1" class="active">
      <h2>Tab 1 Content</h2>
      <p>Some content here...</p>
    </div>
 
    <div id="tab2">
      <h2>Tab 2 Content</h2>
      <p>More content here...</p>
    </div>
 
    <div id="tab3">
      <h2>Tab 3 Content</h2>
      <p>Even more content here...</p>
    </div>
  </div>
</div>

然后,使用JavaScript为选项卡链接添加单击事件,并在单击时切换选项卡样式。

var tabLinks = document.querySelectorAll(".tab-links a");
var tabContent = document.querySelectorAll(".tab-content > div");
 
for (var i = 0; i < tabLinks.length; i++) {
  tabLinks[i].addEventListener("click", function(e) {
    e.preventDefault();
 
    var id = this.getAttribute("href");
 
    for (var j = 0; j < tabContent.length; j++) {
      tabContent[j].classList.remove("active");
    }
 
    for (var k = 0; k < tabLinks.length; k++) {
      tabLinks[k].parentNode.classList.remove("active");
    }
 
    this.parentNode.classList.add("active");
    document.querySelector(id).classList.add("active");
  });
}
通过框架实现选项卡

现成的框架(如Bootstrap)可以帮助快速创建选项卡,并且在响应式设计方面具有更好的支持。

<ul class="nav nav-tabs">
  <li class="active"><a data-toggle="tab" href="#tab1">Tab 1</a></li>
  <li><a data-toggle="tab" href="#tab2">Tab 2</a></li>
  <li><a data-toggle="tab" href="#tab3">Tab 3</a></li>
</ul>
 
<div class="tab-content">
  <div id="tab1" class="tab-pane fade in active">
    <h2>Tab 1 Content</h2>
    <p>Some content here...</p>
  </div>
 
  <div id="tab2" class="tab-pane fade">
    <h2>Tab 2 Content</h2>
    <p>More content here...</p>
  </div>
 
  <div id="tab3" class="tab-pane fade">
    <h2>Tab 3 Content</h2>
    <p>Even more content here...</p>
  </div>
</div>

在这种情况下,选项卡使用数据属性data-toggle="tab"href="#tabX"定义选项卡链接和选项卡内容。选项卡链接和内容必须具有相同的ID,以便Bootstrap能够将它们连接起来。