Если я вас правильно понял, вы хотите показать конкретную вкладку при загрузке, если хеш был добавлен в URL страницы, верно? Если это так, вы должны проанализировать window.location.href
и проверить наличие хеш-тега в URL. Если он присутствует, хеш-значение, например, '# tab2' должен показывать контейнер с тем же идентификатором.
Обновленный код:
var currentUrl= window.location.href;
if (currentUrl.indexOf('#') > -1) {
var hashTag= currentUrl.substring(currentUrl.indexOf('#')+1);
var targetBox = $('.tab#' + hashTag);
TweenMax.to( currentbox, 0.2, {ease:Power4.easeOut,
className: '-=visible', autoAlpha: 0, onComplete: boxIn, onCompleteParams: [targetBox] });
// added: highlight the proper buttons and remove the default "active" element
$('.active').removeClass('active');
$('.' + hashTag + '-control').addClass('active');
}
Чтобы выделить кнопки, вам нужно назначить им класс (это самый простой метод, поскольку вы не можете использовать повторяющиеся идентификаторы, поэтому мы идентифицируем вкладку по идентификатору, а кнопку - по классу):
<button class="tab01-control but active" id="but1" data-target="tab01">slide 1</button>
<button class="tab02-control but" id="but2" data-target="tab02">slide 2</button>
Ваш boxIn(targetBox)
метод ожидает получить объект jQuery в качестве параметра «targetBox», и это была строка. Просто добавьте "# tab02" к вашему URL, когда вы тестируете его локально, чтобы появилась вторая вкладка.
Примечание:
Ваш фрагмент кода в настоящее время не работает правильно, вы должны включить ...
<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/2.1.3/TweenMax.min.js"></script>
... чтобы анимация работала должным образом, в противном случае вы получите сообщение об ошибке JS при нажатии одной из кнопок.
Редактировать 1
Поскольку вы спросили, как использовать значимые "имена хешей" вместо идентификаторов элемента управления, таких как tab01
, это можно сделать с помощью простого переключателя:
let hashTag = window.location.hash;
if (hashTag !== '') {
hashTag = hashTag.substring(1);
let targetName = '';
switch (hashTag) {
case "home":
targetName = 'tab01';
break;
case "profile":
targetName = 'tab02';
break;
}
if (targetName !== '') {
var targetBox = $('.tab#' + targetName);
...
}