cOAPerator,
это $('a[href^="#"]') выборка ссылок начинающихся на # ----на такую http://sait.ru/category/statia.htnl#pod-razdel1 он не среагирует -- лучше конечно видет код над которым вы мучаитесь ^ начало * содержит $('a[href*="#"]').click(function(){ // добавляем обрезку var target = $(this).attr('href').replace(/^[^#]+/,''); $('html, body').animate({scrollTop: target == '#top' ? 0 :$(target).offset().top}, 800); return false; }); |
рони, над вот этим кодом и мучаюсь )
вот это было $(function(){ $("#back-top").hide(); $(function () { $(window).scroll(function () { if ($(this).scrollTop() > 150) { $('#back-top').fadeIn(); } else { $('#back-top').fadeOut(); } }); $('#back-top a').click(function () { $('body,html').animate({scrollTop: 0}, 800); return false; }); }); }); вот это стало $(function(){ $("#back-top").hide(); $(window).scroll(function () { if ($(this).scrollTop() > 150) { $('#back-top').fadeIn(); } else { $('#back-top').fadeOut(); } }); $('a[href*="#"]').click(function(){ // добавляем обрезку var target = $(this).attr('href').replace(/^[^#]+/,''); $('html, body').animate({scrollTop: target == '#top' ? 0 :$(target).offset().top}, 800); return false; }); }); но ссылки другие не работают почему то (кроме кнопки наверх, она работает), а в тестовом скрипте работают, хотя в тестовом скрипте и в рабочем они одинаковые. я похоже догадываюсь в чем проблема, в тестовом скрипте якоря <a id="center">center</a> а у меня в рабочем скрипте <a name="center">center</a> как положено по спецификации потому и не работают ссылки простые. как изменить скрипт чтобы с нормальными якорями работал скрипт? использовать id нет возможности, так как якоря делаются редактором |
cOAPerator,
про спецификации ... В XHTML и HTML5 вместо name для определения якоря требуется указывать атрибут id. а селектор изменить не судьба ? $('a[href*="#"]').click(function(){ // добавляем обрезку var target = $(this).attr('href').replace(/^[^#]+#/,''); $('html, body').animate({scrollTop: target == 'top' ? 0 :$("[name='" + target + "']").offset().top}, 800); return false; }); для медитации Селекторы jquery |
Цитата:
В XHTML и HTML5 вместо name для определения якоря требуется указывать атрибут id. у меня html 4.01 |
cOAPerator,
а самому подумать? как у вас кнопки вверх href выглядит? |
рони, все я понял свою ошибку. исправил и все заработало
еще 1 последний вопрос, как отступ сделать от верха после прокрутки к якорю? а то у меня вверху прикрепленное меню высотой 50px и после перехода к якорю скрывается под менюшкой. я думал в css задать отступ, но это не вариант. если правильно думаю то вот в этой строке $('html, body').animate({scrollTop: target == 'top' ? 0 :$("[name='" + target + "']").offset().top}, 800); 0 надо поменять на 100 - получится отступ в 100 px. |
cOAPerator,
да 0 на 100 :cray: это для прокрутки кверху --- если к якорям $("[name='" + target + "']").offset().top + 100 и пробуйте прежде чем спросить. и читайте доку прежде чем что-то делать. |
рони, великодушное спасибо! за помощь и терпение! побольше бы таких людей как Вы!
Благодяря Вам я теперь понял как писать подобные скрипты. |
рони, тут тобнаружился косяк один, неправильно прощитывается отступ:
посмотреть рабочий вариант можно тут _http://starnox.ru/articles/php/upload-failov-i-vse-s-etim-svyazannoe.html в опере и лисе все нормально прокручивает, соответственно просчет отступа нормально происходит, проблема в хроме и webkit подобных. Добавление: проблему решил сам, спасибо. |
Цитата:
две картинки -- правильно и неправильно и ещё стрелками указать - но возможно вам поможет css strong{ display: inline-block; } |
Часовой пояс GMT +3, время: 04:18. |