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 相关文章推荐
基于jQuery的计算文本框字数的代码
Jun 06 Javascript
快速查找数组中的某个元素并返回下标示例
Sep 03 Javascript
JavaScript indexOf方法入门实例(计算指定字符在字符串中首次出现的位置)
Oct 17 Javascript
jquery控制显示服务器生成的图片流
Aug 04 Javascript
浅谈JavaScript 浏览器对象
Jun 03 Javascript
Ionic快速安装教程
Jun 03 Javascript
基于slideout.js实现移动端侧边栏滑动特效
Nov 28 Javascript
微信小程序 定位到当前城市实现实例代码
Feb 23 Javascript
浅谈vue的iview列表table render函数设置DOM属性值的方法
Sep 30 Javascript
基于Vue的SPA动态修改页面title的方法(推荐)
Jan 02 Javascript
node后端服务保活的实现
Nov 10 Javascript
JS写滑稽笑脸运动效果
May 28 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
php 中include()与require()的对比
2006/10/09 PHP
php读取文件内容到数组的方法
2015/03/16 PHP
PHPExcel笔记, mpdf导出
2016/05/03 PHP
Smarty模板常见的简单应用分析
2016/11/15 PHP
PHP实现求解最长公共子串问题的方法
2017/11/17 PHP
PHP堆栈调试操作简单示例
2018/06/15 PHP
TP5(thinkPHP5框架)基于bootstrap实现的单图上传插件用法示例
2019/05/29 PHP
基于jQuery捕获超链接事件进行局部刷新代码
2012/05/10 Javascript
JQuery页面的表格数据的增加与分页的实现
2013/12/10 Javascript
jquery实现模拟百分比进度条渐变效果代码
2015/10/29 Javascript
uploadify多文件上传参数设置技巧
2015/11/16 Javascript
jQuery 中的 DOM 操作
2016/04/26 Javascript
javascript用rem来做响应式开发
2018/01/13 Javascript
mint-ui 时间插件使用及获取选择值的方法
2018/02/09 Javascript
JavaScript插入排序算法原理与实现方法示例
2018/08/06 Javascript
详解js创建对象的几种方法及继承
2019/04/12 Javascript
Node.js学习教程之Module模块
2019/09/03 Javascript
微信小程序 this.triggerEvent()的具体使用
2019/12/10 Javascript
AI小程序之语音听写来了,十分钟掌握百度大脑语音听写全攻略
2020/03/13 Javascript
ES6函数实现排它两种写法解析
2020/05/13 Javascript
原生js实现五子棋游戏
2020/05/28 Javascript
python使用wmi模块获取windows下硬盘信息的方法
2015/05/15 Python
Python使用xlrd模块操作Excel数据导入的方法
2015/05/26 Python
python获取各操作系统硬件信息的方法
2015/06/03 Python
简单讲解Python中的字符串与字符串的输入输出
2016/03/13 Python
Python读csv文件去掉一列后再写入新的文件实例
2017/12/28 Python
Pandas读取MySQL数据到DataFrame的方法
2018/07/25 Python
python错误调试及单元文档测试过程解析
2019/12/19 Python
tensorflow转换ckpt为savermodel模型的实现
2020/05/25 Python
瑜伽服装品牌:露露柠檬(lululemon athletica)
2017/06/04 全球购物
意大利比基尼品牌:MISS BIKINI
2019/11/02 全球购物
C语言面试题
2013/05/19 面试题
工程类专业自荐信范文
2014/03/09 职场文书
七夕相亲活动策划方案
2014/08/31 职场文书
mysql查询的控制语句图文详解
2021/04/11 MySQL
JS创建或填充任意长度数组的小技巧汇总
2021/10/24 Javascript