mirror of
				https://github.com/jiawanlong/Cesium-Examples.git
				synced 2025-11-04 01:04:17 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			143 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			143 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
/**
 | 
						||
 * 页面滚动条不是在最顶端时 页面出现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)
 | 
						||
        }
 | 
						||
    }
 | 
						||
})();
 | 
						||
 | 
						||
 |