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 相关文章推荐
如何让DIV可编辑、可拖动示例代码
Sep 18 Javascript
JQuery分屏指示器图片轮换效果实例
May 21 Javascript
JS制作手机端自适应缩放显示
Jun 11 Javascript
JavaScript奇技淫巧44招【实用】
Dec 11 Javascript
AngularJS指令中的绑定策略实例分析
Dec 14 Javascript
基于vue 动态加载图片src的解决方法
Feb 05 Javascript
webpack源码之loader机制详解
Apr 06 Javascript
详解Vue+Element的动态表单,动态表格(后端发送配置,前端动态生成)
Apr 20 Javascript
微信小程序生成海报分享朋友圈的实现方法
May 06 Javascript
Vue基于iview实现登录密码的显示与隐藏功能
Mar 06 Javascript
vue.js实现点击图标放大离开时缩小的代码
Jan 27 Vue.js
Vue vee-validate插件的简单使用
Jun 22 Vue.js
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
PHP正则的Unknown Modifier错误解决方法
2010/03/02 PHP
php生成的html meta和link标记在body标签里 顶部有个空行
2010/05/18 PHP
PHP 修复未正常关闭的HTML标签实现代码(支持嵌套和就近闭合)
2012/06/07 PHP
php中的filesystem文件系统函数介绍及使用示例
2014/02/13 PHP
PHP date函数常用时间处理方法
2015/05/11 PHP
PHP 文件上传后端处理实用技巧方法
2017/01/06 PHP
PHP实现移除数组中为空或为某值元素的方法
2017/01/07 PHP
PHP实现百度人脸识别
2019/05/06 PHP
实现checkbox全选、反选、取消JavaScript小脚本异常
2014/04/10 Javascript
jquery中show()、hide()和toggle()用法实例
2015/01/15 Javascript
jQuery使用before()和after()在元素前后添加内容的方法
2015/03/26 Javascript
Ionic如何创建APP项目
2016/06/03 Javascript
Bootstrap图片轮播组件使用实例解析
2016/06/30 Javascript
利用Angularjs和bootstrap实现购物车功能
2016/08/31 Javascript
Vue组件开发初探
2017/02/14 Javascript
jquery实现tab选项卡切换效果(悬停、下方横线动画位移)
2017/05/05 jQuery
简单实现js拖拽效果
2017/07/25 Javascript
ES6 Object.assign()的用法及其使用
2020/01/18 Javascript
JS中FileReader类实现文件上传及时预览功能
2020/03/27 Javascript
python函数参数*args**kwargs用法实例
2013/12/04 Python
Python模拟登录12306的方法
2014/12/30 Python
Python2中文处理纪要的实现方法
2018/03/10 Python
Python 从相对路径下import的方法
2018/12/04 Python
python 调用钉钉机器人的方法
2019/02/20 Python
pytorch 限制GPU使用效率详解(计算效率)
2020/06/27 Python
详解HTML5 canvas绘图基本使用方法
2018/01/29 HTML / CSS
HTML5实现页面切换激活的PageVisibility API使用初探
2016/05/13 HTML / CSS
三年大学生活自我鉴定
2014/01/21 职场文书
函授毕业自我鉴定
2014/02/04 职场文书
《口技》教学反思
2014/02/21 职场文书
文秘应届生求职信
2014/07/05 职场文书
乌镇导游词
2015/02/02 职场文书
那些美到让人窒息的诗句,值得你收藏!
2019/08/20 职场文书
WordPress多语言翻译插件 - WPML使用教程
2021/04/01 PHP
MySQL之select、distinct、limit的使用
2021/11/11 MySQL
Win11 KB5015814遇安装失败 影响开始菜单性能解决方法
2022/07/15 数码科技