纯js实现回到顶部按钮

目前很多网站的页面上在右下角都提供了一个“回到顶部”的按钮。今天无事决定自己写一个,代码其实很简单,经过几次修改后,效果还算满意。重要的是全部使用js来实现,不需要在html、css中增加任何内容,甚至都不需要图片,只要引用js即可。而且全面兼容IE6。由于考虑兼容性问题,如何获取滚动条的高度和按钮停留在右下角是难点。这两个问题可以参考: js如何获取滚动条的高度:http://www.netingcn.com/js-get-srolltop.html和兼容各个浏览器的右下角提示框代码。

代码如下:

(function() {
var btnId = '__gotop';
var isIE = !!window.ActiveXObject && /msie (\d)/i.test(navigator.userAgent) ? RegExp['$1'] : false;

function $() {
return document.getElementById(arguments[0]);
}

function getScrollTop() {
return ('pageYOffset' in window) ? window.pageYOffset
: document.compatMode === "BackCompat"
&& document.body.scrollTop
|| document.documentElement.scrollTop ;
}

function bindEvent(event, func) {
if (window.addEventListener) {
window.addEventListener(event, func, false);
} else if (window.attachEvent) {
window.attachEvent('on' + event, func);
}
}

bindEvent('load',
function() {
var css = 'background-color:#999;width:50px;height:50px;position:fixed;right:100px;bottom:30px;border-radius:10px;cursor:pointer;display:none;';

if (isIE && isIE < 7) {
css += '_position:absolute;_top:expression(eval(document.documentElement.scrollTop+document.documentElement.clientHeight-30-this.offsetHeight-(parseInt(this.currentStyle.marginTop,10)||0)-(parseInt(this.currentStyle.marginBottom,10)||0)))';
var style = document.createStyleSheet();
style.cssText = '*html{background-image:url(about:blank);background-attachment:fixed;}';
}

var html = '<div style="height: 0;width: 0;border:14px solid #999999;border-top: 0 none;border-bottom:14px solid #fff;position: relative;margin:12px 0 0 11px;"><div style="width:8px;height:7px;position:absolute;top:14px;left:-4px;background-color:#fff;overflow: hidden;"></div></div>';
var el = document.createElement('DIV');
el.id = btnId;
el.style.cssText = css;
el.innerHTML = html;
document.body.appendChild(el);

el.onclick = function() {
(function() {
var top = getScrollTop();

if (top > 0) {
window.scrollTo(0, top / 1.2)
setTimeout(arguments.callee, 10);
}
})();
};

el.onmouseover = function() {
$(btnId).firstChild.style.borderBottom = '14px solid #ddd';
$(btnId).firstChild.firstChild.style.backgroundColor = '#ddd';
};

el.onmouseout = function() {
$(btnId).firstChild.style.borderBottom = '14px solid #fff';
$(btnId).firstChild.firstChild.style.backgroundColor = '#fff';
};
}
);

bindEvent('scroll',
function() {
var top = getScrollTop(), display = 'none';

if (top > 0) {
display = 'block';
}

$(btnId).style.display = display;
});
})();



具体效果可以查看我的blog,http://www.netingcn.com
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Vue项目中实现回到顶部的浮动按钮,可以使用以下方法: 1. 创建一个全局组件,并将其注册到Vue实例中。该组件可以包含一个回到顶部按钮,以及JavaScript代码来实现回到顶部的功能。例如: ``` <template> <div class="back-to-top" v-show="showBackToTop" @click="backToTop"> <i class="fa fa-arrow-up"></i> </div> </template> <script> export default { data() { return { showBackToTop: false } }, mounted() { window.addEventListener('scroll', this.handleScroll); }, methods: { handleScroll() { if (window.pageYOffset > 300) { this.showBackToTop = true; } else { this.showBackToTop = false; } }, backToTop() { window.scrollTo(0, 0); } } } </script> <style> .back-to-top { position: fixed; bottom: 20px; right: 20px; background-color: #333; color: #fff; padding: 10px; border-radius: 50%; cursor: pointer; display: none; } .back-to-top:hover { background-color: #555; } .show { display: block; } </style> ``` 2. 使用该组件,并将其添加到所有需要回到顶部的页面中。例如: ``` <template> <div> <!-- 页面内容 --> <back-to-top /> </div> </template> <script> import BackToTop from '@/components/BackToTop'; export default { components: { BackToTop }, // ... } </script> ``` 在这个例子中,我们创建了一个全局组件BackToTop,并将其注册到Vue实例中。该组件包含了回到顶部按钮,并使用JavaScript代码实现回到顶部的功能。我们还将该组件添加到了所有需要回到顶部的页面中,以便用户可以在任何页面上使用该功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值