Esta debería ser una pregunta bastante básica, pero he dedicado la mayor parte de mi mañana a ello, y en este momento estoy a punto de arrojar la toalla. Ni siquiera tengo un poco de foo JS - pero he encontrado un trozo muy bien comentada de código que estoy esperando a utilizar para animar anclaje une es:Contabilización de un encabezado fijo con animate.scrolltop y (target) .offset(). Top;
$(document).ready(function() {
$('a[href*=#]').bind('click', function(e) {
e.preventDefault(); //prevent the "normal" behaviour which would be a "hard" jump
var target = $(this).attr("href"); //Get the target
var scrollToPosition = $(target).offset().top;
// perform animated scrolling by getting top-position of target-element and set it as scroll target
$('html, body').stop().animate({ scrollTop: scrollToPosition}, 600, function() {
location.hash = target; //attach the hash (#jumptarget) to the pageurl
});
return false;
});
});
que estoy tratando de conseguir que se 30px tierra sobre el desplazamiento() arriba -. me trató
$('html, body').stop().animate({ scrollTop: scrollToPosition -30}, 600,
que casi se trabaja - que va al lugar correcto, pero luego se recupera.
También he intentado
scrollTop: $(target).offset().top - 20 },
También he intentado
scrollTop: $(hash).offset().top + $('#access').outerHeight()
que no parece cambiar nada.
Parece que la respuesta podría estar aquí: JQuery page scroll issue with fixed header pero parece que no puedo conseguirlo.
Sé que esto es similar a otras preguntas, pero he examinado lo que pude encontrar y soy analfabeto lo suficiente como para no haber podido copiar/pegar nada que solucione el problema.
Estaría increíblemente agradecido por una solución.
Muchas gracias,
Martin
PS
Este otro trozo de código que encontré hace el trabajo pero es separar el hashtag a cabo, lo que hace que sea mayoría inútiles.
$(function(){
$('a[href*=#]').click(function() {
if (location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'')
&& location.hostname == this.hostname) {
var $target = $(this.hash);
$target = $target.length && $target || $('[name=' + this.hash.slice(1) +']');
if ($target.length) {
var targetOffset = $target.offset().top;
$('html,body').animate({scrollTop: targetOffset - 30}, 1000);
return false;
}
}
});
});
Muchas gracias Steve. Juro que voy a aprender lo suficiente como para entender lo que estoy copiando y paseando, espero que este año, pero esto me ahorró muchos dolores de cabeza. Cheers -m – Martin
Pregunta rápida: el código funciona a la perfección, pero el hash añadido a la url viene como "#undefined" - ¿alguna idea? – Martin
Sin preocupaciones amigo. ¡Solo sigue haciéndolo, sigue algunos buenos tutoriales en línea de forma regular y absorberás el conocimiento que buscas! Defo echa un vistazo a los sitios web de tutsplus ([Webdesigntuts] (http://webdesign.tutsplus.com/), [Nettuts] (http://net.tutsplus.com/)) y [Team Treehouse] (http: // teamtreehouse .com /) diseño web/desarrollo aprendiendo de Carsonified, todos excelentes recursos gratuitos. –