Hot Post

Cố định thanh Menu (Sticky Menu) và Widget khi cuộn trang cho Blogger


"Sticky" Floating Menu & Widget in Blogger

Vào một số website các bạn sẽ thấy thanh menu hoặc 1 số widget nhất luôn cố định khi cuộn trang, người ta gọi đó "Sticky Menu hoặc Widget". Việc giữ cố định Menu hoặc Widget như vậy rất tiện dụng cho các thao tác của độc giả. Bạn không cần phải cuộn chuột lên đầu trang để lựa chọn các mục của Menu hoặc Widget qua đó giúp giảm bớt các thao tác không cần thiết và tăng lượng tương tác với bạn đọc. Có một lưu ý nhỏ các bạn không nên sticky các banner quảng cáo vì có thể vi phạm chính sách của họ, ví dụ như Google Adsense.

Cố định thanh Menu (Sticky Menu) và Widget khi cuộn trang cho Blogger

Sticky Widget

1Vào Mẫu >> Chỉnh sửa HTML và dán đoạn script dưới đây vào trước thẻ </body>
<script type='text/javascript'>
//<![CDATA[
// Sticky Widget
function makemeSticky(e){function t(){var e=s.getBoundingClientRect();e.top<0?(n.className=a+" makesticking",n.style.width=i+"px"):n.className=a}var n=document.getElementById(e),s=document.createElement("div");n.parentNode.insertBefore(s,n);var i=n.offsetWidth,a=n.className+" makesticky";window.addEventListener("scroll",t,!1)}makemeSticky("HTML1");
//]]>
</script>

Với #HTML1 là ID của widget bạn cần dán cố định.

Xem thêm: Cách xác định ID của một Widget trong Blogger

2Tìm đến thẻ ]]></b:skin> và dán đoạn CSS dưới đây vào trước thẻ đó.
.makesticking{background:none!important;position:fixed!important;top:25px;z-index:99;-webkit-transform:translateZ(0);}
#HTML1 .widget-content {padding:0;margin:auto;}


Xem thêm: Sửa lỗi Sticky Widget chồng lấn vào Footer

Sticky Menu

1Trước tiên bạn cần xác định Class hoặc ID chứa menu, ví dụ #menu

Xem thêm: Cách xác định ID của một Widget trong Blogger

2Vào Mẫu >> Chỉnh sửa HTML và dán đoạn jQuery dưới đây vào trước thẻ </body>
<script type='text/javascript'>
//<![CDATA[
// Sticky Menu
$(function() {
  var top = $('#menu').offset().top - parseFloat($('#menu').css('marginTop').replace(/auto/, 0));
  var footTop = $('#footer').offset().top - parseFloat($('#footer').css('marginTop').replace(/auto/, 0));

  var maxY = footTop - $('#menu').outerHeight();

  $(window).scroll(function(evt) {
    var y = $(this).scrollTop();
    if (y > top) {
      if (y < maxY) {
        $('#menu').addClass('fixed').removeAttr('style');
      } else {
        $('#menu').removeClass('fixed').css({
          position: 'absolute',
          top: (maxY - top) + 'px'
        });
      }
    } else {
      $('#menu').removeClass('fixed');
    }
  });
});
//]]>
</script>

3Thêm thư viện jQuery dưới đây vào sau đoạn code trên nếu blog của bạn chưa có.
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>

4Thêm thuộc tính position: absolute; và set vị trí của Menu khi cuộn trang top: 0; bằng cách tìm đến thẻ ]]></b:skin> và dán đoạn CSS dưới đây vào trước thẻ đó.
#menu {
  position: absolute;
  width: 100%;
  max-width: 920px;
  height: 60px;
  margin: auto;
  background: #fc4f3f;
  z-index: 99;
}
#menu.fixed {
  position: fixed;
  top: 0;
  z-index: 99;
}

Chỉnh sửa đoạn code cho phù hợp với website của bạn

Xem thêm: Ẩn Sticky Menu khi cuộn xuống và hiện lại khi cuộn lên cho Blogger

Nếu có bất kỳ vấn đề khó khăn hay câu hỏi gì, bạn đừng ngần ngại, hãy để lại bình luận ở form bên dưới nhé.
Chúc bạn thành công!

Created by arlinadzgn/Iris Tips
Đăng ký nhận tin khuyến mãi, thủ thuật mới

Mẹo nhỏ khi bình luận
  • - Để viết chữ in đậm hãy sử dụng thẻ <b>chữ in đậm</b>
  • - Để viết chữ in nghiêng hãy sử dụng thẻ <i>chữ in nghiêng</i>
  • - Để viết code hãy sử dụng công cụ Conversion ở bên dưới để mã hóa và sau đó dán vào khung bình luận.
  • - Để chèn hình ảnh, video chỉ cần dán link trực tiếp của hình ảnh hoặc video vào khung bình luận (hỗ trợ: jpg, gif, png, bmp, Youtube).
  • - Bạn có thể upload hình ảnh, tập tin trực tiếp từ máy tính bằng cách sử dụng công cụ Up ảnh hoặc Up file ở bên dưới.
  • - Bạn có thể check vào ô Notify me ở khung nhận xét để nhận thông báo qua email khi ai đó trả lời bình luận của bạn.

34 Comments

  1. Điều này cho biết, bạn đang rất nôn Tết :D
    http://i.imgur.com/rKFpomD.jpg

    Trả lờiXóa
    Trả lời
    1. :o Có PTS gì không đấy chú :-dig chứ nào giờ vẫn để background như thế này mà có đổi gì đâu :+
      http://i.imgur.com/TrZg0dQ.png

      Xóa
    2. PTS gì mà siêu nhân dữ vậy ? :-O

      Xóa
    3. |-| Nhìn kỹ hình 1 so với hình 2 sẽ thấy có 1 vài chỗ "bất ổn" nhé :; Với lại nghi ngờ chú F12 lắm ah :-dig

      Xóa
  2. Cảm ơn nhiều, vẫn là bài viết của bạn dễ dàng thực hiện nhất. Mình đọc mấy trang khác toàn phải canh tùm lum à.

    Trả lờiXóa
    Trả lời
    1. bác comeback rồi ah ^^

      Xóa
    2. Nhớ em à, giờ chưa ngủ nhỉ

      Xóa
    3. Hên xui ;-P. Tại đang bận cái pj website bđs của ông anh nhờ làm nên ráng cày cho kịp deadline ấy mà.

      Xóa
  3. Muốn 2 cái widget dừng thì làm sao bạn nhỉ?

    Trả lờiXóa
    Trả lời
    1. Ah cái đó thì phải thêm js hoặc css vào. Bài đó viết cũng định viết lâu rồi mà quên mất, còn lưu ở nháp mới khoảng 50% @@ bạn đợi khoảng 30p rồi quay lại nhé

      Xóa
    2. Xem tại đây nhé /-ok
      http://iris-tips.blogspot.com/2017/03/sua-loi-sticky-widget-chong-lan-vao-footer-blogger.html

      Xóa
  4. Bạn ơi giúp mình với :(
    Nãy temp vẫn bình thường nhưng sau khi mình dùng code ở đây thì tự nhiên giờ widget recent comment và bài viết liên quan đều không hoạt động :(
    Hình như mình thay linh tinh code trên nên bị sao rồi. Xóa code sticky widget đi rồi mà vẫn bị. Ở blog test thì ksao.
    Code bạn đưa mình chèn như này
    1.
    <script type='text/javascript'>
    //<![CDATA[
    // Sticky Widget
    function makemeSticky(e){function t(){var e=s.getBoundingClientRect();e.top<0?(n.className=a+" makesticking",n.style.width=i+"px"):n.className=a}var n=document.getElementById(e),s=document.createElement("div");n.parentNode.insertBefore(s,n);var i=n.offsetWidth,a=n.className+" makesticky";window.addEventListener("scroll",t,!1)}makemeSticky("PopularPosts2,Label1");
    //]]>
    </script>

    2. trc ]]>
    .makesticking{background:none!important;position:fixed!important;top:25px;z-index:99;-webkit-transform:translateZ(0);}
    #PopularPosts2,#Label1 .widget-content {padding:0;margin:auto;}

    Mình gửi temp qua link cũ cho bạn rồi. Hay do mình tự ý thêm Label1 vào nên nó xung đột gây lỗi r ạ. Mình đã thay temp mới mà vẫn bị thế :(

    Trả lờiXóa
  5. à được rồi bạn ạ.
    chắc do hôm qua blogspot làm gì blog e thì phải. sáng bật lên mọi thứ lại bình thường hết rồi :3

    Trả lờiXóa
    Trả lời
    1. Uhm bạn hình như hôm qua Blogger bị lỗi hay cập nhật gì đó nên 1 số cái có vấn đề, giờ bình thường lại hết rồi ;-D /-st

      Xóa
    2. Ừ. Hôm qua mình sợ. Phải qua cầu cứu bạn luôn. Mà bạn ơi vụ đăng kí gg adsense hên xui nhỉ? Có 1 vài blog mình thấy do lâu quá thôi vì bài viết không có mấy nhưng đăng kí đc rồi, hay do blog đó dùng domain .com nên đc ưu ái hơn ạ?

      Xóa
    3. Cái đó cũng hên xui do người xét duyệt website bạn nữa, dùng free domain vẫn đăng ký được bình thường không sao hết, chủ yếu là nội dung trên trang thôi.

      Xóa
  6. Cho minh xin contac để tra đổi . Cảm ơn

    Trả lờiXóa
    Trả lời
    1. Bạn vào đây nhé
      http://iris-tips.blogspot.com/p/contact.html

      Xóa
  7. Mình có làm thanh menu ở bài này của bạn và đc rồi nhưng áp dụng sticky menu thì k đc mặc dù đã thay #menu thành #mcd-menu. bạn giúp mình với

    Trả lờiXóa
    Trả lời
    1. Quên mất link: https://iris-tips.blogspot.com/2015/12/pure-css3-mega-dropdown-menu-animation-horizontal.html

      Xóa
    2. Mình cũng thay thế rồi mà không được bạn ạ :((

      Xóa
    3. Bạn sửa trong bài kia <nav> thành <nav id="menu"> đoạn code bên bài này giữ nguyên, mình test ok rồi nhé
      https://goo.gl/7vgeyp

      Xóa
  8. OK mình làm đc rồi :)) tuyệt quá.
    Mà bạn ơi. Muốn làm 1 danh mục label như này thì làm ntn hả bạn?
    Trc mình có đọc đc 1 bài bên blog nc ngoài dạy gộp mà giờ k nhớ để tìm lại :(

    Trả lờiXóa
    Trả lời
    1. Danh muc label là sao bạn ;-? mình không hiểu lắm

      Xóa
  9. À mình cứ quên k đưa link demo.
    Đây bạn: https://chuyenmucanhdep.blogspot.com/2017/08/anh-bia-oi-anh-oi-en-hoa-cung-tan-inh.html
    Trong này là cái phần danh mục ngay đầu tiên của sidebar đó.

    Trả lờiXóa
    Trả lời
    1. Hình như là cái này
      http://iris-tips.blogspot.com/2016/11/an-hien-blogger-label-voi-jquery.html

      Xóa
    2. Đúng rồi bạn ạ :)) Cũng tựa tựa như này. Cơ mà nó nhiều label quá, giờ muốn làm thanh cuộn scrollbar cho nó để cho đỡ dài thì làm như nào ạ?

      Xóa
    3. Chỗ phần Hiển thị bạn có thể bấm vào ô Nhãn đã chọn để lọc lại chỉ hiển thị 1 sô label cần thiết thôi. Còn nếu muốn tạo thanh cuộn scrollbar thì bạn có thể tham khảo thử bài viết này.
      http://iris-tips.blogspot.com/2015/03/tao-thanh-cuon-scrollbar-cho-the-div-bang-css-cho-blogger.html

      Xóa
  10. Có cách nào view source bằng chuột phải hoặc ctrl+u mà nó trắng tinh blog lẫn source như này không iris? tại dùng chống chuột phải đôi khi bất tiện, mà mình lại k muốn bị lấy code?

    Trả lờiXóa
  11. http://www.bacsiwindows.com/?m=1

    Trả lờiXóa
    Trả lời
    1. 1 nùi code mà có trắng gì đâu
      http://imageshack.com/a/img922/3778/WbegvP.png

      Không có cách nào chống view source hoàn toàn đâu bạn, muốn bảo vệ data thì chỉ có cách là mã hóa code thôi. Mà có mã hóa thì sẽ có giải mã, chủ yếu trình của ai cao hơn thôi. Không có cái gì 100% đâu bạn :-D

      Xóa
  12. Thế đành chịu vậy. Tại mình thấy nhiều ng rip temp xong mang đi bán nên hơi buồn tí thôi

    Trả lờiXóa

Đăng nhập bằng Google


Cùng tham gia bình luận bài viết này nhé!