Saya mencari cara untuk memasukkan efek slide ketika Anda mengklik tautan ke jangkar lokal baik ke atas atau ke bawah halaman.
Saya ingin sesuatu di mana Anda memiliki tautan seperti:
<a href="#nameofdivetc">link text, img etc.</a>
mungkin dengan kelas yang ditambahkan sehingga Anda tahu Anda ingin tautan ini menjadi tautan geser:
<a href="#nameofdivetc" class="sliding-link">link text, img etc.</a>
Kemudian jika tautan ini diklik, halaman tersebut meluncur ke atas atau ke bawah ke tempat yang diperlukan (bisa berupa div, tajuk, atas halaman dll).
Inilah yang saya miliki sebelumnya:
$(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
sumber
sumber
$("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);
karena Anda mencegah perubahan hash lokasi defaultDengan asumsi bahwa atribut href Anda terhubung ke div dengan id tag dengan nama yang sama (seperti biasa), Anda dapat menggunakan kode ini:
HTML
JAVASCRIPT - (Jquery)
sumber
name
. Ketika Anda menggunakan<a name="something"></a>
, Anda dapat referensi dari luar juga, namun solusi Anda tidak menyediakan itu.Ini membuat hidup saya jauh lebih mudah. Anda pada dasarnya memasukkan tag id elemen Anda dan gulir ke sana tanpa banyak kode
http://balupton.github.io/jquery-scrollto/
Dalam Javascript
Di html Anda
Di sini saya sepanjang halaman
sumber
sumber
+
dengan string atau vars merangkai mereka, seperti:"#some_anchor"
. Sungguh, konser keduaanchor_id + ""
tidak diperlukan, saya percaya.Anda juga harus mempertimbangkan bahwa target memiliki padding dan karenanya digunakan
position
sebagai gantinyaoffset
. Anda juga dapat memperhitungkan nav bar potensial yang tidak ingin tumpang tindih target.sumber
history.pushState({}, "", this.href);
untuk menjaga url diperbaruiPendekatan saya dengan jQuery untuk membuat semua tautan jangkar yang disematkan meluncur, bukannya melompat secara instan
Ini benar-benar mirip dengan jawaban oleh Santi Nunez tetapi lebih dapat diandalkan .
Dukung
sumber
Saya terjebak dengan kode asli saya dan juga memasukkan tautan 'back-to-top' yang menggunakan kode ini dan sedikit dari sini juga:
http://webdesignerwall.com/tutorials/animated-scroll-to-top
Bekerja dengan baik :)
sumber
Anda mungkin ingin menambahkan nilai offsetTop dan scrollTop seandainya Anda menjiwai bukan seluruh halaman, melainkan beberapa konten bersarang.
misalnya:
sumber
SS Gulung Lambat
Solusi ini tidak memerlukan tag anchor tetapi tentu saja Anda harus mencocokkan tombol menu (atribut sewenang-wenang, misalnya 'ss') dengan id elemen tujuan di html Anda.
ss="about"
membawamu keid="about"
Biola
https://jsfiddle.net/Hastig/stcstmph/4/
sumber
Inilah solusi yang bekerja untuk saya. Ini adalah fungsi generik yang berfungsi untuk semua
a
tag yang merujuk pada namaa
Catatan 1: Pastikan Anda menggunakan tanda kutip ganda
"
dalam html Anda. Jika Anda menggunakan tanda kutip tunggal, ubah bagian kode di atas kevar target = $("a[name='" + name.substring(1) + "']");
Catatan 2: Dalam beberapa kasus, terutama ketika Anda menggunakan sticky bar dari bootstrap, namanya
a
akan bersembunyi di bawah bilah navigasi. Dalam kasus tersebut (atau kasus serupa), Anda dapat mengurangi jumlah piksel dari gulir untuk mencapai lokasi yang optimal. Sebagai contoh:$('html,body').animate({ scrollTop: $(target).offset().top - 15 }, 'slow');
akan membawa Anda ketarget
dengan 15 piksel tersisa di atas.sumber
Saya menemukan contoh ini di https://css-tricks.com/snippets/jquery/smooth-scrolling/ menjelaskan setiap baris kode. Saya menemukan ini menjadi pilihan terbaik.
https://css-tricks.com/snippets/jquery/smooth-scrolling/
Anda bisa menjadi asli:
atau dengan jquery:
sumber
Ok metode paling sederhana adalah: -
Dalam fungsi klik (Jquery): -
HTML
sumber
Uji di sini:
http://jsbin.com/ucati4
sumber
solusi berikut ini bekerja untuk saya:
sumber