📅  最后修改于: 2023-12-03 14:51:54.858000             🧑  作者: Mango
选项卡是网站中常用的一种交互式组件,可以在同一页面中显示多个内容,并且可以通过点击选项卡切换不同的内容。
在本文中,我们将介绍如何使用 JavaScript 创建水平和垂直选项卡。
创建水平选项卡的 HTML 结构非常简单,只需在一个容器元素中添加多个按钮和多个内容容器即可。
<div class="tab">
<button class="tablinks" onclick="openTab(event, 'tab1')">选项卡1</button>
<button class="tablinks" onclick="openTab(event, 'tab2')">选项卡2</button>
<button class="tablinks" onclick="openTab(event, 'tab3')">选项卡3</button>
<div id="tab1" class="tabcontent">
<h3>选项卡1 内容</h3>
<p>这里是选项卡1 的内容。</p>
</div>
<div id="tab2" class="tabcontent">
<h3>选项卡2 内容</h3>
<p>这里是选项卡2 的内容。</p>
</div>
<div id="tab3" class="tabcontent">
<h3>选项卡3 内容</h3>
<<p>这里是选项卡3 的内容。</p>
</div>
</div>
其中,tab
类名的容器元素用于包含所有选项卡,tablinks
类名的按钮用于切换选项卡,tabcontent
类名的内容容器包含每个选项卡的内容,这些类名可以根据实际需要进行修改。
为了让选项卡的样式更美观,我们需要添加一些 CSS 样式。
/* 隐藏所有选项卡内容 */
.tabcontent {
display: none;
}
/* 设置选项卡按钮样式 */
.tab button {
background-color: #e6e6e6;
color: #333;
float: left;
border: none;
outline: none;
cursor: pointer;
padding: 14px 16px;
margin-right: 5px;
}
/* 设置选项卡按钮激活状态样式 */
.tab button.active {
background-color: #ccc;
}
/* 显示当前选项卡的内容 */
.tabcontent.show {
display: block;
}
其中,.tabcontent
类用于隐藏所有选项卡内容,.tab button
类用于设置选项卡按钮的样式,.tab button.active
类表示当前选中的按钮,.tabcontent.show
类用于显示当前选项卡的内容。
为了使选项卡可以被切换,我们需要创建一个 JavaScript 函数来处理点击事件。
function openTab(evt, tabName) {
var i, tabcontent, tablinks;
// 隐藏所有选项卡内容
tabcontent = document.getElementsByClassName("tabcontent");
for (i = 0; i < tabcontent.length; i++) {
tabcontent[i].classList.remove("show");
}
// 将所有选项卡按钮设置为非激活状态
tablinks = document.getElementsByClassName("tablinks");
for (i = 0; i < tablinks.length; i++) {
tablinks[i].classList.remove("active");
}
// 显示当前选项卡的内容
document.getElementById(tabName).classList.add("show");
// 将当前选项卡按钮设置为激活状态
evt.currentTarget.classList.add("active");
}
该函数接受两个参数,第一个参数 evt
表示点击事件对象,第二个参数 tabName
表示要显示的选项卡的 ID。
在函数中,我们首先隐藏所有选项卡的内容和设置所有选项卡按钮为非激活状态,然后再显示当前选项卡的内容和设置当前选项卡按钮为激活状态。
完整的水平选项卡的 HTML、CSS、JavaScript 代码如下所示:
<!DOCTYPE html>
<html>
<head>
<style>
/* 隐藏所有选项卡内容 */
.tabcontent {
display: none;
}
/* 设置选项卡按钮样式 */
.tab button {
background-color: #e6e6e6;
color: #333;
float: left;
border: none;
outline: none;
cursor: pointer;
padding: 14px 16px;
margin-right: 5px;
}
/* 设置选项卡按钮激活状态样式 */
.tab button.active {
background-color: #ccc;
}
/* 显示当前选项卡的内容 */
.tabcontent.show {
display: block;
}
</style>
</head>
<body>
<div class="tab">
<button
class="tablinks"
onclick="openTab(event, 'tab1')"
id="defaultOpen"
>
选项卡1
</button>
<button class="tablinks" onclick="openTab(event, 'tab2')">
选项卡2
</button>
<button class="tablinks" onclick="openTab(event, 'tab3')">
选项卡3
</button>
<div id="tab1" class="tabcontent">
<h3>选项卡1 内容</h3>
<p>这里是选项卡1 的内容。</p>
</div>
<div id="tab2" class="tabcontent">
<h3>选项卡2 内容</h3>
<p>这里是选项卡2 的内容。</p>
</div>
<div id="tab3" class="tabcontent">
<h3>选项卡3 内容</h3>
<p>这里是选项卡3 的内容。</p>
</div>
</div>
<script>
function openTab(evt, tabName) {
var i, tabcontent, tablinks;
// 隐藏所有选项卡内容
tabcontent = document.getElementsByClassName("tabcontent");
for (i = 0; i < tabcontent.length; i++) {
tabcontent[i].classList.remove("show");
}
// 将所有选项卡按钮设置为非激活状态
tablinks = document.getElementsByClassName("tablinks");
for (i = 0; i < tablinks.length; i++) {
tablinks[i].classList.remove("active");
}
// 显示当前选项卡的内容
document.getElementById(tabName).classList.add("show");
// 将当前选项卡按钮设置为激活状态
evt.currentTarget.classList.add("active");
}
document.getElementById("defaultOpen").click();
</script>
</body>
</html>
垂直选项卡和水平选项卡的实现原理相同,只是 HTML 结构和 CSS 样式有所不同。
创建垂直选项卡,我们只需要将每个选项卡的按钮和内容容器放在一个容器元素中,并将它们排列成一列即可。
<div class="tab">
<div class="tablinks" onclick="openTab(event, 'tab1')">选项卡1</div>
<div class="tablinks" onclick="openTab(event, 'tab2')">选项卡2</div>
<div class="tablinks" onclick="openTab(event, 'tab3')">选项卡3</div>
<div id="tab1" class="tabcontent">
<h3>选项卡1 内容</h3>
<p>这里是选项卡1 的内容。</p>
</div>
<div id="tab2" class="tabcontent">
<h3>选项卡2 内容</h3>
<p>这里是选项卡2 的内容。</p>
</div>
<div id="tab3" class="tabcontent">
<h3>选项卡3 内容</h3>
<p>这里是选项卡3 的内容。</p>
</div>
</div>
其中,.tablinks
类名的按钮和 .tabcontent
类名的内容容器都只需要放到同一容器元素中即可。
为了让垂直选项卡的样式更美观,我们需要添加一些 CSS 样式。
/* 设置选项卡按钮样式 */
.tab .tablinks {
background-color: #e6e6e6;
color: #333;
padding: 14px 16px;
margin-right: -1px;
border: 1px solid #ccc;
cursor: pointer;
}
/* 设置选项卡按钮激活状态样式 */
.tab .tablinks.active {
background-color: #ccc;
color: #fff;
}
/* 显示当前选项卡的内容 */
.tabcontent.show {
display: block;
}
/* 设置选项卡内容样式 */
.tab .tabcontent {
display: none;
padding: 5px;
border: 1px solid #ccc;
}
其中,.tab .tablinks
类用于设置选项卡按钮的样式,.tab .tablinks.active
类表示当前选中的按钮,.tabcontent.show
类用于显示当前选项卡的内容,.tab .tabcontent
类用于设置选项卡内容的样式。
垂直选项卡的 JavaScript 函数与水平选项卡完全相同,因此不再赘述。
完整的垂直选项卡的 HTML、CSS、JavaScript 代码如下所示:
<!DOCTYPE html>
<html>
<head>
<style>
/* 设置选项卡按钮样式 */
.tab .tablinks {
background-color: #e6e6e6;
color: #333;
padding: 14px 16px;
margin-right: -1px;
border: 1px solid #ccc;
cursor: pointer;
}
/* 设置选项卡按钮激活状态样式 */
.tab .tablinks.active {
background-color: #ccc;
color: #fff;
}
/* 显示当前选项卡的内容 */
.tabcontent.show {
display: block;
}
/* 设置选项卡内容样式 */
.tab .tabcontent {
display: none;
padding: 5px;
border: 1px solid #ccc;
}
</style>
</head>
<body>
<div class="tab">
<div class="tablinks" onclick="openTab(event, 'tab1')">选项卡1</div>
<div class="tablinks" onclick="openTab(event, 'tab2')">选项卡2</div>
<div class="tablinks" onclick="openTab(event, 'tab3')">选项卡3</div>
<div id="tab1" class="tabcontent">
<h3>选项卡1 内容</h3>
<p>这里是选项卡1 的内容。</p>
</div>
<div id="tab2" class="tabcontent">
<h3>选项卡2 内容</h3>
<p>这里是选项卡2 的内容。</p>
</div>
<div id="tab3" class="tabcontent">
<h3>选项卡3 内容</h3>
<p>这里是选项卡3 的内容。</p>
</div>
</div>
<script>
function openTab(evt, tabName) {
var i, tabcontent, tablinks;
// 隐藏所有选项卡内容
tabcontent = document.getElementsByClassName("tabcontent");
for (i = 0; i < tabcontent.length; i++) {
tabcontent[i].classList.remove("show");
}
// 将所有选项卡按钮设置为非激活状态
tablinks = document.getElementsByClassName("tablinks");
for (i = 0; i < tablinks.length; i++) {
tablinks[i].classList.remove("active");
}
// 显示当前选项卡的内容
document.getElementById(tabName).classList.add("show");
// 将当前选项卡按钮设置为激活状态
evt.currentTarget.classList.add("active");
}
</script>
</body>
</html>
至此,我们已经学会了如何使用 JavaScript 创建水平和垂直选项卡。