zoukankan      html  css  js  c++  java
  • 一个jquery的浮动框,扩展性比较好吧

    原文地址:http://www.monoideas.com/read/?id=123

    在用Maxthon的时候无意看到一个浮动框,把它改成基于jquery的,扩展性比较好,发来分享下。

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title></title>
    <style type="text/css">
    body
    {
        height:2000px;
    }
    
    .float_mx{
    	background:#CCC;
    	100px;
    	height:100px;
    	display:none;
    }
    </style>
    </head>
    
    <body>
    <div class="float_mx">
    在此添加内容
    </div>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" type="text/javascript"></script>
    <script type="text/javascript">
    (function($) {
        $.fn.scrollBox = function(options){
            var defaultOptions = {
                speed: 0.1, //加速
                time: 16,   //移动速度
                top: 200,   //默认顶部
                align: 'right', //浮动位置,可选左、右
                mix: 0          //边距
            };
            
            var options = $.extend(defaultOptions, options);
    
            this.each(function(){
                var obj = $(this);
                init();
                
                function init(){
                    obj.css('display', 'block');
                    obj.css('position', 'absolute');
                    obj.css(options.align, options.mix);
                    obj.css('top', options.top+'px');
                    obj.css('z-index', '99');
                    
                    move();
                }
    
                function back() {
    	            acceleration = options.speed;
    	            time = options.time;
    	            var x1 = 0;
    	            var y1 = 0;
    	            var x2 = 0;
    	            var y2 = 0;
    	            if (document.documentElement) {
    		            x1 = document.documentElement.scrollLeft || 0;
    		            y1 = document.documentElement.scrollTop || 0;
    	            }
    	            if (document.body) {
    		            x2 = document.body.scrollLeft || 0;
    		            y2 = document.body.scrollTop || 0;
    	            }
    	            var x = Math.max(x1, x2);
    	            var y = Math.max(y1, y2);
    	            var speed = acceleration;
    	            return {
    		            l: x,
    		            t: y,
    		            s: speed
    	            };
    	        };
        	    
                function move(){
                    var tip = obj;
                    var old = options.top;
                    var pos = back().t;
    
                    pos = pos - $(tip).Coordinate().y + options.top;
                    pos = $(tip).Coordinate().y + pos / 10;
                    if (pos < options.top) {
                        pos = options.top;
                    }
                    if (pos != old) {
                        tip.css('top',pos + "px");
                    }
                    old = pos;
                    window.setTimeout(function(){move();}, options.time);
                };
            });
        };
    
        $.fn.Coordinate = function(){
            var E = $(this)[0];
    		var C = E.offsetTop;
    		var B = E.offsetLeft;
    		var A = E.offsetWidth;
    		var D = E.offsetHeight;
    		while (E = E.offsetParent) {
    			C += E.offsetTop;
    			B += E.offsetLeft;
    
    		}
    		return {
    			x: B,
    			y: C,
    			w: A,
    			h: D
    		};
        };
    })(jQuery);
    
    $('.float_mx').scrollBox();
    </script>
    </body>
    </html>
    

    把下面这段代理放到单独的js文件中,代码中的css代码可以删掉,display设为none,是为了避免在页面未加载完,显示不正确的问题。

    (function($) {
        $.fn.scrollBox = function(options){
            var defaultOptions = {
                speed: 0.1, //加速
                time: 16,   //移动速度
                top: 200,   //默认顶部
                align: 'right', //浮动位置,可选左、右
                mix: 0          //边距
            };
            
            var options = $.extend(defaultOptions, options);
    
            this.each(function(){
                var obj = $(this);
                init();
                
                function init(){
                    obj.css('display', 'block');
                    obj.css('position', 'absolute');
                    obj.css(options.align, options.mix);
                    obj.css('top', options.top+'px');
                    obj.css('z-index', '99');
                    
                    move();
                }
    
                function back() {
    	            acceleration = options.speed;
    	            time = options.time;
    	            var x1 = 0;
    	            var y1 = 0;
    	            var x2 = 0;
    	            var y2 = 0;
    	            if (document.documentElement) {
    		            x1 = document.documentElement.scrollLeft || 0;
    		            y1 = document.documentElement.scrollTop || 0;
    	            }
    	            if (document.body) {
    		            x2 = document.body.scrollLeft || 0;
    		            y2 = document.body.scrollTop || 0;
    	            }
    	            var x = Math.max(x1, x2);
    	            var y = Math.max(y1, y2);
    	            var speed = acceleration;
    	            return {
    		            l: x,
    		            t: y,
    		            s: speed
    	            };
    	        };
        	    
                function move(){
                    var tip = obj;
                    var old = options.top;
                    var pos = back().t;
    
                    pos = pos - $(tip).Coordinate().y + options.top;
                    pos = $(tip).Coordinate().y + pos / 10;
                    if (pos < options.top) {
                        pos = options.top;
                    }
                    if (pos != old) {
                        tip.css('top',pos + "px");
                    }
                    old = pos;
                    window.setTimeout(function(){move();}, options.time);
                };
            });
        };
    
        $.fn.Coordinate = function(){
            var E = $(this)[0];
    		var C = E.offsetTop;
    		var B = E.offsetLeft;
    		var A = E.offsetWidth;
    		var D = E.offsetHeight;
    		while (E = E.offsetParent) {
    			C += E.offsetTop;
    			B += E.offsetLeft;
    
    		}
    		return {
    			x: B,
    			y: C,
    			w: A,
    			h: D
    		};
        };
    })(jQuery);
    
  • 相关阅读:
    入手了一个南京电表厂MF16袖珍万用电表,哥测的不是电,是情怀
    40元淘来的香橙派 orange pi one 全志h3竟然可以安装桌面使用浏览器firefox上网
    https://blog.csdn.net/daaikuaichuan/article/details/83862311
    Arthas
    elect、poll、epoll优缺点
    jvm调优神器——arthas
    Mysql事物与二阶段提交
    全网最全一篇数据库MVCC详解,不全你打我
    冒泡排序和选择排序
    快速排序(过程图解)
  • 原文地址:https://www.cnblogs.com/yutian130/p/1809590.html
Copyright © 2011-2022 走看看