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, время: 20:29. |