Вкладки
Часть раздела Практический фронтенд путешествия по HTML на Coddy. Урок 21 из 35.
Вкладки — это способ организовать содержимое в отдельные разделы, сохраняя всё на одной странице. Вместо прокрутки длинной страницы пользователи могут переключаться между панелями содержимого, нажимая на вкладку. Вкладки часто встречаются на страницах настроек, в панелях управления или описаниях продуктов (например, Подробности, Отзывы, FAQ).
Мы можем создать вкладки без JavaScript, используя:
- Переключатели radio (так что одновременно может быть активной только одна вкладка)
- Метки, которые действуют как кликабельные кнопки вкладок
- Селекторы CSS (
:checked), чтобы отображать правильное содержимое
HTML:
<div class="tabs">
<input type="radio" id="tab1" name="tab" checked>
<label for="tab1">Tab 1</label>
<div id="content1" class="tab-content">This is the content of Tab 1.</div>
<input type="radio" id="tab2" name="tab">
<label for="tab2">Tab 2</label>
<div id="content2" class="tab-content">This is the content of Tab 2.</div>
<input type="radio" id="tab3" name="tab">
<label for="tab3">Tab 3</label>
<div id="content3" class="tab-content">This is the content of Tab 3.</div>
</div>CSS:
<style>
/* Hide radios */
input { display: none; }
/* Tab labels */
label {
padding: 5px 10px;
background: lightgray;
cursor: pointer;
}
/* Content hidden by default */
.tab-content { display: none; padding: 10px; border: 1px solid #ccc; }
/* Show content when radio is checked */
#tab1:checked ~ #content1,
#tab2:checked ~ #content2 {
display: block;
}
/* Highlight active tab */
#tab1:checked + label,
#tab2:checked + label {
background: steelblue;
color: white;
}
</style>Вот краткое напоминание, которое можно дать студентам:
+(соседний элемент) → выбирает непосредственно следующий элемент.~(общий соседний элемент) → выбирает любой последующий соседний элемент (а не только следующий).
Задание
ЛегкоВам предоставлен начальный HTML-код с уже настроенными двумя вкладками. Ваша задача — расширить и улучшить систему вкладок.
- Добавьте ещё одну вкладку для “Sleep”:
- Метка:
Sleep - Содержимое: “Good sleep helps recovery and focus. Aim for 7 to 9 hours per night and keep a regular schedule.”
- Метка:
- Добавьте
#tab3:checked ~ #content3к CSS-селектору, который отображает содержимое вкладки после её выбора.
Попробуйте сами
<!DOCTYPE html>
<html>
<head>
<title>Tabs</title>
<style>
body {
font-family: Arial, sans-serif;
padding: 20px;
background: #f9f9f9;
}
.tabs {
display: flex;
flex-direction: column;
width: 350px;
}
/* Hide the radio inputs */
.tabs input {
display: none;
}
/* Tab labels */
.tabs label {
padding: 10px;
background: #eee;
cursor: pointer;
border: 1px solid #ccc;
}
.tabs label:hover {
background: #ddd;
}
/* Tab content */
.tab-content {
display: none;
border: 1px solid #ccc;
padding: 10px;
background: #fff;
line-height: 1.5;
}
/* Show content when radio is checked */
#tab1:checked ~ #content1,
#tab2:checked ~ #content2 {
display: block;
}
/* Highlight active tab */
#tab1:checked + label,
#tab2:checked + label,
#tab3:checked + label {
background: #4cafef;
color: white;
}
</style>
</head>
<body>
<div class="tabs">
<input type="radio" id="tab1" name="tab" checked>
<label for="tab1">Nutrition</label>
<div id="content1" class="tab-content">
<h3>Nutrition</h3>
<p>A balanced diet fuels your body and mind. Focus on fruits, vegetables, whole grains, and lean proteins. Avoid too much processed food.</p>
</div>
<input type="radio" id="tab2" name="tab">
<label for="tab2">Exercise</label>
<div id="content2" class="tab-content">
<h3>Exercise</h3>
<p>Daily movement strengthens your body and reduces health risks. Even a 30-minute walk or stretching makes a difference.</p>
</div>
</div>
</body>
</html>В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Практический фронтенд
Потренируйтесь самостоятельно: Песочница Web