如何制作滚动条占位符

2024-03-29

我的问题是浏览器窗口垂直滚动条被删除,例如overflow:hidden;稍后再次出现时会使页面跳转。我使用 jQuery 从访问者中删除滚动选项,同时运行脚本并将页面滚动到特定点,然后使其再次重新出现。

当滚动条不存在时,我可以为滚动条创建一个占位符,这样它就不会出现吗jump back?

或者是否可以“禁用”它并将其“灰显”?

我通过搜索找不到任何解决方案。我在这里发现了类似的东西:stackoverflow.com https://stackoverflow.com/questions/838545/div-vertical-scrollbar-show滚动条始终存在的地方。但不同之处在于,即使页面比窗口长,滚动条也必须保持禁用状态。它只能通过我控制的另一个脚本再次“打开”。

这有可能吗?

Thanks.


Update:

是时候更新状态了。

我对星云背景图像有一些问题,该图像设置在body tag.
当 jQuery 脚本(来自 cwolves 答案)将填充添加到html标签,因此应该将页面上的所有元素推到左侧,背景图像仍然表现不正确。

嗯,我发现body元素的反应不一样div元素。它不仅仅是内部的一个“块”html像任何其他块元素一样的标签。它有自己的行为,显然不能用同样的方式来欺骗。因此,背景图像在打开时无法触摸body.
但我花了一些时间才意识到......

最终的解决方案是如此简单,以至于当我发现这一点时,我几乎热泪盈眶,想到无尽的(我可能有点夸张)时间的调查body.
我只是把所有东西都包裹在一个<div id="body">并给了这个背景图像。突然间,一切都井然有序。

From:

<body>
...
</body>

And

body {background-image: url(...);}

To:

<body>
<div id="body">
...
</div>
</body>

And:

#body {background-image: url(...);}

并且对以下问题更加明智一点body.

不再“跳跃”了。可口的。

效果现在已完全运行,您几乎不会注意到滚动条的变化,并且每个细节都适合。 Cwolve 的脚本非常完美并且可以进行精确的计算:

function getScrollBarWidth(){
    var div = $('<div><div>' + new Array(100).join('content<br />') + '</div></div>'),
       div2 = div.find('div'),
       body = $(document.body);

    div.css({ overflow : 'hidden', width: 100, height: 100, position : 'absolute', left : -1000, top : -1000 });
    body.append(div);

    var width1 = div2.width();
    div.css({ overflow : 'auto' });
    var width2 = div2.width();

    div.remove();

    return width1 - width2;
}

The getScrollBarWidth()无论浏览器如何,都将包含滚动条的宽度,我可以使用它来添加和删除填充,因为我想要:

    var sWidth = getScrollBarWidth();

    $("body").css({'overflow': 'hidden'});
    $("html").css({'padding-right': sWidth});
    
    $('html, body').delay(1000).animate({
        
        scrollTop: $(hash).offset().top - 170
            
    }, 2000, 'swing', function(){

        $("body").css({'overflow': 'auto'});
        $("html").css({'padding-right': 0});

    });

非常感谢。这是一个很好的。


这个怎么样:

  • 确定当前浏览器中滚动条的宽度
  • 将内容 div 设置为padding-right: scrollbar-width
  • 隐藏父级上的滚动条

动画结束后:

  • 删除内容上的右侧填充
  • 在父级上显示滚动

我做了一个演示:http://jsfiddle.net/cwolves/ezLfU/1/ http://jsfiddle.net/cwolves/ezLfU/1/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何制作滚动条占位符 的相关文章

随机推荐

  • 是否可以使用 AWS PHP SDK 将子域添加到 Route53?

    我正在开发一个项目 我们将在 Route53 中创建子域和域 我们希望有一种方法可以通过编程来完成此操作 PHP 文档的 SDK 似乎有点简单 但看起来 createHostedZone 可用于创建域或子域记录 changeResource
  • C#:捕获另一个应用程序的窗口状态更改(我认为是用 c/c++ 编写的)

    我遇到一种情况 我需要捕获另一个窗口的窗口状态更改 该窗口不属于我的应用程序 并且不是我编写的 我认为它是用 C 编写的 实际上我正在使用一个单独的线程 我不断地执行 GetWindowState 并在该值更改时触发自定义事件 我有窗口的句
  • 获取行中日期值之前的最新日期

    我正在使用 MSSQL 2008 R2 我正在尝试获取最新数据日期到存储在另一列中的日期 我可以在子查询中使用 max ProcedureDate 提取最新的数据日期 但是 我需要列中存储的日期之前的最新日期 这是一个例子 Current
  • 如何设置任务的计划完成日期?

    我试图弄清楚如何在创建或更新任务时设置计划完成日期 任务的计划完成日期始终等于项目创建的日期 我使用了几种不同的日期时间格式 但它从未改变 这是我使用过的两个没有抛出错误的 2015 05 02T08 00 00 000 0500 2015
  • 可以打印超过 100 行的 data.table 吗?

    data table 有一个很好的功能 可以抑制输出到表的头部和尾部 是否可以一次查看 打印 100 行以上 library data table Convert the ubiquitous iris data to a data tab
  • 实体框架代码优先和连接字符串

    我有一个使用 Entity Framework Code First 的小型 MVC 3 应用程序 并为模型使用此连接字符串 data source SQLEXPRESS Integrated Security SSPI AttachDBF
  • Flask 应用程序中的 Rpy2:致命错误:无法初始化 JIT

    我有一个 Flask 应用程序 我正在尝试添加一个 RESTful 端点 该端点使用 rpy2 从 rds文件 当我运行我的测试脚本时python3 testscript py其中包含import rpy2 robjects as obje
  • Laravel where if 语句

    我在从数据库中选择时遇到了问题 基本上我想要实现的是 我有一个包含 3 列的表 type number date 我需要根据列 类型 执行操作 If type 1 then where number gt 1 else where date
  • DbContext AutoDetectChangesEnabled 设置为 false 检测更改

    我有点难住了 根据我读到的设置DbContext AutoDetectChangesEnabled to false应该禁用需要调用的更改跟踪DbContext DetectChanges为了识别要发送到数据库的更改 但是 从下面的日志可以
  • Aria2 不重新下载文件

    我正在使用 aria2 下载动态生成的文件列表 我希望它跳过下载目录中已有的文件 但它没有这样做 而是重新下载它们并添加一个 1到文件名 我尝试使用 check integrity true 但这并没有改变行为 有没有办法让它跳过已经存在的
  • 检查所有复选框jquery

    为什么我的js代码中可以一键点击name check all检查所有复选框 HTML div div
  • 我应该使用哪个 Apple 推送通知服务 Java 库? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我需要使用 Java 服务器将推送通知发送到 iOS 设备Apple 推送通知服务 APNS http
  • ui-router 中 templateUrl 从一种状态动态更改为另一种状态

    html a target blank t name a 上面的代码位于 ng repeat 中 其中许多模板链接加载了名称和 id 因此当我单击每个链接时 href 将更新 并将 id 号附加到所选模板链接 我使用相同的控制器生成大约十个
  • 当 html 属性和 css 样式的功能重叠时

    1 如果在CSS文件中我们指定以下样式 td text align center 在 Html 文件中我们有 td align left 那么 CSS 文件中设置的值将优先于内联 html 属性 因此其中包含的元素 td 单元格将与中心对齐
  • 如何将 package.json 中的所有 npm 依赖项记录到 README.md 中

    我想记录所有 npmdevDependencies and dependencies中描述的package json文件到README md文件在同一个项目中 以下属性值得关注name description and version 当然
  • React-Vega 和 React-Vega 工具提示

    我在用着react vega lite 官方给出的例子 https vega github io vega lite https vega github io vega lite https vega github io react veg
  • Anaconda ImportError:/usr/lib64/libstdc++.so.6:找不到版本“GLIBCXX_3.4.21”

    当我尝试在 conda 环境中运行 Python 脚本时 出现以下导入错误 squad azada scholar fe00 Desktop Toy Problem Team 2 python3 train py Traceback mos
  • 将任何文件转换为二进制文件,反之亦然

    我在 StackOverFlow 网站和互联网上搜索了这个问题及其相关问题 但仍然没有得到明确的答案 我想知道我可以使用什么软件将任何文件 关于大小 转换为包含此特定文件的零和一 仅 的文本文件 然后将包含这些零和一的文本文件转换回原始文件
  • 如何在不使用 POJO 的情况下利用 Spring Batch?

    I know BeanWrapperFieldSetMapper类取决于 POJO 但事情是这样的 如果我想利用 Spring Batch 功能但不想创建单独的作业 不想编写 POJO 和单独的读取器写入或映射器 该怎么办 我的要求是读取
  • 如何制作滚动条占位符

    我的问题是浏览器窗口垂直滚动条被删除 例如overflow hidden 稍后再次出现时会使页面跳转 我使用 jQuery 从访问者中删除滚动选项 同时运行脚本并将页面滚动到特定点 然后使其再次重新出现 当滚动条不存在时 我可以为滚动条创建