У меня есть сайт 1 страницы, который управляется jQuery scrollTo плагином, который, я думаю, не имеет значения в моем случае. Кажется, что проблема заключается в дизайне 1 страницы. Если я нажму на вкладку, весь дизайн будет испорчен, потому что вкладка переходит к тому, что может найти, чтобы сосредоточиться. Это включает в себя места, которые находятся за пределами области просмотра.
На самом деле я не хочу, чтобы вкладка фокусировалась на чем-либо, кроме моего div #contactForm после того, как вы нажали в поле первой формы. Вкладка могла бы сфокусироваться на этом, но только если хеш «#contact» находится внутри области просмотра. Есть ли способ реализовать что-то подобное, или вещь tab/focus всегда испортит 1-страничный дизайн, который имеет дело с контентом за пределами области просмотра?
Может быть, некоторые идеи могут помочь мне понять, что этот вопрос немного лучшефокус вызывает проблемы на дизайне сайта 1 страницы
ответ
Поскольку я не знаю, что ваш HTML выглядит, я позаимствовал демо ScrollTo. Вы можете попробовать сделать ссылку, которая имеет фокус внутри панели силы панели в поле зрения (demo):
Что-то вроде этого:
$('#pane-target li a').bind('focusin', function() {
$('#pane-target').scrollTo($(this).closest('li'), 800, {queue: true});
})
Изменено демки, чтобы удалить конфликт между затруднительным и нажмите на кнопку назад.
Update: Изменено demo работать с HTML/Script по ссылке вы предоставили. Мне пришлось немного изменить его, чтобы ссылки не конфликтуют. Кроме того, я переместил класс .selected
в элемент вместо ссылки только на первой панели. Надеюсь, я добавил достаточно комментариев, чтобы все было ясно.
$('a').bind('focusin click', function(e){
// focusin occurs before click
if (e.type == 'click') {
var tar = $(this).attr('href');
if ($(this).is('.panel')) {
// clicked on a.panel; scroll to destination
$('#wrapper').scrollTo(tar, 800);
//reset and highlight the clicked link
$('.item').removeClass('selected');
$(tar).addClass('selected');
//cancel the link default behavior
return false;
} else {
// clicked on link (not '.panel'), return true in case it's an external link
return true;
}
} else {
// link was focused
var time, item = $(this).closest('.item');
if (item.is('.selected')){
// if item is already in view (position it immediately)
time = 0;
} else {
// item is not in view, so smoothly scroll & update classes
time = 800;
$('.item').removeClass('selected');
item.addClass('selected');
}
$('#wrapper').scrollTo(item, time);
}
});
Привет, Харди, я обновил свой ответ и предоставил демоверсию ... надеюсь, я выбрал правильную версию. О, и демо на jsFiddle немного более «отрывисто», чем версия, которую я имел локально. – Mottie
Привет, Харди, я не могу помочь, не увидев ваш HTML, поскольку он не совпадает с исходным кодом - пустые панели будут работать. – Mottie
Попробуйте следующее: http: //jsfiddle.net/797Xj/5/... Я удалил весь лишний элемент 'id =" ", поскольку идентификаторы должны быть уникальными. Мне пришлось прокомментировать пару строк для слайдера nivo, чтобы демонстрация работала. – Mottie
Это поможет, если вы можете предоставить ссылку или образец кода. –
Извините, но в то время это только локально и слишком сложно вставить любое из них. Это вертикально/горизонтально скользящий веб-сайт, который использует разные панели (разделы) для заполнения окна просмотра, например #home, #contact, #about. При нормальном использовании вы достигаете этих панелей (разделов), нажав кнопку ссылки. Как обычно у вас есть в меню, но клавиша табуляции все испортила. Скажем, вы просматриваете раздел #home. – markimark
Если вы используете клавишу вкладки, окно просмотра внезапно выпрыгивает из секции #home, фокусируя другой элемент где-то и то, что вы видите, это просто разрушенный дизайн. Только тот, кто знает об этом проекте, узнает, о чем я говорю. Кто-нибудь там? – markimark