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 克隆数组最简单的方法
Feb 12 Javascript
JS 学习笔记 防止发生命名冲突
Jul 30 Javascript
flexigrid 类似ext grid的JS表格代码
Jul 17 Javascript
Dom操作之兼容技巧分享
Sep 20 Javascript
JS实现局部选择打印和局部不选择打印
Apr 03 Javascript
ExtJS4 动态生成的grid导出为excel示例
May 02 Javascript
JS实现合并json对象的方法
Oct 10 Javascript
jQuery动态移除与增加onclick属性的方法详解
Jun 07 jQuery
Vue项目中添加锁屏功能实现思路
Jun 29 Javascript
原生js实现文件上传、下载、封装等实例方法
Jan 05 Javascript
vue3.0 加载json的方法(非ajax)
Oct 26 Javascript
javascript全局自定义鼠标右键菜单
Dec 08 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去除换行(回车换行)的三种方法
2014/03/26 PHP
4种PHP异步执行的常用方式
2015/12/24 PHP
php的api数据接口书写实例(推荐)
2016/09/22 PHP
php的无刷新操作实现方法分析
2020/02/28 PHP
Javascript中的数学函数
2007/04/04 Javascript
JS父页面与子页面相互传值方法
2014/03/05 Javascript
javascript常用函数归纳整理
2014/10/31 Javascript
node.js中的events.emitter.once方法使用说明
2014/12/10 Javascript
javascript模拟评分控件实现方法
2015/05/13 Javascript
jQuery实现动态控制页面元素的方法分析
2017/12/20 jQuery
vue input 输入校验字母数字组合且长度小于30的实现代码
2018/05/16 Javascript
vue移动端实现红包雨效果
2020/06/23 Javascript
vue2中,根据list的id进入对应的详情页并修改title方法
2018/08/24 Javascript
jQuery 同时获取多个标签的指定内容并储存为数组
2018/11/20 jQuery
vue中v-show和v-if的异同及v-show用法
2019/06/06 Javascript
VUE中使用HTTP库Axios方法详解
2020/02/05 Javascript
npm全局环境变量配置详解
2020/12/15 Javascript
python入门之语句(if语句、while语句、for语句)
2015/01/19 Python
Python中的Matplotlib模块入门教程
2015/04/15 Python
Python脚本实现Web漏洞扫描工具
2016/10/25 Python
python selenium登录豆瓣网过程解析
2019/08/10 Python
在Python中使用K-Means聚类和PCA主成分分析进行图像压缩
2020/04/10 Python
python 已知三条边求三角形的角度案例
2020/04/12 Python
tensorflow实现将ckpt转pb文件的方法
2020/04/22 Python
详解HTML5中垂直上下居中的解决方案
2017/12/20 HTML / CSS
美国环保婴儿用品公司:The Honest Company
2017/11/23 全球购物
英国在线药房和在线医生:LloydsPharmacy
2019/10/21 全球购物
C++是不是类型安全的
2014/02/18 面试题
vue实现倒计时功能
2021/03/24 Vue.js
财务会计专业毕业生自荐信
2013/10/19 职场文书
共青团员自我评价范文
2014/09/14 职场文书
个人委托书如何写
2014/09/25 职场文书
车辆年检委托书范本
2014/10/14 职场文书
关于运动会的宣传稿
2015/07/23 职场文书
安全教育培训制度
2015/08/06 职场文书
go:垃圾回收GC触发条件详解
2021/04/24 Golang