完美兼容ie6789 ff chrome弹窗

类似discuz右下角消息提示框,主要是用css position的fixed属性,但是ie6不支持此属性,通过jquery.fixed.js插件实现兼容.效果如下:

html:千万不要忘记引入jQuery文件

 1 <body>
 2     <div id="pop" style="display:none;">
 3         <div id="popHead">
 4             <a id="popClose" title="关闭">关闭</a>
 5             <h2>温馨提示</h2>
 6         </div>
 7         <div id="popContent">
 8             <dl>
 9                 <dt id="popTitle"><a href="#" target="_blank">这里是参数</a></dt>
10                 <dd id="popIntro">这里是内容简介</dd>
11             </dl>
12             <p id="popMore"><a href="#" target="_blank">查看 »</a></p>
13         </div>
14     </div>
15 <script type="text/javascript" src="jquery.min.js"></script>    
16 <script type="text/javascript" src="popup.js"></script>
17 <script type="text/javascript" >
18     //记得加载jquery
19     //使用参数:1.标题,2.链接地址,3.内容简介
20     window.onload=function(){
21         var pop=new Pop("这里是标题",
22         "url",
23         "请输入你的内容简介,这里是内容简介.请输入你的内容简介,这里是内容简介.请输入你的内容简介,这里是内容简介");
24     }
25 </script>
26 </body>

css:

 1 *{margin:0;padding:0;}
 2 #pop{background:#fff;width:260px;border:1px solid #e0e0e0;font-size:12px;position: fixed;right:10px;bottom:10px;}
 3 #popHead{line-height:32px;background:#f6f0f3;border-bottom:1px solid #e0e0e0;position:relative;font-size:12px;padding:0 0 0 10px;}
 4 #popHead h2{font-size:14px;color:#666;line-height:32px;height:32px;}
 5 #popHead #popClose{position:absolute;right:10px;top:1px;}
 6 #popHead a#popClose:hover{color:#f00;cursor:pointer;}
 7 #popContent{padding:5px 10px;}
 8 #popTitle a{line-height:24px;font-size:14px;font-family:'微软雅黑';color:#333;font-weight:bold;text-decoration:none;}
 9 #popTitle a:hover{color:#f60;}
10 #popIntro{text-indent:24px;line-height:160%;margin:5px 0;color:#666;}
11 #popMore{text-align:right;border-top:1px dotted #ccc;line-height:24px;margin:8px 0 0 0;}
12 #popMore a{color:#f60;}
13 #popMore a:hover{color:#f00;}

js

1 <script type="text/javascript" >
2     //记得加载jquery
3     //使用参数:1.标题,2.链接地址,3.内容简介
4     window.onload=function(){
5         var pop=new Pop("这里是标题",
6         "url",
7         "请输入你的内容简介,这里是内容简介.请输入你的内容简介,这里是内容简介.请输入你的内容简介,这里是内容简介");
8     }
9 </script>

 

---------------------------------------------popup.js--------------------------------------

//兼容ie6的fixed代码 
//jQuery(function($j){
//    $j('#pop').positionFixed()
//})
(function($j){
    $j.positionFixed = function(el){
        $j(el).each(function(){
            new fixed(this)
        })
        return el;                  
    }
    $j.fn.positionFixed = function(){
        return $j.positionFixed(this)
    }
    var fixed = $j.positionFixed.impl = function(el){
        var o=this;
        o.sts={
            target : $j(el).css('position','fixed'),
            container : $j(window)
        }
        o.sts.currentCss = {
            top : o.sts.target.css('top'),              
            right : o.sts.target.css('right'),              
            bottom : o.sts.target.css('bottom'),                
            left : o.sts.target.css('left')             
        }
        if(!o.ie6)return;
        o.bindEvent();
    }
    $j.extend(fixed.prototype,{
        ie6 : $.browser.msie && $.browser.version < 7.0,
        bindEvent : function(){
            var o=this;
            o.sts.target.css('position','absolute')
            o.overRelative().initBasePos();
            o.sts.target.css(o.sts.basePos)
            o.sts.container.scroll(o.scrollEvent()).resize(o.resizeEvent());
            o.setPos();
        },
        overRelative : function(){
            var o=this;
            var relative = o.sts.target.parents().filter(function(){
                if($j(this).css('position')=='relative')return this;
            })
            if(relative.size()>0)relative.after(o.sts.target)
            return o;
        },
        initBasePos : function(){
            var o=this;
            o.sts.basePos = {
                top: o.sts.target.offset().top - (o.sts.currentCss.top=='auto'?o.sts.container.scrollTop():0),
                left: o.sts.target.offset().left - (o.sts.currentCss.left=='auto'?o.sts.container.scrollLeft():0)
            }
            return o;
        },
        setPos : function(){
            var o=this;
            o.sts.target.css({
                top: o.sts.container.scrollTop() + o.sts.basePos.top,
                left: o.sts.container.scrollLeft() + o.sts.basePos.left
            })
        },
        scrollEvent : function(){
            var o=this;
            return function(){
                o.setPos();
            }
        },
        resizeEvent : function(){
            var o=this;
            return function(){
                setTimeout(function(){
                    o.sts.target.css(o.sts.currentCss)      
                    o.initBasePos();
                    o.setPos()
                },1)    
            }           
        }
    })
})(jQuery)

jQuery(function($j){
    $j('#footer').positionFixed()
})

//pop右下角弹窗函数
//作者:yanue
function Pop(title,url,intro){
    this.title=title;
    this.url=url;
    this.intro=intro;
    this.apearTime=1000;
    this.hideTime=500;
    this.delay=10000;
    //添加信息
    this.addInfo();
    //显示
    this.showDiv();
    //关闭
  this.closeDiv();
}
Pop.prototype={
  addInfo:function(){
    $("#popTitle a").attr('href',this.url).html(this.title);
    $("#popIntro").html(this.intro);
    $("#popMore a").attr('href',this.url);
  },
  showDiv:function(time){
        if (!($.browser.msie && ($.browser.version == "6.0") && !$.support.style)) {
      $('#pop').slideDown(this.apearTime).delay(this.delay).fadeOut(400);;
    } else{//调用jquery.fixed.js,解决ie6不能用fixed
      $('#pop').show();
            jQuery(function($j){
                $j('#pop').positionFixed()
            })
    }
  },
  closeDiv:function(){
      $("#popClose").click(function(){
            $('#pop').hide();
          }
    );
  }
}

 

posted @ 2016-11-21 23:38  Koidt  阅读(292)  评论(0)    收藏  举报