Javascript / jQuery 粘性,不使用 css 位置:固定

2023-12-26

我正在寻找一个用于粘性标题的 Javascript/jQuery 插件,它不会将元素的样式切换到固定位置。通常,我正在使用这个http://stickyjs.com/ http://stickyjs.com/而且效果很好。

我正在开发一个带有 jQ​​uery 动画的网站,我的一个 div 有一个宽度为 100% 的粘性标题。但是,当我将其移动到左侧(例如)时, width:100% 现在基于窗口的宽度而不是他的容器。

那么,是否有一个现有的插件可以与其他插件执行相同的操作,但保留位置:相对并计算滚动顶部以应用为我的粘性标题的边距顶部?


编辑 2021

我下面的答案很旧了。我不建议再使用任何 JS 代码,而只需使用 CSS 即可position: sticky;这更容易实现,但也更高效/更流畅(注意:Internet Explorer 不支持position: sticky;).

原答案

所以,我解决了我的问题!这是我的 JavaScript 代码:

您必须将 top:0px 设置为默认值

function relative_sticky(id, topSpacing){

if(!topSpacing){ var topSpacing = 0; }

var el_top = parseFloat(document.getElementById(id).getBoundingClientRect().top);
    el_top = el_top - parseFloat(document.getElementById(id).style.top);
    el_top = el_top * (-1);
    el_top = el_top + topSpacing;

    if(el_top > 0){
    document.getElementById(id).style.top = el_top + "px";
    } else{
    document.getElementById(id).style.top = "0px";
    }
}

window.onscroll = function(){

    relative_sticky("your_element_id", 10);
}

在IE中不太流畅,所以我加了一个延迟:

var delay = (function(){
  var timer = 0;
  return function(callback, ms){
    clearTimeout (timer);
    timer = setTimeout(callback, ms);
  };
})();

window.onscroll = function(){
    
    if(BrowserDetect.browser == "Explorer" || BrowserDetect.browser == "Mozilla"){
    // or your own way to detect browser
    
        delay(function(){
        relative_sticky("admin_users_head", 31);
        }, 200);
    }
    else{
    relative_sticky("admin_users_head", 31);
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Javascript / jQuery 粘性,不使用 css 位置:固定 的相关文章

随机推荐

  • Django 导入错误 - 没有名为 django.conf.urls.defaults 的模块

    我正在尝试运行使用 django 1 6 的 statsd graphite 访问 Graphite URL 时 出现 django 模块错误 文件 opt graphite webapp graphite urls py 第 15 行 位
  • iOS 中自动布局和自动调整大小之间的基本区别是什么

    我一直在寻找自动布局和自动调整大小之间的正确区别 但无法找到确切的答案 应用程序中哪里可以使用 自动布局 以及 自动调整大小 任何帮助都将是感谢的一部分 正如马特 纽伯格 Matt Neuburg 在 his book http www a
  • 从 Windows 移植到 Linux。汇编命令翻译

    我最近开始学习从 Windows 到 Linux 的移植 我一直在将程序从 Intel 语法翻译为 AT T 语法 并将其从 x32 转换为 x64 由于我对汇编程序特别是 AT T 还很陌生 所以我在移植时遇到了一些麻烦 只是提一下 我故
  • youtube-iframe-api 隐藏式字幕问题

    昨天 2017 年 6 月 12 日 花了大部分时间试图找出为什么当我使用 YouTube iframe 嵌入代码 从 共享 gt 嵌入 按钮生成 时我的字幕不起作用 经过多次实验 我将问题范围缩小到已经确定的范围 隐藏式字幕无法正常工作
  • 如何在 XUnit 中使用 AddTransient 方法注入“Microsoft.Extensions.Configuration.IConfiguration”

    我正在尝试对课堂上的方法进行单元测试TWService并需要两个依赖项来注入 即IXMLResponseSave and IConfiguration 我能够注入依赖IXMLResponseSave在我的事实中使用以下行 services
  • 无法创建新的远程会话 - Selenium webdriver

    我遇到异常 线程 main 中的异常 org openqa selenium SessionNotCreatedException 无法创建新的 远程会话 所需能力 能力 marionette true browserName firefo
  • 我如何只回显空白而不回显换行符

    我正在开发一个简单的批处理脚本 该脚本循环目录中的文件并使用 ffmpeg 处理它们 出于可读性目的 我想将 ffmpeg 输出缩进 4 个空格 但我无法想出一种可行的方法 echo off for a in dp0rawVideo MP4
  • 使用 AWS Lambda 从 AWS S3 访问元数据

    我想检索每次将对象上传到 S3 时添加的一些元数据 使用控制台 x amz meta my variable 我已经通过控制台设置了 lambda 以便在每次将对象上传到我的存储桶时触发 我想知道我是否可以使用类似的东西variable e
  • 如何在Intellij IDEA 13.1中创建具有Maven结构的Spring MVC应用程序?

    我想创造新的春季MVC项目于Maven结构使用Intellij IDEA但不能那样做 实际上我想创建像这样的项目mkyong com http www mkyong com样品 例如this http www mkyong com spri
  • Android OpenGL ES 以宽高比全屏显示图像

    我想在我的 OpenGL 应用程序中全屏显示图像而不丢失其纵横比 我知道我可以将图像作为纹理绘制到 立方体 或二维平面上 但当我只想显示二维图像时 我不确定这是否真的是最好的方法 特别是因为我希望该图像全屏显示而不丢失其纵横比 我知道使用
  • new 不分配内存

    这应该会每秒填满我的内存 100 MB 左右 我使用 gnome systemmonitor 和 htop 跟踪内存使用情况 但不知怎的 事实并非如此 为什么 include unistd h include
  • 仅在完成加载后显示所有图像[重复]

    这个问题在这里已经有答案了 In div img src images 1 jpg img src images 2 jpg img src images 3 jpg img src images 4 jpg img src images
  • 不兼容的类型:推理变量 T 具有不兼容的边界[重复]

    这个问题在这里已经有答案了 我有下面的代码 public int solution int X int A List
  • 谷歌字体 Rubik 无法使用,或者我错过了什么?

    我在网站上使用 Google 的 Rubik 字体 仍在进行中 它 突然停止显示任何文本 似乎即使在 Google Font 网站上 该字体也无法正常工作 他们所有的设备和仪器都活着 在魔方下方没有显示 但如果你检查它 它就在那里 还有其他
  • CORS 播放框架

    我正在 Play Framework 2 5 Java 后端开发 Angular 2 应用程序 如果我通过浏览器 URL 访问我的端点 它们就可以正常工作 但是 从 Angular 2 应用程序调用它会显示错误 XMLHttpRequest
  • 有没有办法跟踪扩展的资源使用情况?

    我通过 GitHub 和 Google 搜索注意到很多人都有和我类似的问题 vscode 挂起 除了文本编辑器之外 什么都不起作用 有时除了调试之外一切都有效 像往常一样 禁用所有扩展使其可以完美运行 检查开发者工具 我注意到 Extens
  • HSQLDB ROWNUM 与 Oracle 的兼容性

    THe HSQLDB 变更日志 http hsqldb org doc 2 0 changelist 2 0 txt指出ROWNUM 被添加到v2 2 0在针对内存 HSQLDB 运行集成测试时 我使用它没有任何问题 但是 我想对真实的 O
  • 未捕获的类型错误:对象 [object Object] 没有方法“on”

    谁能帮我解决这个问题 当我使用最新 或较新 版本的 jQuery 时 下面的小脚本可以正常工作 但是 当我使用旧版本的 jQuery 时 我的脚本显示on函数不存在 这是我的脚本 不适用于旧版本的 jQuery document ready
  • C# json 到数组调试“应用程序进入中断模式”

    我想将 json 转换为数组 但当我尝试调试模式时 我得到 应用程序进入中断模式 并且如果我尝试运行它 程序就会冻结 我用的答案是将 json 转换为 C 数组 https stackoverflow com questions 95865
  • Javascript / jQuery 粘性,不使用 css 位置:固定

    我正在寻找一个用于粘性标题的 Javascript jQuery 插件 它不会将元素的样式切换到固定位置 通常 我正在使用这个http stickyjs com http stickyjs com 而且效果很好 我正在开发一个带有 jQ u