2017-12-27 600 views
13

(live-version)由(大約):Chrome的滾動條消失的三個部分(不溢出-Y)

  • 左側邊欄
  • 中心的內容
  • 右側欄

右側欄應是可滾動的,所以我設置了overflow-y: scroll; right: -17px;來簡單地隱藏滾動條。 Body, htmloverflow-y: auto;。這樣我就不必有兩個滾動條(頁面和右邊欄)。

問題: (僅適用於Chrome,在版本62和63測試)

對於在不同機器上的一些原因,鉻讓我對滾動條兩種不同的風格:Case 1Case 2

所以基本上,對於情況1將在右側欄滾動是「絕對定位」和第隱藏的,因爲它本身知識+,而對於情況下2滾動條「相對定位」和頁面隱藏滾動條所需的17px。

問題

1)爲什麼滾動條都在相同的操作系統和瀏覽器版本,但不同機器上的不同?

2)有沒有辦法解決這個問題,沒有任何插件?考慮到Windows用戶有情況2和MacOS用戶情況1或2

+0

有些問題:您使用哪個操作系統進行測試?你確定瀏覽器緩存已經完全清空了嗎?對於我的情況(Windows和Chrome版本63.0.x)一切正常(所以沒有情況2)。 – Andreas

+0

看着現場版本,並通過響應寬度運行,我看到很多響應的問題。我的MacBook Air的寬度爲1440像素,我看到的只是右側面板的一部分。我會先看看你的css規則。 – xeo

回答

6

1)爲什麼在相同的操作系統和瀏覽器版本,但不同的機器上,滾動條不同?

這可能與macOS上的系統設置有關。

macOS scroll bar OS settings

如果你有Always選擇,我敢肯定,滾動條推頁面內容的方式進行。如果您連接了鼠標,也一樣。否則,它有你提到的「絕對定位」的行爲。請記住,Windows用戶可能會看到類似於Always的行爲。

2)有沒有什麼辦法解決這個問題,沒有任何插件?考慮到Windows用戶有情況2和MacOS用戶情況1或2?

那麼,有點意見第一:我不認爲這是一個好主意,隱藏滾動條沒有提供給用戶溝通元素的可滾動性的另一個提示。總之,我想不出任何不是某種黑客行爲,但這裏有:

由於這是隻需要執行一次,並假設我們希望跨瀏覽器的可預測功能和操作系統,你可以在這裏使用一些JS。在保留邊欄的系統上,側邊欄元素的offsetWidthscrollWidth屬性將有所不同。默認情況下,您的元素可能有後續的風格:

$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; 
 
}

您可以添加/刪除基於對offsetWidthscrollWidth的值.r-sidebar--r-padded類。

這個應該無處不在,無論瀏覽器/操作系統。我已經在macOS/Chrome上使用兩個邊欄設置進行了測試。

+0

「請記住,Windows用戶可能會看到類似Always的行爲」幾個值得注意的例外是IE11和Edge,幾秒鐘後自動隱藏滾動條。較新版本的Microsoft Office也會這樣做,這非常刺激(無法禁用它)。 – BoffinbraiN

3

將滾動條移出用戶的視線並不是一種完全隱藏滾動條的方法。

有沒有辦法解決這個沒有任何插件?

這是你在找什麼?

.r-sidebar::-webkit-scrollbar { display: none; } 

這會隱藏所有瀏覽器的滾動條。由於其特定於webkit,因此假設瀏覽器版本是最新的,它應該可以跨越不同的操作系統。

More info here

爲什麼滾動條都在相同的操作系統和瀏覽器的版本不同,但不同機器

我沒有爲此立即答覆,但請提供有關該機器的詳細信息/ os版本/瀏覽器版本,我會盡我所能提供更多答案

1

左側邊欄:

這個添加到滾動DIV:

direction: rtl; 
left: -17px; 

而且這裏面的div:

.nav{ 
direction: ltr; 
} 

這將完全隱藏滾動條。但div仍然是可滾動的。