Hướng dẫn tạo Tabs bằng HTML, CSS và Javascript

Chức năng Tabs không thể thiếu khi xây dựng giao diện Frond end. Sử dụng Tabs sẽ giúp tiết kiệm được không gian mà vẫn đầy đủ thông tin. Nếu như bạn đang muốn tạo Tabs bằng HTML, CSS và JavaScript thì hãy đọc ngay bài viết này.

Bước 1: Dựng khung Tabs bằng HTML

<div class="tabs">
<div class="tab-header">
<div class="active">
<i class="fa fa-code"></i> WordPress
</div>
<div>
<i class="fa fa-pencil-square-o"></i> Giới thiệu
</div>
<div>
<i class="fa fa-bar-chart"></i> Dịch vụ
</div>
<div>
<i class="fa fa-envelope-o"></i> Liên hệ
</div>
</div><!-- Close Header Tabs -->

<div class="tab-indicator"></div>

<div class="tab-body">
<div class="active">
<h2>Nội dung</h2>
<p>Đoạn văn bản mô tả nội dung CODE</p>
</div>
<div>
<h2>Giới thiệu</h2>
<p>Đoạn văn bản giới thiệu về công ty</p>
</div>
<div>
<h2>Các dịch vụ</h2>
<p>Các dịch vụ của chúng tôi gồm có: SEO, chạy quảng cáo...</p>
</div>
<div>
<h2>Thông tin liên hệ</h2>
<p>Hãy để lại thông tin liên hệ để được tư vấn</p>
</div>
</div><!-- Close Tabs Nội Dung -->
</div>

Việc cần làm đầu tiên đó chính là phải viết mã HTML. Bạn hãy để ý tới class=”active” đây là tabs hoạt động đầu tiên.

Bước 2: Thêm mã CSS

Thiết lập vị trí, chiều rộng, chiều cao, màu nền cho Tabs cha

.tabs {
position:absolute;
top:50%;
left:50%;
transform:translate(-50%,-50%);
width:500px;
height:250px;
background:#f5f5f5;
padding:20px 30px;
overflow:hidden;
box-shadow:5px 10px 5px #ccc;
}

Thiết lập và căn chỉnh vị trí cho Menu

.tabs .tab-header {
height:60px;
display:flex;
align-items:center;
}
.tabs .tab-header > div {
width:calc(100% / 4);
text-align:center;
color:#888;
font-weight:600;
cursor:pointer;
font-size:14px;
text-transform:uppercase;
outline:none;
}
.tabs .tab-header > div > i {
display:block;
margin-bottom:5px;
}
.tabs .tab-header > div.active {
color:#00acee;
}

Thiết lập các giá trị cho thanh hiển thị cho tab đang hoạt động

.tabs .tab-indicator {
position:relative;
width:calc(100% / 4);
height:5px;
background:red;
left:0px;
transition:all 500ms ease-in-out;
}

Thiết lập giá trị cho khu vực hiển thị nội dung

.tabs .tab-body {
position:relative;
height:calc(100% - 60px);
padding:10px 5px;
}
.tabs .tab-body > div {
position:absolute;
top:-200%;
opacity:0;
transform:scale(0.9);
transition:opacity 500ms ease-in-out 0ms,
transform 500ms ease-in-out 0ms;
}
.tabs .tab-body > div.active {
top:0px;
opacity:1;
transform:scale(1);
}

Kết quả sau khi thêm CSS vào

Khi click chuột qua các tab còn lại thì vẫn không có gì. Do đang còn thiếu JavaScript để lắng nghe sự kiện nhấp chuột.

tao-tabs-trong-html-css

Bước 3: Thêm JavaScript

<script language="javascript">
let tabHeader = document.getElementsByClassName("tab-header")[0];
let tabIndicator = document.getElementsByClassName("tab-indicator")[0];
let tabBody = document.getElementsByClassName("tab-body")[0];

let tabsPane = tabHeader.getElementsByTagName("div");

for(let i=0;i<tabsPane.length;i++){
tabsPane[i].addEventListener("click",function(){
tabHeader.getElementsByClassName("active")[0].classList.remove("active");
tabsPane[i].classList.add("active");
tabBody.getElementsByClassName("active")[0].classList.remove("active");
tabBody.getElementsByTagName("div")[i].classList.add("active");

tabIndicator.style.left = `calc(calc(100% / 4) * ${i})`;
});
}
</script>

Giải thích:

  • Khai báo các biến kiểu let tabHeader, tabIndicator, tabBody, tabsPane
  • Dùng document.getElementsByClassName để DOM phẩn tử HTML
  • [0] là ví trị bắt đầu trong mảng (Array) là không
  • for là vòng lặp để tăng giá trị lên (++) bắt đầu từ 0
  • addEventListener dùng để lắng nghe sự kiện
  • [i] là giá trị tăng lên, giả sử tabsPane[1] thì lúc này tabsPane[1] thêm class là active vào tab này bằng mã classList.add(“active”);
  • tabIndicator.style.left: Hiển thị thanh trượt khi i++

Kết luận: Khi kết hợp HTML, CSS và JavaScript lại với nhau chức năng Tabs đã được hoàn thiện. Để thử nghiệm bạn có thể đưa tất cả đoạn mã trên nằm trong cùng một file dạng

<html>
<head>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" />
<style>
</head>
/* Mã CSS */
</style>
<body>
<div class="tabs">
<!-- Mã HTML -->
</div>
<script language="javascript">
// Mã JavaScript
</script>
</body>
</html>

Related Posts

Cấu trúc dữ liệu và giải thuật: Một cái nhìn tổng quan

Giới thiệu Trong lĩnh vực phát triển phần mềm, cấu trúc dữ liệu và giải thuật là hai khái niệm quan trọng không thể thiếu. Cấu trúc…

Next.js – Khám phá Framework JavaScript tuyệt vời cho phát triển ứng dụng web

Giới thiệu về Next.js Next.js là một framework JavaScript mã nguồn mở và phổ biến được sử dụng để xây dựng các ứng dụng web hiệu suất…

Lisp – Cái nhìn tổng quan về ngôn ngữ lập trình đặc biệt

Lisp là gì? Lisp là một ngôn ngữ lập trình đặc biệt mang đến một cách tiếp cận độc đáo trong việc xử lý thông tin và…

Cách sử dụng đường dẫn tương đối trong HTML

Cách sử dụng đường dẫn tương đối trong HTML

Trang web hiện đại thường bao gồm nhiều tài nguyên như hình ảnh, trang HTML khác, tệp tin CSS và JavaScript. Để liên kết và truy cập…

Bài tập về hàm split trong Python

Chuỗi là một loại dữ liệu phổ biến trong lập trình, và việc xử lý chuỗi là một kỹ năng cần thiết cho các lập trình viên….

Xử lý chuỗi trong Python: Các phương thức cơ bản

Python là một trong những ngôn ngữ lập trình phổ biến nhất hiện nay. Nó được sử dụng rộng rãi trong nhiều lĩnh vực, từ phát triển…