页面(live-version) (大致)由三部分组成:
右侧边栏应该是可滚动的,所以我设置了overflow-y: scroll; right: -17px; 简单地隐藏滚动条。 Body, html 有overflow-y: auto;。这样我就不必有两个滚动条(用于页面和右侧边栏)。
问题: (仅在 CHROME 中,在版本 62 和 63 上测试)
出于某种原因,在不同的机器上,chrome 为我提供了两种不同的滚动条样式:Case 1和 Case 2 .
所以基本上,对于情况 1,右侧边栏滚动条 是“绝对定位的”并且页面因此隐藏了 17px 本身,而对于情况 2 滚动条“相对定位”,页面隐藏滚动条占用的 17px。
问题
1)为什么相同操作系统和浏览器版本,不同机器滚动条不同?
2) 有什么办法可以不用任何插件来解决这个问题吗?考虑到 Windows 用户有情况 2,而 MacOS 用户有情况 1 或 2?
最佳答案
1) Why scrollbars are different on the same OS and browser version, but different machines ?
这可能与 macOS 上的系统设置有关。
如果您选择了Always,我很确定滚动条会将页面内容推开。如果您连接了鼠标,则相同。否则,它具有您提到的“绝对定位”行为。请记住,Windows 用户可能会看到类似于 Always 的行为。
2) Is there any way to fix this without any plugins ? Taking into consideration Windows users have the case 2 and MacOS users either case 1 or 2 ?
好吧,首先要有一点意见:我认为隐藏滚动条而不向用户提供另一个提示来传达元素的可滚动性不是一个好主意。无论如何,除此之外,我想不出任何不是某种 hack 的东西,但这里有:
因为这是只需要执行一次的东西,并且假设我们想要跨浏览器和操作系统的可预测功能,您可以在这里使用一些 JS。在保留侧边栏的系统上,侧边栏元素的 offsetWidth 和 scrollWidth 属性将不同。默认情况下,您的元素可以具有以下样式:
$child-h-padding: 15px;
$max-scrollbar-width: 35px;
.r-sidebar {
overflow-y: scroll;
padding: 12px $child-h-padding;
...rest
}
.r-sidebar--r-padded {
padding-right: $child-h-padding + $max-scrollbar-width;
right: -$max-scrollbar-width;
}
您可以根据 offsetWidth 和 scrollWidth 的值添加/删除 .r-sidebar--r-padded 类。
这应该无处不在,无论浏览器/操作系统如何。我已经在 macOS/Chrome 上使用两个侧边栏设置进行了测试。
关于javascript - Chrome 滚动条消失(不是 overflow-y),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47995597/
HashMap中为什么引入红黑树,而不是AVL树呢1.概述开始学习这个知识点之前我们需要知道,在JDK1.8以及之前,针对HashMap有什么不同。JDK1.7的时候,HashMap的底层实现是数组+链表JDK1.8的时候,HashMap的底层实现是数组+链表+红黑树我们要思考一个问题,为什么要从链表转为红黑树呢。首先先让我们了解下链表有什么不好???2.链表上述的截图其实就是链表的结构,我们来看下链表的增删改查的时间复杂度增:因为链表不是线性结构,所以每次添加的时候,只需要移动一个节点,所以可以理解为复杂度是N(1)删:算法时间复杂度跟增保持一致查:既然是非线性结构,所以查询某一个节点的时候
了解Rails缓存如何工作的人可以真正帮助我。这是嵌套在Rails::Initializer.runblock中的代码:config.after_initializedoSomeClass.const_set'SOME_CONST','SOME_VAL'end现在,如果我运行script/server并发出请求,一切都很好。然而,在我的Rails应用程序的第二个请求中,一切都因单元化常量错误而变得糟糕。在生产模式下,我可以成功发出第二个请求,这意味着常量仍然存在。我已通过将以上内容更改为以下内容来解决问题:config.after_initializedorequire'some_cl
我遇到了一个非常奇怪的问题,我很难解决。在我看来,我有一个与data-remote="true"和data-method="delete"的链接。当我单击该链接时,我可以看到对我的Rails服务器的DELETE请求。返回的JS代码会更改此链接的属性,其中包括href和data-method。再次单击此链接后,我的服务器收到了对新href的请求,但使用的是旧的data-method,即使我已将其从DELETE到POST(它仍然发送一个DELETE请求)。但是,如果我刷新页面,HTML与"new"HTML相同(随返回的JS发生变化),但它实际上发送了正确的请求类型。这就是这个问题令我困惑的
如果names为nil,则以下中断。我怎样才能让这个map只有在它不是nil时才执行?self.topics=names.split(",").mapdo|n|Topic.where(name:n.strip).first_or_create!end 最佳答案 其他几个选项:选项1(在其上执行map时检查split的结果):names_list=names.try(:split,",")self.topics=names_list.mapdo|n|Topic.where(name:n.strip).first_or_create!e
我将Cucumber与Ruby结合使用。通过Selenium-Webdriver在Chrome中运行测试时,我想将下载位置更改为测试文件夹而不是用户下载文件夹。我当前的chrome驱动程序是这样设置的:Capybara.default_driver=:seleniumCapybara.register_driver:seleniumdo|app|Capybara::Selenium::Driver.new(app,:browser=>:chrome,desired_capabilities:{'chromeOptions'=>{'args'=>%w{window-size=1920,1
什么是测试格式验证的最佳方法让我们说一个用户名,使用字母数字的正则表达式,但不是纯数字?我一直在我的模型中使用以下验证validates:username,:format=>{:with=>/^[a-z0-9]+[-a-z0-9]*[a-z0-9]+$/i}数字用户名(例如“342”)通过了验证,这是我不想要的。 最佳答案 您想“向前看”一封信:/\A(?=.*[a-z])[a-z\d]+\Z/i 关于ruby-on-rails-Rails格式验证——字母数字,但不是纯数字,我们在Sta
我要下载http://foobar.com/song.mp3作为song.mp3,而不是让Chrome在其native中打开它浏览器中的播放器。我怎样才能做到这一点? 最佳答案 您只需要确保发送这些header:Content-Disposition:attachment;filename=song.mp3;Content-Type:application/octet-streamContent-Transfer-Encoding:binarysend_file方法为您完成:get'/:file'do|file|file=File.
我发现ruby加载路径是一个数组,很多项目都是这样使用的:$:.unshift(File.expand_path("../../lib",__FILE__))可以将本地文件添加到ruby路径数组的前面,方便我们require或者load。所以,我希望知道为什么我们不使用push将文件添加到数组的末尾? 最佳答案 假设您有一个“date.rb”文件(为什么不呢)并且您想要加载这个文件,而不是标准库日期。如果您使用追加,当您调用require'date'时您的文件将永远不会被加载,因为它位于数组的末尾并且标准日期会在之前找到。因此,如果
我有一个这样的哈希{55=>{:value=>61,:rating=>-147},89=>{:value=>72,:rating=>-175},78=>{:value=>64,:rating=>-155},84=>{:value=>90,:rating=>-220},95=>{:value=>39,:rating=>-92},46=>{:value=>97,:rating=>-237},52=>{:value=>73,:rating=>-177},64=>{:value=>69,:rating=>-167},86=>{:value=>68,:rating=>-165},53=>{:va
我在这里对我的部署策略有点困惑,在什么情况下部署时我想向unicorn发送reload信号?例如在我的例子中它会是这样的:sudokill-sUSR2`cat/home/deploy/apps/my_app/current/tmp/pids/unicorn.pid`我一直在通过杀死那个pid来部署我的应用程序,然后通过类似的东西再次启动unicorn:bundleexecunicorn-cconfig/unicorn/production.rb-Eproduction-D我只是想知道为什么要使用重新加载?我可以通过这样做获得部署的任何性能吗? 最佳答案