Артём Мáлков

Простые горизонтальные вкладки (табы) для сайта на jQuery/JavaScript

2 дек0 комм

Вкладки (они же табы) – очень полезная вещица, которая позволяет значительно сэкономить место на вашем сайте, а также красиво структурировать ту или иную информацию. Когда я только начинал заниматься сайтами, этот функционал часто использовался в сайдбаре (боковой колонке) сайта, умещая в себе блок последних комментариев, информера свежих комментариев и, например, информера популярных материалов за некоторый период времени.

Сейчас же табы хорошо используются в различных онлайн-кинотеатрах для совмещения нескольких плееров, а также в интернет-магазинах, структурируя тем самым информацию о товарах.

Поэтому я рад представить вам свой вариант реализации вкладок, который вы можете использовать в своих проектах.

Простые горизонтальные вкладки (табы) для сайта на jQuery

Прежде чем начать рассмотрение табов, логичнее всего посмотреть на то, как должен выглядеть конечный результат. И выглядит он так:

Простые горизонтальные вкладки (табы) для сайта на jQuery/JavaScript

Основной контент (изображения и текст) в них адаптивен, остальное же вы дорабатываете по необходимости. Блок с вкладками занимает всю ширину области в которой находится.

Для установки табов на jQuery сделайте следующее.

1. Если у вас отсутствует библиотека jQuery, то подключите ее на вашем сайте в секцию HEAD:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>

2. Далее на нужные страницы вы вставляете верстку вкладок:

<div class="main_block_tabs">
  
	<div class="menu_tabs">
		<a href="javascript: void(0);" data-item="tabs_1" class="active_tabs">Вкладка 1</a>
		<a href="javascript: void(0);" data-item="tabs_2">Вкладка 2</a>
		<a href="javascript: void(0);" data-item="tabs_3">Вкладка 3</a>
    </div>
  
	<div class="content_tabs">
		<div data-item="content_tabs_1" class="active_tabs">Содержимое 1</div>
		<div data-item="content_tabs_2">Содержимое 2</div>
		<div data-item="content_tabs_3">Содержимое 3</div>
	</div>
	
 </div>

и заполняете их необходимым содержимым.

Для создания новых вкладок дублируйте последнюю навигационную ссылку с увеличением числа в data-item, а также последний элемент data-item="content_tabs_", где число вы проставляете то же самое, что и в новой ссылке.

3. Перед закрывающим тегом </body> на тех страницах, где вы добавили табы, вставьте скрипт их обработки:

<script>
 
	$(function() {

		$(".main_block_tabs .menu_tabs a").on("click", function() {
  
			$(".main_block_tabs .menu_tabs a").removeClass("active_tabs");
			$(this).addClass("active_tabs");
  
			$(".main_block_tabs .content_tabs div[data-item*=content_tabs]").removeClass("active_tabs");
			$(".main_block_tabs .content_tabs div[data-item=\"content_"+$(this).attr("data-item")+"\"]").addClass("active_tabs");
   
		});

	}); 

</script>

4. И завершающим шагом в конец вашего файла стилей вставьте:

.main_block_tabs .content_tabs div[data-item*=content_tabs] {
	display: none;
}

.main_block_tabs .menu_tabs a {
	font-family: arial;
	padding: 11px 14px;
	display: block;
	float: left;
	text-decoration: none;
	font-size: 12px;
	border-radius: 4px 4px 0 0;
	color: #fff;
	background: #513b2d;
	margin: 0 5px 0 0;
	text-transform: uppercase;
	transition: .1s;
	font-weight: 700;
}

.main_block_tabs .menu_tabs a:hover {
	background: #5f4534;
	transition: .1s;
}

.main_block_tabs .menu_tabs a.active_tabs {
	color: #111;
	background: #f4f4f4;
	cursor: text;
}

.main_block_tabs .content_tabs div[data-item*=content_tabs].active_tabs {
	clear: both;
	display: block;
	width: 100%;
	background: #f4f4f4;
	border-radius: 0 4px 4px 4px;
	box-shadow: 0 1px 1px rgba(0, 0, 0, .1);
	font-size: 14px;
	font-family: arial;
	padding: 16px 20px;
	color: #333;
}

.main_block_tabs .content_tabs div[data-item*=content_tabs].active_tabs img {
	max-width: 100%;
	height: auto;
	border-radius: 4px;
}

Сохраните все изменения и очистите кэш, если таковой имеется. Установка закончена.

Простые горизонтальные вкладки (табы) для сайта на JavaScript

Для установки табов с использованием чистого JavaScript повторите все шаги из варианта с jQuery, единственное, что отличается – скрипт для обработки вы используете этот:

<script>

	window.onload = function () {

		var link_tabs = document.querySelectorAll(".main_block_tabs .menu_tabs a");

		for (i = 0; i < link_tabs.length; i++) {
		
			link_tabs[i].onclick = function() {
    
				[].forEach.call(document.querySelectorAll(".main_block_tabs .menu_tabs a"), function(el_tab) {
      
					el_tab.classList.remove("active_tabs");
      
				});
    
				this.classList.toggle("active_tabs");
    
				[].forEach.call(document.querySelectorAll(".main_block_tabs .content_tabs div[data-item*=content_tabs]"), function(el_tab_content) {
      
					el_tab_content.classList.remove("active_tabs");
      
				});
    
				document.querySelectorAll(".main_block_tabs .content_tabs div[data-item=\"content_"+this.getAttribute("data-item")+"\"]")[0].classList.toggle("active_tabs");
    
			}
	
		}
    
	}
	
</script>

И подключать библиотеку jQuery в таком случае не обязательно.

Остались вопросы? Пишите их в комментариях под данной статьей.

Рекомендуем к просмотру
Использование тега [leech] в шаблоне в DLE
Посты
Выводим популярные записи за разный период времени по количеству просмотров и комментариев в WordPress
Статьи и советы
Добавляем виджет для комментариев от «ВКонтакте» на свой сайт
Социальные сети и мессенджеры
0
комментариев
Форма комментирования этого поста скрыта. Авторизуйтесь, чтобы расширить привилегии гостевого посещения и получить необходимую помощь от сообщества Pandoge.
Подняться наверх
«Pandoge» - помощник вебмастера