Membuat Smooth Scroll Back To Top dengan jQuery

Membuat Smooth Scroll Back To Top di Blogger. Bagi sebagian sobat mungkin sudah familiar dengan kata-kata smooth scroll back to top / kembali ke atas. Smooth sendiri berarti lembut. Jadi smooth scroll artinya menggulung dengan lembut. Untuk membuat Tombol Back to Top biasa, mudah saja sebetulnya, tinggal menambahkan kode # akan tetapi kembali ke atas secara langsung tidak lembut.

Tombol back to top biasanya digunakan pada blog dengan artikel yang panjang, untuk memudahkan pengunjung melihat kembali artikel di atas. Ada beberapa cara untuk menambahkan tombol back to top ini.

Di sini akan saya share cara yang termudah, tanpa Edit HTML. Hanya menambahkan widget saja. Ada dua Style yang akan saya berikan, silahkan sobat pake mana suka.

Style1 (tanpa fade in dan fade out)

Maksud tanpa fade in dan fade out di sini adalah, tombol akan langsung muncul begitu blog dibuka. Untuk lebih memahaminya, silahkan kunjungi dulu DEMO-nya DISINI.
Setelah melihat demo, bandingkan dengan tombol kembali ke atas yang ada di blog ini.

Untuk membuatnya, silahkan tambahkan widget HTML/JavaScript, masukan kode ini :
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>

<a style="display:scroll;position:fixed;bottom:5px;right:5px;" href='javascript:void(0);' onclick='jQuery(&apos;html, body&apos;).animate({scrollTop:0}, &apos;slow&apos;);' title="Kembali ke atas"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQ3_Q0tcWL_pZ4j2oV5aWolHEusQkpsU4apruHkJ-qMhsWPF_8MQTERpXWjN4Laj609dNFYnV8_p4YqVTwmMUmzFQiFXiL3Z4UIKaBZd5QERF-qh3UxrigfcBsE7tfhhejFEtOvnsQU8A/s400/Back-to-top.png" /></a>

Style2 (dengan fade in dan fade out)

Maksud fade in dan fade out disini adalah, tombol tidak akan langsung muncul kecuali telah di scroll ke bawah. Untuk DEMO lihat saja Blog ini sob :)

Untuk membuatnya, tambahkan widget HTML/JavaScript dan masukan kode ini :
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>

<script type="text/javascript" >
var scrolltotop={
//startline: Integer. Number of pixels from top of doc scrollbar is scrolled before showing control
//scrollto: Keyword (Integer, or "Scroll_to_Element_ID"). How far to scroll document up when control is clicked on (0=top).
setting: {startline:100, scrollto: 0, scrollduration:1000, fadeduration:[500, 100]},
controlHTML: '<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQ3_Q0tcWL_pZ4j2oV5aWolHEusQkpsU4apruHkJ-qMhsWPF_8MQTERpXWjN4Laj609dNFYnV8_p4YqVTwmMUmzFQiFXiL3Z4UIKaBZd5QERF-qh3UxrigfcBsE7tfhhejFEtOvnsQU8A/s400/Back-to-top.png" />', //HTML for control, which is auto wrapped in DIV w/ ID="topcontrol"
controlattrs: {offsetx:5, offsety:5}, //jarak ke kanan / bawah
anchorkeyword: '#top', //Enter href value of HTML anchors on the page that should also act as "Scroll Up" links

state: {isvisible:false, shouldvisible:false},

scrollup:function(){
if (!this.cssfixedsupport) //if control is positioned using JavaScript
this.$control.css({opacity:0}) //hide control immediately after clicking it
var dest=isNaN(this.setting.scrollto)? this.setting.scrollto : parseInt(this.setting.scrollto)
if (typeof dest=="string" && jQuery('#'+dest).length==1) //check element set by string exists
dest=jQuery('#'+dest).offset().top
else
dest=0
this.$body.animate({scrollTop: dest}, this.setting.scrollduration);
},

keepfixed:function(){
var $window=jQuery(window)
var controlx=$window.scrollLeft() + $window.width() - this.$control.width() - this.controlattrs.offsetx
var controly=$window.scrollTop() + $window.height() - this.$control.height() - this.controlattrs.offsety
this.$control.css({left:controlx+'px', top:controly+'px'})
},

togglecontrol:function(){
var scrolltop=jQuery(window).scrollTop()
if (!this.cssfixedsupport)
this.keepfixed()
this.state.shouldvisible=(scrolltop>=this.setting.startline)? true : false
if (this.state.shouldvisible && !this.state.isvisible){
this.$control.stop().animate({opacity:1}, this.setting.fadeduration[0])
this.state.isvisible=true
}
else if (this.state.shouldvisible==false && this.state.isvisible){
this.$control.stop().animate({opacity:0}, this.setting.fadeduration[1])
this.state.isvisible=false
}
},

init:function(){
jQuery(document).ready(function($){
var mainobj=scrolltotop
var iebrws=document.all
mainobj.cssfixedsupport=!iebrws || iebrws && document.compatMode=="CSS1Compat" && window.XMLHttpRequest //not IE or IE7+ browsers in standards mode
mainobj.$body=(window.opera)? (document.compatMode=="CSS1Compat"? $('html') : $('body')) : $('html,body')
mainobj.$control=$('<div id="topcontrol">'+mainobj.controlHTML+'</div>')
.css({position:mainobj.cssfixedsupport? 'fixed' : 'absolute', bottom:mainobj.controlattrs.offsety, right:mainobj.controlattrs.offsetx, opacity:0, cursor:'pointer'})
.attr({title:'Kembali ke Atas'})
.click(function(){mainobj.scrollup(); return false})
.appendTo('body')
if (document.all && !window.XMLHttpRequest && mainobj.$control.text()!='') //loose check for IE6 and below, plus whether control contains any text
mainobj.$control.css({width:mainobj.$control.width()}) //IE6- seems to require an explicit width on a DIV containing text
mainobj.togglecontrol()
$('a[href="' + mainobj.anchorkeyword +'"]').click(function(){
mainobj.scrollup()
return false
})
$(window).bind('scroll resize', function(e){
mainobj.togglecontrol()
})
})
}
}
scrolltotop.init()
</script>

Kostumisasi

Untuk mengganti tombol, ganti image url yang berwarna merah
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQ3_Q0tcWL_pZ4j2oV5aWolHEusQkpsU4apruHkJ-qMhsWPF_8MQTERpXWjN4Laj609dNFYnV8_p4YqVTwmMUmzFQiFXiL3Z4UIKaBZd5QERF-qh3UxrigfcBsE7tfhhejFEtOvnsQU8A/s400/Back-to-top.png
Untuk mengganti tulisan Kembali ke Atas, silahkan edit juga tulisan Kembali ke Atas yang berwarna merah.

Semoga tulisan cara membuat smooth scroll back to top ini bermanfaat. Happy Blogging !

0 comments:

Post a Comment

Perhatian
- Berkomentarlah Dengan Sopan Dan Baik
- Mohon Untuk Tidak Berkomentar Junk, Sara, Promosi Web/Blog, Dll
- Bila Mendapat Kesulitan, Silahkan Hubungi Admin ( Klik Disini )
Terima Kasih...