123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142 |
- /**
- * 页面滚动条不是在最顶端时 页面出现top按钮,点击回到最顶端,按钮隐藏
- *
- * 使用 直接引入 <script src="./js/GoTop.js" id="js_gotop"></script>
- */
- (function() {
- //获取当前js路径 然后处理图片路径 即绝对路径 (避免在多处引用图片路径不对)
- var path = document.getElementById('js_gotop').src;
- path_out = path.replace("js/GoTop.js","images/gotop_out.png");
- path_over = path.replace("js/GoTop.js","images/gotop_over.png");
- // html 元素
- var div = document.createElement('div');
- div.id = "gotop";
- div.onmouseout = function(e){this.firstChild.src = path_out};
- div.onmouseover = function(e){this.firstChild.src = path_over};
- div.setAttribute("style","display:'';position:fixed;width:30px;height:30px;bottom:50px;right:50px;opacity:0;margin: 20px");
- document.body.appendChild(div);
- var inner = '<img border=0 src='+'"'+path_out+'"'+'>';
- document.getElementById('gotop').innerHTML = inner;
- //屏幕滚动 元素淡入淡出 参数设置
- window.onscroll = function() {
- getScrollTop() > 0 ? fadein(div,100,1000,5): fadeout(div,0,1000,5);
- };
- //元素点击事件
- div.onclick = function() {
- var goTop = setInterval(scrollMove, 10);
- function scrollMove() {
- setScrollTop(getScrollTop() / 1.1);
- if (getScrollTop() < 1) clearInterval(goTop);
- }
- };
- /**
- * 获取滚动条的高度
- *
- * @returns {number} 滚动条高度
- */
- function getScrollTop() {
- return document.documentElement.scrollTop + document.body.scrollTop;
- }
- /**
- * 设置滚动条的值
- *
- * @param value
- */
- function setScrollTop(value) {
- if (document.documentElement.scrollTop) {
- document.documentElement.scrollTop = value;
- } else {
- document.body.scrollTop = value;
- }
- }
- /**
- * 元素透明度设置 浏览器兼容
- *
- * @param element 元素
- * @param opacity 透明度 0·100 正整数
- */
- function setOpacity(element,opacity){
- //兼容firfox Chrome 和新版的IE
- if(element.style.opacity !== undefined)
- {
- element.style.opacity = opacity/100;
- }
- else {
- element.style.filter = "alpha(opacity = "+ opacity +")"; //兼容老版的IE
- }
- }
- /**
- * 淡入
- *
- * @param element 元素
- * @param opacity 最终透明度 0`100 正整数
- * @param time 总共时间 单位 毫秒
- * @param value 每次变化值 0`100 正整数
- */
- function fadein(element, opacity,time,value){
- if(element){
- //获取当前的透明度
- var v = element.style.opacity || element.style.filter.replace("alpha(opacity=","").replace(")","");
- v = v > 1 ? v*1 : v*100;
- //变化透明度
- var changeopacity = opacity - v;
- if(changeopacity <= 0) return;
- //元素可见
- element.style.display = "";
- //变化次数
- var count = changeopacity/value;
- //变化时间间隔
- var speed = time/count;
- var timer = null;
- timer = setInterval(function(){
- if(v<opacity) {
- v +=value;
- setOpacity(element,v);
- }
- else{
- clearInterval(timer);
- }
- },speed);
- }
- }
- /**
- * 淡出
- *
- * @param element 元素
- * @param opacity 最终透明度 0`100 正整数
- * @param time 总共时间 单位 毫秒
- * @param value 每次变化值 0`100 正整数
- */
- function fadeout(element,opacity,time,value){
- if(element){
- //获取当前的透明度
- var v = element.style.filter.replace("alpha(opacity=","").replace(")","") || element.style.opacity || 100;
- v = v > 1 ? v*1 : v*100;
- //变化透明度
- var changeopacity = v - opacity;
- if(changeopacity <= 0) return;
- //变化次数
- var count = changeopacity/value;
- //变化时间间隔
- var speed = time/count;
- var timer = null;
- timer = setInterval(function(){
- if((v-value) >= opacity){
- v -= value;
- setOpacity(element,v);
- }
- else {
- clearInterval(timer);
- element.style.display = "none";
- }
- },speed)
- }
- }
- })();
|