写了个插件,用来固定表的头部和尾部。

  1. /*!
  2. * smartFloat v1.0.1
  3. * Copyright 2019- Richard
  4. * Licensed under MIT
  5. */
  6. $.fn.extend({
  7. smartFloat: function (_newpos = {
  8. top: 0
  9. }, _stopElement = undefined) {
  10. function position(element) {
  11. var csstop = element.offset().top;
  12. var csspos = element.css("position");
  13. var csswidth = element.width();
  14. $(window).scroll(function () {
  15. var scroll = $(this).scrollTop(); //滚动条所在位置
  16. if ((scroll > csstop //如果滚动到页面超出了当前元素element的相对页面顶部的高度
  17. ||
  18. $(this).height() < csstop) //如果元素超过窗口高度
  19. ) {
  20. element.css({
  21. position: "fixed",
  22. 'z-index': 999,
  23. width: csswidth
  24. }).css(_newpos);
  25.  
  26. //如果碰到了停止浮动的元素
  27. if (_stopElement) {
  28. _stopElement = $(_stopElement)
  29. var secsstop = _stopElement.offset().top;
  30. try {
  31. if (secsstop >= scroll && secsstop < (scroll + $(window).height())) { //元素在可视区域
  32. restoreCss();
  33. }
  34. } catch (error) {
  35. console.log(error);
  36. }
  37. }
  38.  
  39. //调整表头每个th的宽度,使其和td宽度一致
  40. if (element.parent()[0].tagName.toLowerCase() == 'table' && !element.data('widthIsSeted')) {
  41. var arrChildWidth = Array();
  42. element.next().find('tr').eq(0).children().each(function (i) {
  43. arrChildWidth[i] = $(this).width(); //保存数据行每个td的宽度
  44. });
  45. element.find('th').each(function (i, th) {
  46. $(th).width(arrChildWidth[i]); //设置每个th的宽度和td一致
  47. });
  48. console.log('调整表头每个th的宽度');
  49. element.data('widthIsSeted', true);
  50. }
  51. } else {
  52. restoreCss();
  53. }
  54. });
  55.  
  56. function restoreCss() {
  57. element.css('position', csspos);
  58. }
  59. };
  60. return $(this).each(function () {
  61. position($(this));
  62. });
  63. }
  64. });

调用方式:

  1. $(".card-close").smartFloat({
  2. 'top': '10px',
  3. 'right': '50px',
  4. 'z-index': 999
  5. });

  6. $("thead").smartFloat({
  7. 'top': 0,
  8. 'z-index': 990
  9. }); //浮动表头

  10. $("#tablefooter").smartFloat({
  11. bottom: 0
  12. }, "footer"); //浮动功能区,footer可见时取消浮动

JQuery浮动对象插件的更多相关文章

  1. jQuery 浮动标签插件,帮助你提升表单用户体验

    浮动标签模式(Float Label Pattern)是最新流行的一种表单输入域的内容提示方式,当用户在输入框输入内容的时候,原先占位符的内容向上移动,显示在输入的内容的上面.这里推荐的这款 jQue ...

  2. 自己写的jQuery浮动广告插件

    效果图: 文件位置摆放: 插件的js代码: $.extend({ pfAdv:function(options){ var defaults={ count:1, startTop:200, star ...

  3. 非常强大的jQuery万能浮动框插件

    支持hover, click, focus以及无事件触发:支持多达12种位置的定位,出界自动调整:支持页面元素加载,Ajax加载,下拉列表,提示层效果,tip类效果等:可自定义装载容器:内置UI不错的 ...

  4. jQuery对象插件封装步骤

    jQuery是js的一个非常优秀的库,它大大简化了js的很多操作,并且解决了js的大部分兼容性问题.甚至很多css兼容性问题,用jQuery写都能解决. 这里是对象插件的封装.当然,封装插件很多,这里 ...

  5. jQuery为开发插件提拱了两个方法:jQuery.fn.extend(); jQuery.extend();

    jQuery为开发插件提拱了两个方法,分别是: jQuery.fn.extend(); jQuery.extend(); jQuery.fn jQuery.fn = jQuery.prototype ...

  6. C#结合Jquery LigerUI Tree插件构造树

    Jquery LigerUI Tree是Jquery LigerUI()的插件之一,使用它可以快速的构建树形菜单.呵呵 废话不说了,直入正题,下面介绍C#结合ligerui 构造树形菜单的两种方法 1 ...

  7. 基于MVC4+EasyUI的Web开发框架经验总结(1)-利用jQuery Tags Input 插件显示选择记录

    最近花了不少时间在重构和进一步提炼我的Web开发框架上,力求在用户体验和界面设计方面,和Winform开发框架保持一致,而在Web上,我主要采用EasyUI的前端界面处理技术,走MVC的技术路线,在重 ...

  8. 20款美化网站的 jQuery Lightbox 灯箱插件

    jQuery Lightbox 灯箱插件可以让你为您的网站和应用程序展示优雅的图像,视频 和其它内容(使用模式窗口).如果你是一个开发人员,你必须拥有 jQuery 灯箱插件集合,因为有一部分的客户会 ...

  9. Croppic – 免费开源的 jQuery 图片裁剪插件

    Croppic 这款开源的 jQuery 图片裁剪插件能够满足网站开发人员各种不同的使用需要.只需要简单的上传图片,就可以实现你想要的图像缩放和裁剪功能.因为使用了 HTML5 FormData  对 ...

随机推荐

  1. 关于H5页面在微信浏览器中音视频播放的问题

    Android 上,因为各个软件使用的浏览器渲染引擎不一样,所以视频播放的效果差异也很大,这里主要以微信为主.微信使用的是腾讯浏览器自带的X5内核. 而iOS是不允许使用第三方浏览器内核的,就是Goo ...

  2. PHP修改css文件中的背景图片并下载到本地

    扒网站当中一般css中的图片扒不下来,这个脚本就是用来下载这些图片到本地的 流程 1.获取css文件路径 2.打开文件逐行读取判断是否包含需要的图片 2.1 包含则 -进行截取直接获取到相对路径 2. ...

  3. Linux下端口被占用,关掉端口占用的方法

    Linux下端口被占用(例如端口3000),关掉端口占用的进程的方法: 1.netstat -tln | grep 3000 2.sudo lsof -i:3000 3.sudo kill -9 进程

  4. Docker - 解决运行容器报 WARNING: IPv4 forwarding is disabled. Networking will not work. 的问题

    问题背景 执行运行容器的命令 docker run -d -uroot -p 8080:8080 --name jenkins2 -v /var/jenkins_node/:/var/jenkins_ ...

  5. MySQL全面瓦解11:子查询和组合查询

    概述 子查询是SQL查询中的重要一块,是我们基于多表之间进行数据聚合和判断的一种手段,使得我们的处理复杂数据更加的便捷,这一节我们主要来了解一下子查询. 先做一下数据准备,这边建立三张表:班级.学生. ...

  6. 查找数组中第k大的数

    问题:  查找出一给定数组中第k大的数.例如[3,2,7,1,8,9,6,5,4],第1大的数是9,第2大的数是8-- 思考:1. 直接从大到小排序,排好序后,第k大的数就是arr[k-1]. 2. ...

  7. 1. 线性DP 53. 最大子序和.

    53. 最大子序和. https://leetcode-cn.com/problems/maximum-subarray/ func maxSubArray(nums []int) int { dp ...

  8. binary hacks读数笔记(共享库)

    共享库从文件结构上来讲,与共享对象没什么区别.Linux下,共享库就是普通的ELF共享对象. 1.共享库命名: libname.so.x.y.z :其中最前面使用前缀lib,中间是库的名字和后缀&qu ...

  9. 使用spring框架进行aop编程实现方法调用前日志输出

    aop编程 之使用spring框架实现方法调用前日志输出 使用spring框架实现AOP编程首先需要搭建spring框架环境: 使用Spring框架实现AOP工程编程之后,不需要我们去写代理工厂了,工 ...

  10. C++中STL的sort函数

    简单介绍C++ sort函数 这个函数需要STL算法头文件 #include <algorithm> using namespace std; 这个sort( , , )可以带两个参数也可 ...