jquery任意位置浮动固定层插件用法实例


Posted in Javascript onMay 29, 2015

本文实例讲述了jquery任意位置浮动固定层插件用法。分享给大家供大家参考。具体分析如下:

说明:可以让指定的层浮动到网页上的任何位置,当滚动条滚动时它会保持在当前位置不变,不会产生闪动  

2009-06-10修改:重新修改插件实现固定浮动层的方式,使用一个大固定层来定位  
2009-07-16修改:修正IE6下无法固定在top上的问题  

09-11-5修改:当自定义层的绝对位置时,加上top为空值时的判断  
这次的方法偷自天涯新版页  
经多次测试,基本上没bug~  

调用:

1 无参数调用:默认浮动在右下角

$("#id").floatdiv();

2 内置固定位置浮动

//右下角  
$("#id").floatdiv("rightbottom");  
//左下角  
$("#id").floatdiv("leftbottom");  
//右下角  
$("#id").floatdiv("rightbottom");  
//左上角  
$("#id").floatdiv("lefttop");  
//右上角  
$("#id").floatdiv("righttop");  
//居中  
$("#id").floatdiv("middle");

另外新添加了四个新的固定位置方法  

middletop(居中置顶)、middlebottom(居中置低)、leftmiddle、rightmiddle

3 自定义位置浮动

$("#id").floatdiv({left:"10px",top:"10px"});  
以上参数,设置浮动层在left 10个像素,top 10个像素的位置  

jQuery.fn.floatdiv=function(location){  
  //判断浏览器版本  
  var isIE6=false;  
  var Sys = {};  
  var ua = navigator.userAgent.toLowerCase();  
  var s;  
  (s = ua.match(/msie ([\d.]+)/)) ? Sys.ie = s[1] : 0;  
  if(Sys.ie && Sys.ie=="6.0"){  
    isIE6=true;  
  }  
  var windowWidth,windowHeight;//窗口的高和宽  
  //取得窗口的高和宽  
  if (self.innerHeight) {  
    windowWidth=self.innerWidth;  
    windowHeight=self.innerHeight;  
  }else if (document.documentElement&&document.documentElement.clientHeight) {
    windowWidth=document.documentElement.clientWidth;  
    windowHeight=document.documentElement.clientHeight;  
  } else if (document.body) {  
    windowWidth=document.body.clientWidth;  
    windowHeight=document.body.clientHeight;  
  }  
  return this.each(function(){  
    var loc;//层的绝对定位位置  
    var wrap=$("<div></div>");  
    var top=-1;  
    if(location==undefined || location.constructor == String){  
      switch(location){  
        case("rightbottom")://右下角  
          loc={right:"0px",bottom:"0px"};  
          break;  
        case("leftbottom")://左下角  
          loc={left:"0px",bottom:"0px"};  
          break;   
        case("lefttop")://左上角  
          loc={left:"0px",top:"0px"};  
          top=0;  
          break;  
        case("righttop")://右上角  
          loc={right:"0px",top:"0px"};  
          top=0;  
          break;  
        case("middletop")://居中置顶  
          loc={left:windowWidth/2-$(this).width()/2+"px",top:"0px"};  
          top=0;  
          break;  
        case("middlebottom")://居中置低  
          loc={left:windowWidth/2-$(this).width()/2+"px",bottom:"0px"};  
          break;  
        case("leftmiddle")://左边居中  
          loc={left:"0px",top:windowHeight/2-$(this).height()/2+"px"};  
          top=windowHeight/2-$(this).height()/2;  
          break;  
        case("rightmiddle")://右边居中  
          loc={right:"0px",top:windowHeight/2-$(this).height()/2+"px"};  
          top=windowHeight/2-$(this).height()/2;  
          break;  
        case("middle")://居中  
          var l=0;//居左  
          var t=0;//居上  
          l=windowWidth/2-$(this).width()/2;  
          t=windowHeight/2-$(this).height()/2;  
          top=t;  
          loc={left:l+"px",top:t+"px"};  
          break;  
        default://默认为右下角  
          location="rightbottom";  
          loc={right:"0px",bottom:"0px"};  
          break;  
      }  
    }else{  
      loc=location;  
      alert(loc.bottom);  
      var str=loc.top;  
      //09-11-5修改:加上top为空值时的判断  
      if (typeof(str)!= 'undefined'){  
        str=str.replace("px","");  
        top=str;  
      }  
    }  
    /*fied ie6 css hack*/  
    if(isIE6){  
      if (top>=0)  
      {  
        wrap=$("<div style=\"top:e­xpression(documentElement.scrollTop+"+top+");\"></div>");  
      }else{  
        wrap=$("<div style=\"top:e­xpression(documentElement.scrollTop+documentElement.clientHeight-this.offsetHeight);\"></div>");
      }  
    }  
    $("body").append(wrap);  
    wrap.css(loc).css({position:"fixed",z_index:"999"});  
    if (isIE6)  
    {  
      wrap.css("position","absolute");  
      //没有加这个的话,ie6使用表达式时就会发现跳动现象  
      //至于为什么要加这个,还有为什么要加nothing.txt这个,偶也不知道,希望知道的同学可以告诉我  
      $("body").css("background-attachment","fixed").css("background-image","url(n1othing.txt)");  
    }  
    //将要固定的层添加到固定层里  
    $(this).appendTo(wrap);  
  });  
};

完整实例代码点击此处本站下载。

希望本文所述对大家的jQuery程序设计有所帮助。

Javascript 相关文章推荐
javascript 自定义事件初探
Aug 21 Javascript
JS实现鼠标箭头变成一个燃烧烛光效果的方法
Feb 28 Javascript
jQuery验证插件validation使用指南
Apr 21 Javascript
15个非常实用的JavaScript代码片段
Dec 18 Javascript
微信小程序中实现一对多发消息详解及实例代码
Feb 14 Javascript
Vue.js父与子组件之间传参示例
Feb 28 Javascript
vue cli使用绝对路径引用图片问题的解决
Dec 06 Javascript
详解Vue项目编译后部署在非网站根目录的解决方案
Apr 26 Javascript
jquery插件开发模式实例详解
Jul 20 jQuery
微信小程序图片右边加两行文字的代码
Apr 23 Javascript
vue3.0实现插件封装
Dec 14 Vue.js
JavaScript架构localStorage特殊场景下二次封装操作
Jun 21 Javascript
JQuery控制Radio选中方法分析
May 29 #Javascript
究竟什么是Node.js?Node.js有什么好处?
May 29 #Javascript
js实现发送验证码后的倒计时功能
May 28 #Javascript
JS实现两表格里数据来回转移的方法
May 28 #Javascript
原生JS和JQuery动态添加、删除表格行的方法
May 28 #Javascript
jQuery实现html表格动态添加新行的方法
May 28 #Javascript
jquery实现用户打分评分特效
May 28 #Javascript
You might like
收听短波不可能有声音清晰的品质吗
2021/03/01 无线电
PHP foreach循环使用详解与实例代码
2010/05/08 PHP
PHP的substr_replace将指定两位置之间的字符替换为*号
2011/05/04 PHP
PHP Global变量定义当前页面的全局变量实现探讨
2013/06/05 PHP
PHP实现按之字形顺序打印二叉树的方法
2018/01/16 PHP
jquery 实现的全选和反选
2009/04/15 Javascript
jquery为页面增加快捷键示例
2014/01/31 Javascript
使用mouse事件实现简单的鼠标经过特效
2015/01/30 Javascript
JavaScript实现弹出DIV层同时页面背景渐变成半透明效果
2016/03/25 Javascript
jQuery中过滤器的基本用法示例
2017/10/11 jQuery
Webpack之tree-starking 解析
2018/09/11 Javascript
element-ui的回调函数Events的用法详解
2018/10/16 Javascript
layui 上传插件 带预览 非自动上传功能的实例(非常实用)
2019/09/23 Javascript
react 生命周期实例分析
2020/05/18 Javascript
python Selenium爬取内容并存储至MySQL数据库的实现代码
2017/03/16 Python
pandas.DataFrame 根据条件新建列并赋值的方法
2018/04/08 Python
Python读写/追加excel文件Demo分享
2018/05/03 Python
python中的for循环
2018/09/28 Python
解决Python找不到ssl模块问题 No module named _ssl的方法
2019/04/29 Python
图文详解python安装Scrapy框架步骤
2019/05/20 Python
在windows下使用python进行串口通讯的方法
2019/07/02 Python
Python3实现汉语转换为汉语拼音
2019/07/08 Python
用python wxpy管理微信公众号并利用微信获取自己的开源数据
2019/07/30 Python
python 定义类时,实现内部方法的互相调用
2019/12/25 Python
python 负数取模运算实例
2020/06/03 Python
公务员总结性个人自我评价
2013/12/05 职场文书
财务信息服务专业自荐书范文
2014/02/08 职场文书
做一个有道德的人活动实施方案
2014/08/23 职场文书
重阳节活动总结
2014/08/27 职场文书
幼儿教师暑期培训方案
2014/08/27 职场文书
2015年机关党委工作总结
2015/05/23 职场文书
公司周年庆寄语
2019/06/21 职场文书
咖啡厅里的创业计划书
2019/08/21 职场文书
解决Redis启动警告问题
2022/02/24 Redis
分析MySQL优化 index merge 后引起的死锁
2022/04/19 MySQL
java.util.NoSuchElementException原因及两种解决方法
2022/06/28 Java/Android