2010-10-16 2 views
0

У меня есть сайт 1 страницы, который управляется jQuery scrollTo плагином, который, я думаю, не имеет значения в моем случае. Кажется, что проблема заключается в дизайне 1 страницы. Если я нажму на вкладку, весь дизайн будет испорчен, потому что вкладка переходит к тому, что может найти, чтобы сосредоточиться. Это включает в себя места, которые находятся за пределами области просмотра.
На самом деле я не хочу, чтобы вкладка фокусировалась на чем-либо, кроме моего div #contactForm после того, как вы нажали в поле первой формы. Вкладка могла бы сфокусироваться на этом, но только если хеш «#contact» находится внутри области просмотра. Есть ли способ реализовать что-то подобное, или вещь tab/focus всегда испортит 1-страничный дизайн, который имеет дело с контентом за пределами области просмотра?

Может быть, некоторые идеи могут помочь мне понять, что этот вопрос немного лучшефокус вызывает проблемы на дизайне сайта 1 страницы

+0

Это поможет, если вы можете предоставить ссылку или образец кода. –

+0

Извините, но в то время это только локально и слишком сложно вставить любое из них. Это вертикально/горизонтально скользящий веб-сайт, который использует разные панели (разделы) для заполнения окна просмотра, например #home, #contact, #about. При нормальном использовании вы достигаете этих панелей (разделов), нажав кнопку ссылки. Как обычно у вас есть в меню, но клавиша табуляции все испортила. Скажем, вы просматриваете раздел #home. – markimark

+0

Если вы используете клавишу вкладки, окно просмотра внезапно выпрыгивает из секции #home, фокусируя другой элемент где-то и то, что вы видите, это просто разрушенный дизайн. Только тот, кто знает об этом проекте, узнает, о чем я говорю. Кто-нибудь там? – markimark

ответ

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); 
    } 

}); 
+0

Привет, Харди, я обновил свой ответ и предоставил демоверсию ... надеюсь, я выбрал правильную версию. О, и демо на jsFiddle немного более «отрывисто», чем версия, которую я имел локально. – Mottie

+0

Привет, Харди, я не могу помочь, не увидев ваш HTML, поскольку он не совпадает с исходным кодом - пустые панели будут работать. – Mottie

+0

Попробуйте следующее: http: //jsfiddle.net/797Xj/5/... Я удалил весь лишний элемент 'id =" ", поскольку идентификаторы должны быть уникальными. Мне пришлось прокомментировать пару строк для слайдера nivo, чтобы демонстрация работала. – Mottie

 Смежные вопросы

  • Нет связанных вопросов^_^