/** * 页面滚动条不是在最顶端时 页面出现top按钮,点击回到最顶端,按钮隐藏 * * 使用 直接引入 */ (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 = ''; 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 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) } } })();