Открывания табов по якорю в ссылке
Здравствуйте.
Сделал небольшое окно с табами, и по инструкциям в интернете с помощью jquery смог реализовать переключение. Но возникла проблема, надо чтобы при переходе по ссылке с якорем (site.ru/#tab2) автоматически переключался на нужный таб. Подскажите как можно это реализовать? За любую информацию буду благодарен, т.к. очень слаб в javascript и jquery Ссылка на табы https://codepen.io/anon/pen/bQyqgr?editors=1010 Спасибо |
document.location.hash //вернет hash
onhashchange = function(){
// тут обработка события изменения хеша
};
остальное то же самое как и по клику |
1111,
<li><a title="" class="btn" href="#tab1">sp13 Ink</a></li>
<li><a title="" class="btn" href="#tab2">sp14 Foxy</a></li>
<!DOCTYPE html>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<style type="text/css">
body {
padding: 50px;
}
div {
box-sizing: border-box;
}
.container {
box-shadow: 0 0 10px 1px #cccccc;
width: 976px;
border-top: none;
border-radius: 6px;
}
.cleafix {
content: "";
display: table;
clear:both;
}
/* табы */
.btn {
font-size: 14px;
color: inherit;
font-family: "Helvetica";
text-align: center;
padding: 5px 20px;
text-decoration: none;
}
#active {
color: #fff;
background-color: #C71D1A;
}
.active {
color: #fff !important;
background-color: #C71D1A;
}
.tabs {
width: 100%;
font-weight: bold;
}
.tabs {
overflow: auto;
list-style: none;
text-transform: uppercase;
padding: 0px;
margin: 0px;
}
.tabs li{
box-shadow: 0 0 5px 0px #cccccc;
color: #C71D1A;
float: left;
border: 2px solid #cccccc;
border-radius: 10px 10px 10px 10px;
margin-bottom: 2px;
}
.tabs li:nth-child(-n+4){
border-radius: 0px 0px 10px 10px;
}
.tabs li:not(:nth-child(-n+4)) {
border-top: none;
}
.tabs li:nth-child(n+4){
border-radius: 0px 0px 10px 10px;
}
.tabs li:nth-child(1){
border-radius: 5px 0px 10px 10px;
}
.tabs li:nth-child(4){
border-radius: 0px 5px 10px 10px;
}
.tabs li a {
float: left;
width: 200px;
height: 15px;
}
/* Контент табов */
.tab {
width: 100%;
text-align: center;
}
.tab-content h2 {
text-transform: uppercase;
color: #C71D1A;
}
.image-block-left {
float: left;
width:50%;
}
.image-block-right {
float: left;
width: 20%;
}
.image-block-left img {
width: 100%;
}
.image-block-right img {
width: 60%;
display: block;
}
.tab-content{
display: none;
}
</style>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script>
$(function() {
$('.tabs li').click(function(event){
$('.tabs li').removeClass('active');
$(this).addClass('active');
$('.tab-content').hide();
var activeTab = $(this).find('a').attr('href');
$(activeTab).show();
});
var hash = window.location.hash;
hash ? $("a[href='"+hash+"']").click() : $('.tabs li:first').click()
});
</script>
</head>
<body>
<div class="container">
<ul id="tabs" class="tabs">
<li><a title="" class="btn" href="#tab1">sp13 Ink</a></li>
<li><a title="" class="btn" href="#tab2">sp14 Foxy</a></li>
<li><a title="" class="btn" href="#tab3">sp15 Gray Cloud</a></li>
<li><a class="btn" href="#">sp17 British Green</a></li>
<li><a class="btn" href="#">sp15 Gray Cloud</a></li>
<li><a class="btn" href="#">sp19 Warm Sand</a></li>
<li><a class="btn" href="#">sp20 Sorbet</a></li>
<li><a class="btn" href="#">sp14 Foxy</a></li>
</ul>
<div id="content" class="tab">
<div id="tab1" class="tab-content">
<div class="image cleafix">
<div class="image-block-left">
<img src="http://u8.filesonload.ru/17c7fa4c1f220efcfa8201d8e834c0ca/9f3db0370ab59af37f722f3e52923ae8.jpg">
</div>
<div class="image-block-right">
<img src="http://u8.filesonload.ru/17c7fa4c1f220efcfa8201d8e834c0ca/a80bc4b3029a95b103f3f063e5967f8c.jpg">
<img src="http://u8.filesonload.ru/17c7fa4c1f220efcfa8201d8e834c0ca/0b14bc7445fc00f036993a5a0c0aa376.jpg">
<img src="http://u8.filesonload.ru/17c7fa4c1f220efcfa8201d8e834c0ca/167fc973f04ef17dbabfa43a39826760.jpg">
<img src="http://u8.filesonload.ru/17c7fa4c1f220efcfa8201d8e834c0ca/b8619303f1b4cd9b8dc720df906e83d7.jpg">
</div>
</div>
</div>
<div id="tab2" class="tab-content">
<div class="image cleafix">
<div class="image-block-left">
<img src="http://u8.filesonload.ru/17c7fa4c1f220efcfa8201d8e834c0ca/9f3db0370ab59af37f722f3e52923ae8.jpg">
</div>
<div class="image-block-right">
<img src="http://u8.filesonload.ru/17c7fa4c1f220efcfa8201d8e834c0ca/a80bc4b3029a95b103f3f063e5967f8c.jpg">
</div>
</div>
</div>
</div>
</div>
</body>
</html>
|
Цитата:
Цитата:
|
рони
Спасибо. Все получилось) |
рони,
Чтобы стрелки назад/вперед на панели работали. |
j0hnik,
... мне сложно понять, возможно я что-то пропустил. :) |
Рони, И вновь здравствуйте!
Поэкспериментировал с вашим скриптов, все круто, но возник нюанс. При нажатии на ссылку (таб) окно прокручивается к открывающемуся табу (т.к. срабатывает якорь и он соответственно к нему листает) и само меню скрывается за верхний край браузера из-за чего приходится все время пролистатывать назад, чтобы выбрать другую вкладку. И возник вопрос, можно ли сделать так, что весь контент табов сделать с двумя стилями, один стил show с свойством display:block;, второй hide с display:none; А у div-a контентов табов был бы уникальный id При нажатии на ссылку в меню табов (href="#" т.е. без ссылки на таб) в которой был бы title c Названием таба, которой нужно открыть, Js прописывал бы нужному div-у стиль show и li в которой ссылка стиль active (а в этом стиле фон красным у меня прописан, чтобы кнопка стала активной) А если в адресной строке бы присутствовал якорь, Он бы сравнивал с id div-ов и нужному div-у прописывал стиль show, а Li в котором title так же соответствовал этот якорь в ссылке снова прописывал стиль active Или такой JS скрипт будет слишком сложным? |
1111,
ищите темы подобные вашей, на форуме их очень много. засунуть id в title ... без комментариев прочтите учебник, половина ваших вопросов снимется. ниже добавлено event.preventDefault(); и другой эффект смены табов.
<!DOCTYPE html>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<style type="text/css">
body {
padding: 50px;
}
div {
box-sizing: border-box;
}
.container {
box-shadow: 0 0 10px 1px #cccccc;
width: 976px;
border-top: none;
border-radius: 6px;
}
.cleafix {
content: "";
display: table;
clear:both;
}
/* табы */
.btn {
font-size: 14px;
color: inherit;
font-family: "Helvetica";
text-align: center;
padding: 5px 20px;
text-decoration: none;
}
#active {
color: #fff;
background-color: #C71D1A;
}
.active {
color: #fff !important;
background-color: #C71D1A;
}
.tabs {
width: 100%;
font-weight: bold;
}
.tabs {
overflow: auto;
list-style: none;
text-transform: uppercase;
padding: 0px;
margin: 0px;
}
.tabs li{
box-shadow: 0 0 5px 0px #cccccc;
color: #C71D1A;
float: left;
border: 2px solid #cccccc;
border-radius: 10px 10px 10px 10px;
margin-bottom: 2px;
}
.tabs li:nth-child(-n+4){
border-radius: 0px 0px 10px 10px;
}
.tabs li:not(:nth-child(-n+4)) {
border-top: none;
}
.tabs li:nth-child(n+4){
border-radius: 0px 0px 10px 10px;
}
.tabs li:nth-child(1){
border-radius: 5px 0px 10px 10px;
}
.tabs li:nth-child(4){
border-radius: 0px 5px 10px 10px;
}
.tabs li a {
float: left;
width: 200px;
height: 15px;
}
/* Контент табов */
.tab {
width: 100%;
text-align: center;
}
.tab-content h2 {
text-transform: uppercase;
color: #C71D1A;
}
.image-block-left {
float: left;
width:50%;
}
.image-block-right {
float: left;
width: 20%;
}
.image-block-left img {
width: 100%;
}
.image-block-right img {
width: 60%;
display: block;
}
.tab-content{
display: none;
}
</style>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script>
$(function() {
$('.tabs li').click(function(event){
event.preventDefault();
$('.tabs li').removeClass('active');
$(this).addClass('active');
$('.tab-content').fadeOut();
var activeTab = $(this).find('a').attr('href');
$(activeTab).fadeIn();
});
var hash = window.location.hash;
hash ? $("a[href='"+hash+"']").click() : $('.tabs li:first').click()
});
</script>
</head>
<body>
<div class="container">
<ul id="tabs" class="tabs">
<li><a title="" class="btn" href="#tab1">sp13 Ink</a></li>
<li><a title="" class="btn" href="#tab2">sp14 Foxy</a></li>
<li><a title="" class="btn" href="#tab3">sp15 Gray Cloud</a></li>
<li><a class="btn" href="#">sp17 British Green</a></li>
<li><a class="btn" href="#">sp15 Gray Cloud</a></li>
<li><a class="btn" href="#">sp19 Warm Sand</a></li>
<li><a class="btn" href="#">sp20 Sorbet</a></li>
<li><a class="btn" href="#">sp14 Foxy</a></li>
</ul>
<div id="content" class="tab">
<div id="tab1" class="tab-content">
<div class="image cleafix">
<div class="image-block-left">
<img src="http://u8.filesonload.ru/17c7fa4c1f220efcfa8201d8e834c0ca/9f3db0370ab59af37f722f3e52923ae8.jpg">
</div>
<div class="image-block-right">
<img src="http://u8.filesonload.ru/17c7fa4c1f220efcfa8201d8e834c0ca/a80bc4b3029a95b103f3f063e5967f8c.jpg">
<img src="http://u8.filesonload.ru/17c7fa4c1f220efcfa8201d8e834c0ca/0b14bc7445fc00f036993a5a0c0aa376.jpg">
<img src="http://u8.filesonload.ru/17c7fa4c1f220efcfa8201d8e834c0ca/167fc973f04ef17dbabfa43a39826760.jpg">
<img src="http://u8.filesonload.ru/17c7fa4c1f220efcfa8201d8e834c0ca/b8619303f1b4cd9b8dc720df906e83d7.jpg">
</div>
</div>
</div>
<div id="tab2" class="tab-content">
<div class="image cleafix">
<div class="image-block-left">
<img src="http://u8.filesonload.ru/17c7fa4c1f220efcfa8201d8e834c0ca/9f3db0370ab59af37f722f3e52923ae8.jpg">
</div>
<div class="image-block-right">
<img src="http://u8.filesonload.ru/17c7fa4c1f220efcfa8201d8e834c0ca/a80bc4b3029a95b103f3f063e5967f8c.jpg">
</div>
</div>
</div>
</div>
</div>
</body>
</html>
|
рони,
Все получилось, благодарю! Пока углубился в css, но потихоньку начну изучать учебник Js. |
| Часовой пояс GMT +3, время: 17:53. |