11 Tháng 8, 2016 Tác giả: Thịnh Nguyễn Chuyên mục: NukeViet Themes, WordPress Themes

Hướng dẫn tạo nút Back To Top cho website của bạn

back-to-top

Nút Back To Top hay còn gọi một cách đơn giản là nút trượt lên trên khi bạn đang ở cuối website. Nhưng nếu như bạn đang sử dụng framework thì sẽ có một số framework có sẵn nhưng đa phần thì cái này sẽ loại khỏi bộ framework bởi độ ưu tiên cao cũng như nó cũng không khó và phức tạp gì cả. Nhưng bạn đang cầm tìm một nút “Back To Top” hoạt động mượt mà uyển chuyển thì Thịnh chia sẻ với bạn đoạn mã tạo nút “Back To Top” cho bạn.

Để có được nút backtotop thì bạn cần phải biết chút ít jquery, html và css. Khi bạn viết đoạn code này nó sẽ được tính theo dạng như sau, khi bắt đầu kéo xuống thì nút backtotop bắt đầu hiện lên và cho tới tận khi bạn kéo thanh cuộn xuống cuối site. Nhưng khi bạn click vào nó thì nó sẽ tự động nhảy về trên đầu trang theo dạng trượt  và nó sẽ tự ẩn đi theo tính toán sẵn.

Nhưng điều quan trọng nữa là bạn cần thiết kế nút “Back To Top” đẹp hợp với site thì người dùng mới có cảm tình sử dụng nó.

Sau đây là hướng dẫn viết đoạn mã nút backtotop dành cho bạn.

Đầu tiên bạn cần soạn đoạn html như sau


<a href="#" class="cd-top">Back To Top</a>

Tiếp đến bạn viết đoạn css để trình bày hiển thị cũng như cho nó sang bên góc phải bên dưới màn hình như Thịnh đang sử dụng trên chính blog của thịnh


/* back to top */
a.cd-top {
display: inline-block;
height: 40px;
width: 40px;
position: fixed;
bottom: 10px;
right: 10px;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.05);
/* image replacement properties */
overflow: hidden;
text-indent: 100%;
white-space: nowrap;
background: #3097D1 url("https://thinhweb.com/wp-content/themes/thinhweb/images/cd-top-arrow.svg") no-repeat center 50%;
visibility: hidden;
opacity: 0;
-webkit-transition: opacity .3s 0s, visibility 0s .3s;
-moz-transition: opacity .3s 0s, visibility 0s .3s;
transition: opacity .3s 0s, visibility 0s .3s;
}
a.cd-top.cd-is-visible, a.cd-top.cd-fade-out, .no-touch a.cd-top:hover {
-webkit-transition: opacity .3s 0s, visibility 0s 0s;
-moz-transition: opacity .3s 0s, visibility 0s 0s;
transition: opacity .3s 0s, visibility 0s 0s;
}

a.cd-top, a.cd-top:visited, a.cd-top:hover {
color: #CCCCCC;
text-decoration: none;
}

a.cd-top.cd-is-visible {
/* the button becomes visible */
visibility: visible;
opacity: 1;
}
a.cd-top.cd-fade-out {
/* if the user keeps scrolling down, the button is out of focus and becomes less visible */
opacity: 1;
}

Tiếp đến bạn truy cập đường dẫn lấy hình ảnh nút backtotop của Thịnh: https://thinhweb.com/wp-content/themes/thinhweb/images/cd-top-arrow.svg

Tiếp theo bạn tạo một file backtotop.js và gọi đường dẫn tới file backtotop.js. Trong đó bạn soạn đoạn code như sau để nó thực thi tính toán khi đến vị trí thích hợp nó ẩn và hiện nút “Back To Top” bên trên.


jQuery(document).ready(function($){
// browser window scroll (in pixels) after which the "back to top" link is shown
var offset = 300,
//browser window scroll (in pixels) after which the "back to top" link opacity is reduced
offset_opacity = 1200,
//duration of the top scrolling animation (in ms)
scroll_top_duration = 700,
//grab the "back to top" link
$back_to_top = $('.cd-top');

//hide or show the "back to top" link
$(window).scroll(function(){
( $(this).scrollTop() > offset ) ? $back_to_top.addClass('cd-is-visible') : $back_to_top.removeClass('cd-is-visible cd-fade-out');
if( $(this).scrollTop() > offset_opacity ) {
$back_to_top.addClass('cd-fade-out');
}
});

//smooth scroll to top
$back_to_top.on('click', function(event){
event.preventDefault();
$('body,html').animate({
scrollTop: 0 ,
}, scroll_top_duration
);
});

});

Như vậy là xong, đơn giản chỉ có vậy thôi. Chúc các bạn thành công

Tác giả: Thịnh Nguyễn

Chuyên gia chia sẻ kiến thức về lập trình, thiết kế web và tối ưu hệ thống server.

Chia sẻ bài viết này:

10 bình luận

  • Quyết Thành

    12/05/2020 lúc 14:39

    Em chào Bác, xin làm ơn cho em hỏi, sao nút Back To Top của em nó chỉ hiện khoảng 3s trên màn, xong scroll xuống không hiện nữa vậy ạ? Em cần phải sửa ở chỗ nào ạ? Em cảm ơn Bác nhiều.

    • Thịnh Nguyễn

      12/05/2020 lúc 14:56

      Bạn bổ sung thêm z-index cho chỉ số nó lớn hơn các phần khác, cái này là do theme bạn xài dùng z-index nhiều và số nó lớn hơn của backtotop

  • hamhochois

    13/06/2019 lúc 15:02

    Bài viết hay và bỗ ích.
    Cho mình hỏi thêm >>> mình muốn di chuyển nút cuộn lên trên tí thay vì sát phía dưới thì làm sao ? Khi người khác gắn – làm sao biết tìm trong thư mục nào trong host ?

    • Thịnh Nguyễn

      19/07/2019 lúc 15:53

      Bạn sẽ phải dùng css điều chỉnh chỉ số bottom tăng lên là nó cách mép dưới ra nheiuef hơn

  • Vinh Tu

    03/01/2019 lúc 18:10

    ad ơi. cho em hỏi nếu không sử dung iquery mà sử dụng react thì phải làm sao ạ. cám ơn ad nhiều reply mình sớmnhé

  • hiệp

    09/07/2018 lúc 03:42

    hay lắm, cám ơn ad

  • Lư Khúc Thành

    08/03/2018 lúc 10:26

    Ngoài cách trên thì mình còn thấy, vào trang https://scrolltotop.org rồi chọn nút mình thích xong dán code tương ứng vào á

    • Thịnh Nguyễn

      09/03/2018 lúc 11:34

      Cách đó thì tiện thật nhưng bạn sẽ làm giảm tốc độ site của bạn vì bạn phải load 1 file js từ nhà người ta, hơn nữa js đó có thể là một mối nguy xâm hại site bạn, file js bên họ khá nhiều lệnh trong khi cách hướng dẫn của mình chỉ vài dòng lệnh nhẹ hơn rất nhiều nhé. Bạn chắc chưa gặp trường hợp là load file js từ nhà người ta mà site bạn hiện búa xua quảng cáo các thứ ko cần thiết và site bị chậm

  • Phạm Hồng Minh

    19/07/2017 lúc 14:39

    Bạn ơi làm tế nào để cũng với nút này mình có thể trượt xuống một vùng bất kì trên trang web. Giống như nút Discover now trong web này ạ: http://www.tooplate.com/view/2083-steak-house. Bạn trả lời nhanh giúp mình, mình đang cần gấp ạ

    • Thịnh Nguyễn

      19/07/2017 lúc 19:26

      Mình đâu có thấy nút Discover now nào đâu?
      Nếu bạn muốn lúc nào nó cũng hiện thì trong class css: a.cd-top bạn xóa 2 đoạn lệnh sau:
      visibility: hidden;
      opacity: 1;

Để lại bình luận của bạn

Địa chỉ email của bạn sẽ không được công bố rộng rãi. Các trường bắt buộc được đánh dấu *

Bài viết liên quan

Kích thước chuẩn khi làm giao diện tùy biến responsive cho website

Khi bạn thiết kế webiste responsive thì bạn sẽ không thể kiểm soát được có bao nhiêu kích thước màn hình của các thiết bị. Chính vì thế bữa nay thinhweb chia sẻ với bạn kích thước màn hình chuẩn cho các thiết bị. Điều này giúp cho việc bạn thiết kế giao diện tùy […]

Xem chi tiết →

Hướng dẫn tạo phân trang pagination trong WordPress

Phân trang cho một website là điều khá là quan trọng, bởi khi số lượng bài hiển thị vượt quá giới hạn cho phép theo cấu hình “Đọc” trong trang quản trị của website thì bạn cần phải phân trang cho website để người truy cập có thể sang các trang tiếp theo để coi […]

Xem chi tiết →

Hướng dẫn sử dụng Font Awesome làm icon cho menu nukeviet

Font Awesome là một bộ font end dùng làm icon thịnh hành nhất hiện nay và chính vì nó tiện lợi với nhiều kiểu icon khác nhau cũng như giảm lượng tải trang web mà vì thế nó đã được tích hợp vào trong mã nguồn NukeViet. Nhưng khi tích hợp vào trong NukeViet thì […]

Xem chi tiết →