Tạo nút Scroll to Top khi cuộn trang xuống dưới

Blue

Founder
Thành viên BQT
Tham gia
25/02/2015
Bài viết
931
Được Like
1,553
Khi bạn đọc một bài viết dài sẽ rất mất thời gian khi muốn cuộn về menu ở header của trang, rất nhiều website đã tạo 1 nút gọi là scroll to top hoặc back to top nằm ở góc phải giao diện. Khi nhấn vào nút này sẽ giúp bạn trở về header trang ngay lập tức.

tao nut scroll to top khi cuon trang xuong duoi.png

Hình minh họa

Để thực hiện điều này các bạn chỉ cần vào style đang sử dụng, gắn đoạn code bên dưới vào cuối (nằm trên thẻ </body>) template footer

Mã:
<style>
#toTop {
    background: #f7f7f7;
    border: 1px solid #ccc;
    border-radius: 5px;
    bottom: 40px;
    color: #333;
    cursor: pointer;
    display: none;
    font-size: 11px;
    padding: 18px;
    position: fixed;
    right: 20px;
    text-align: center;
}
#toTop::before {
    -moz-border-bottom-colors: none;
    -moz-border-left-colors: none;
    -moz-border-right-colors: none;
    -moz-border-top-colors: none;
    border-color: transparent transparent @primaryMedium; /*Đổi #198708 bằng mã màu bạn muốn*/
    border-image: none;
    border-style: solid;
    border-width: 11px;
    content: "";
    height: 0;
    left: 7px;
    position: absolute;
    top: -4px;
    width: 0;
}
#toTop::after {
    background-color: @primaryMedium;;
    content: "";
    height: 12px;
    left: 13px;
    position: absolute;
    top: 18px;
    width: 10px;
}
</style>
<div id="toTop"></div>
<script type="text/javascript">
    //roll top
    $(function() {
        $(window).scroll(function() {
            if($(this).scrollTop() != 0) {
                $('#toTop').fadeIn();  
            } else {
                $('#toTop').fadeOut();
            }
        });
   
        $('#toTop').click(function() {
            $('body,html').animate({scrollTop:0},800);
        });  
    });
</script>
 
Sửa lần cuối:

cuonghv

Moderator
Thành viên BQT
Tham gia
15/08/2015
Bài viết
388
Được Like
364
Áp dụng ngay và luôn. Tìm kiếm mãi mà không có cái nào vừa ý!
Thank nhóa!
 
  • Like
Reactions: THB

2L.Ohayo

Moderator
Thành viên BQT
Tham gia
08/03/2015
Bài viết
761
Được Like
835
cho em xin luôn đoạn script go to bottom với ạ.
 
  • Like
Reactions: THB

PVS

Super Moderator
Thành viên BQT
Tham gia
28/02/2015
Bài viết
17,142
Được Like
12,745
em cần cái này lâu lắm òy ^^ hii
 

chanhnghiem

Corporal
Tham gia
10/10/2015
Bài viết
154
Được Like
91
Bạn kiểm tra kỹ lại xem giống hoàn toàn đoạn mình viết chưa nhé, thiếu nên thế đó.
em copy 2 lần vẫn vậy anh. em có lấy từ style a share nó có totop nhưng vẫn lỗi đó
Mã:
<script>
function popupCenter(url, title, w, h) {
var left = (screen.width/2)-(w/2);
var top = (screen.height/2)-(h/2);
return window.open(url, title, 'toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no, resizable=no, copyhistory=no, width='+w+', height='+h+', top='+top+', left='+left);
} 
jQuery('.popupxf').click(function(e) { 
e.preventDefault()
popupCenter(jQuery(this).attr('href'), 'myPop1',650,450);
}); 
</script><style>
#toTop {
    background: #f7f7f7;
    border: 1px solid #ccc;
    border-radius: 5px;
    bottom: 40px;
    color: #333;
    cursor: pointer;
    display: none;
    font-size: 11px;
    padding: 18px;
    position: fixed;
    right: 20px;
    text-align: center;
}
#toTop::before {
    -moz-border-bottom-colors: none;
    -moz-border-left-colors: none;
    -moz-border-right-colors: none;
    -moz-border-top-colors: none;
    border-color: transparent transparent {xen:property primaryMedium}; /*Đổi #198708 bằng mã màu bạn muốn*/
    border-image: none;
    border-style: solid;
    border-width: 11px;
    content: "";
    height: 0;
    left: 7px;
    position: absolute;
    top: -4px;
    width: 0;
}
#toTop::after {
    background-color: {xen:property primaryMedium};;
    content: "";
    height: 12px;
    left: 13px;
    position: absolute;
    top: 18px;
    width: 10px;
}
</style>
<div id="toTop"></div>
<script type="text/javascript">
    //roll top
    $(function() {
        $(window).scroll(function() {
            if($(this).scrollTop() != 0) {
                $('#toTop').fadeIn();    
            } else {
                $('#toTop').fadeOut();
            }
        });
    
        $('#toTop').click(function() {
            $('body,html').animate({scrollTop:0},800);
        });    
    });
</script>
 

agrione

Corporal
Tham gia
07/09/2015
Bài viết
119
Được Like
97
Tưởng anh bỏ site rồi, có 1 đợt thấy lỗi tùm lum rồi mail liên hệ lại là hiephoiketoan gì gì đó
Xây dựng đến mức đó mà bỏ thì ko phải quá uổng sao
Test cái chủ top phát
 

Blue

Founder
Thành viên BQT
Tham gia
25/02/2015
Bài viết
931
Được Like
1,553
Vẫn lỗi là do style của bạn rồi, khu vực chép mã css vào phải nằm trên thẻ </body> nhé
 

Chiennd1810

Private
Tham gia
16/04/2016
Bài viết
22
Được Like
11
Em dùng Xen 1.5.7 style Nitrogen
tìm trong template footer không thấy có thẻ </body>
các bạn giúp em với |(

Mã:
<xen:edithint template="footer.css" />

<xen:hook name="footer">
<div class="footer">
    <div class="pageWidth">
        <div class="pageContent">
        <ul>
        <li class="footerBlock footerBlock1">
            <xen:if is="@footerBlock1">
            <div>
                @footerBlock1
            </div>
            </xen:if>
        </li>
        <li class="footerBlock footerBlock2">
            <xen:if is="@footerBlock2">
            <div>
                @footerBlock2
            </div>
            </xen:if>
        </li>
        <li class="footerBlock footerBlock2 footerBlock3">
            <xen:if is="@footerBlock3">
            <div>
                @footerBlock3
            </div>
            </xen:if>
        </li>
        <li class="footerBlock footerBlock4">
            <xen:if is="@footerBlock4">
            <div>
                @footerBlock4
            </div>
            </xen:if>
        </li>
        </ul>
        <xen:comment>
            <xen:if is="{$canChangeStyle} OR {$canChangeLanguage}">
            <dl class="choosers">
                <xen:if is="{$canChangeStyle}">
                    <dt>{xen:phrase style}</dt>
                    <dd><a href="{xen:link 'misc/style', '', 'redirect={$requestPaths.requestUri}'}" class="OverlayTrigger Tooltip" title="{xen:phrase style_chooser}" rel="nofollow">{$visitorStyle.title}</a></dd>
                </xen:if>
                <xen:if is="{$canChangeLanguage}">
                    <dt>{xen:phrase language}</dt>
                    <dd><a href="{xen:link 'misc/language', '', 'redirect={$requestPaths.requestUri}'}" class="OverlayTrigger Tooltip" title="{xen:phrase language_chooser}" rel="nofollow">{$visitorLanguage.title}</a></dd>
                </xen:if>
            </dl>
            </xen:if>
           
            <ul class="footerLinks">
            <xen:hook name="footer_links">
                <xen:if is="{$xenOptions.contactUrl.type} === 'default'">
                    <a href="{xen:link 'misc/contact'}" class="OverlayTrigger" data-overlayOptions="{&quot;fixed&quot;:false}">{xen:phrase contact_us}</a>
                <xen:elseif is="{$xenOptions.contactUrl.type} === 'custom'" />
                    <a href="{$xenOptions.contactUrl.custom}" {xen:if {$xenOptions.contactUrl.overlay}, 'class="OverlayTrigger" data-overlayOptions="{&quot;fixed&quot;:false}"'}>{xen:phrase contact_us}</a>
                </xen:if>
                <li><a href="{xen:link help}">{xen:phrase help}</a></li>
                <xen:if is="{$homeLink}"><li><a href="{$homeLink}" class="homeLink">{xen:phrase home}</a></li></xen:if>
                <li><a href="{$requestPaths.requestUri}#navigation" class="topLink">{xen:phrase go_to_top}</a></li>
                <li><a href="{xen:link forums/-/index.rss}" rel="alternate" class="globalFeed" target="_blank"
                    title="{xen:phrase rss_feed_for_x, 'title={$xenOptions.boardTitle}'}">{xen:phrase rss}</a></li>
            </xen:hook>
            </ul>
            </xen:comment>
           
            <span class="helper"></span>
        </div>
    </div>
</div>

<div class="footerLegal">
    <div class="pageWidth">
        <div class="pageContent">
       
           
       
            <ul id="legal">
            <xen:if is="{$canChangeStyle} OR {$canChangeLanguage}">
                <xen:if is="{$canChangeStyle}">
                <li>
                    <a href="{xen:link 'misc/style', '', 'redirect={$requestPaths.requestUri}'}" class="OverlayTrigger Tooltip" title="{xen:phrase style_chooser}" rel="nofollow">{$visitorStyle.title}</a>
                </li>
                </xen:if>
                <xen:if is="{$canChangeLanguage}">
                <li>
                    <a href="{xen:link 'misc/language', '', 'redirect={$requestPaths.requestUri}'}" class="OverlayTrigger Tooltip" title="{xen:phrase language_chooser}" rel="nofollow">{$visitorLanguage.title}</a>
                </li>
                </xen:if>
            </xen:if>
            <xen:hook name="footer_links_legal">
                <xen:if is="{$tosUrl}"><li><a href="{$tosUrl}">{xen:phrase terms_and_rules}</a></li></xen:if>
                <xen:if is="{$xenOptions.privacyPolicyUrl}"><li><a href="{$xenOptions.privacyPolicyUrl}">{xen:phrase privacy_policy}</a></li></xen:if>
            </xen:hook>
            <li>
                <ul class="footerLinks">
            <xen:hook name="footer_links">
                <xen:if is="{$xenOptions.contactUrl.type} === 'default'">
                    <li><a href="{xen:link 'misc/contact'}" class="OverlayTrigger" data-overlayOptions="{&quot;fixed&quot;:false}">{xen:phrase contact_us}</a></li>
                <xen:elseif is="{$xenOptions.contactUrl.type} === 'custom'" />
                    <li><a href="{$xenOptions.contactUrl.custom}" {xen:if {$xenOptions.contactUrl.overlay}, 'class="OverlayTrigger" data-overlayOptions="{&quot;fixed&quot;:false}"'}>{xen:phrase contact_us}</a></li>
                </xen:if>
                <li><a href="{xen:link help}">{xen:phrase help}</a></li>
                <xen:if is="{$homeLink}"><li><a href="{$homeLink}" class="homeLink">{xen:phrase home}</a></li></xen:if>
                <li><a href="{$requestPaths.requestUri}#navigation" class="topLink"><i class="fa fa-angle-up fa-lg"></i><xen:comment>{xen:phrase go_to_top}</xen:comment></a></li>
                <li><a href="{xen:link forums/-/index.rss}" rel="alternate" class="globalFeed" target="_blank"
                    title="{xen:phrase rss_feed_for_x, 'title={$xenOptions.boardTitle}'}">{xen:phrase rss}</a></li>
            </xen:hook>
            </ul>
            </li>
            </ul>
           
            <xen:if is="{$debugMode}">
                <xen:if hascontent="true">
                    <dl class="pairsInline debugInfo" title="{$controllerName}-&gt;{$controllerAction}{xen:if $viewName, ' ({$viewName})'}">
                    <xen:contentcheck>
                        <xen:if is="{$page_time}"><dt>{xen:phrase timing}:</dt> <dd><a href="{$debug_url}" rel="nofollow">{xen:phrase x_seconds, 'time={xen:number $page_time, 4}'}</a></dd></xen:if>
                        <xen:if is="{$memory_usage}"><dt>{xen:phrase memory}:</dt> <dd>{xen:phrase x_mb, 'size={xen:number {xen:calc "{$memory_usage} / 1024 / 1024"}, 3}'}</dd></xen:if>
                        <xen:if is="{$db_queries}"><dt>{xen:phrase db_queries}:</dt> <dd>{xen:number {$db_queries}}</dd></xen:if>
                    </xen:contentcheck>
                    </dl>
                </xen:if>
            </xen:if>
           
            <span class="helper"></span>
        </div>
    </div>   
</div>
</xen:hook>
 
  • Like
Reactions: THB

tuna

Sergeant
Tham gia
30/01/2017
Bài viết
639
Được Like
276
em làm theo nhưng chỉ tới cuối trang thì mới bấm đc nút, có cách nào ở giữa trang vẫn back to top đc giống vnxf ko ạ
 

Top Bottom