Estoy buscando una forma de incluir un efecto de diapositiva para cuando haces clic en un enlace a un ancla local arriba o abajo de la página.
Me gustaría algo donde tengas un enlace como este:
<a href="#nameofdivetc">link text, img etc.</a>
quizás con una clase agregada para que sepa que desea que este enlace sea un enlace deslizante:
<a href="#nameofdivetc" class="sliding-link">link text, img etc.</a>
Luego, si se hace clic en este enlace, la página se desliza hacia arriba o hacia abajo hasta el lugar requerido (podría ser un div, encabezado, parte superior de la página, etc.).
Esto es lo que tenía anteriormente:
$(document).ready(function(){
$(".scroll").click(function(event){
//prevent the default action for the click event
event.preventDefault();
//get the full url - like mysitecom/index.htm#home
var full_url = this.href;
//split the url by # and get the anchor target name - home in mysitecom/index.htm#home
var parts = full_url.split("#");
var trgt = parts[1];
//get the top offset of the target anchor
var target_offset = $("#"+trgt).offset();
var target_top = target_offset.top;
//goto that anchor by setting the body scroll top to anchor top
$('html, body').animate({scrollTop:target_top}, 1500, 'easeInSine');
});
});
jquery
jquery-plugins
anchor
slide
ade123
fuente
fuente
$("a[href^=#]").click(function(e) { e.preventDefault(); var dest = $(this).attr('href'); console.log(dest); $('html,body').animate({ scrollTop: $(dest).offset().top }, 'slow'); });
history.pushState(null, null, dest);
ya que está evitando el cambio de hash de ubicación predeterminadoSuponiendo que su atributo href se vincula a un div con la identificación de la etiqueta con el mismo nombre (como de costumbre), puede usar este código:
HTML
JAVASCRIPT - (Jquery)
fuente
name
. Cuando lo usa<a name="something"></a>
, también puede hacer referencia a él desde afuera, sin embargo, su solución no lo proporciona.Esto hizo mi vida mucho más fácil. Básicamente pones tu etiqueta de identificación de elementos y sus pergaminos sin mucho código
http://balupton.github.io/jquery-scrollto/
En Javascript
En tu html
Aquí estoy hasta abajo de la página
fuente
fuente
+
con cuerdas o vars concatena ellos, como:"#some_anchor"
. Realmente, el segundo concatanchor_id + ""
no es necesario, creo.También debe considerar que el objetivo tiene un relleno y, por lo tanto, usarlo en
position
lugar deoffset
. También puede tener en cuenta una posible barra de navegación que no desea que se superponga con el objetivo.fuente
history.pushState({}, "", this.href);
para mantener actualizada la urlMi enfoque con jQuery para hacer que todos los enlaces de anclaje incrustados se deslicen en lugar de saltar al instante
Es realmente similar a la respuesta de Santi Núñez, pero es más confiable .
Apoyo
fuente
Me quedé con mi código original y también incluí un desvanecimiento en el enlace 'back-to-top' haciendo uso de este código y un poco desde aquí también:
http://webdesignerwall.com/tutorials/animated-scroll-to-top
Funciona bien :)
fuente
Es posible que desee agregar offsetTop y scrollTop valor en caso de que esté animando no toda la página, sino algo de contenido anidado.
p.ej :
fuente
Desplazamiento lento SS
Esta solución no requiere etiquetas de anclaje pero, por supuesto, debe hacer coincidir el botón de menú (atributo arbitrario, 'ss', por ejemplo) con la identificación del elemento de destino en su html.
ss="about"
te lleva aid="about"
Violín
https://jsfiddle.net/Hastig/stcstmph/4/
fuente
Aquí está la solución que funcionó para mí. Esta es una función genérica que funciona para todas las
a
etiquetas que se refieren a un nombrea
Nota 1: asegúrese de utilizar comillas dobles
"
en su html. Si usa comillas simples, cambie la parte anterior del código avar target = $("a[name='" + name.substring(1) + "']");
Nota 2: en algunos casos, especialmente cuando usa la barra adhesiva de la rutina de carga, el nombre
a
se ocultará debajo de la barra de navegación. En esos casos (o cualquier otro caso similar), puede reducir el número de píxeles de su desplazamiento para lograr la ubicación óptima. Por ejemplo:$('html,body').animate({ scrollTop: $(target).offset().top - 15 }, 'slow');
lo llevará a lostarget
15 píxeles restantes en la parte superior.fuente
Me topé con este ejemplo en https://css-tricks.com/snippets/jquery/smooth-scrolling/ explicando cada línea de código. Encontré que esta es la mejor opción.
https://css-tricks.com/snippets/jquery/smooth-scrolling/
Puedes ser nativo:
o con jquery:
fuente
Ok, el método más simple es: -
Dentro de la función de clic (Jquery): -
HTML
fuente
Pruébalo aquí:
http://jsbin.com/ucati4
fuente
La siguiente solución funcionó para mí:
fuente