Làm cho thanh cuộn chính luôn hiển thị


Câu trả lời:


333
html {
    overflow: -moz-scrollbars-vertical; 
    overflow-y: scroll;
}

Điều này làm cho thanh cuộn luôn hiển thị và chỉ hoạt động khi cần thiết.

Cập nhật: Nếu cách trên không hoạt động, chỉ cần sử dụng cái này có thể.

html {
    overflow-y:scroll;
}

3
Bạn có biết phiên bản FF mang đến sự hỗ trợ overflow-ynào không? Vì dường như đó -moz-scrollbars-verticallà sự phản đối có lợi cho overflow-ytài sản.
Ionuț G. Stan

Tôi nghĩ Internet Explorer 6.x +, Firefox 1.5+ nếu tôi nhớ chính xác. Tôi đã sử dụng mã trên và nó hoạt động trong FF1.5-3.5.1 và IE6-8 cho tôi.
Corv1nus

2
Có bất kỳ lựa chọn thay thế nào cho "nhảy trang" khi các trang nhất định trên trang web của bạn quá nhỏ để có thanh cuộn và các trang khác không? Hay đây là "thực hành tốt nhất"? Tôi sẽ phải thừa nhận, tôi không thấy nhiều trang trên web không chiếm toàn bộ trang.
Jess

2
Tôi không chắc liệu đó có phải là cách thực hành tốt nhất hay không, nhưng có thanh cuộn trên tất cả các trang và chỉ hoạt động khi cần thiết, để tránh nhảy trang thường là một giải pháp chấp nhận được. Tôi có xu hướng thích thanh cuộn liên tục hơn nhảy.
Corv1nus

1
Đối với những người (như tôi), những người tìm thấy kiểu dáng htmlhơi hack-y , lưu ý rằng bạn có thể sử dụng bộ chọn giả cấu trúc :rootthay vì html. Xem: developer.mozilla.org/en-US/docs/Web/CSS/:root
Rounin

31

Đảm bảo tràn được đặt thành "cuộn" chứ không phải "tự động". Như đã nói , trong OS X Lion, tràn được đặt thành "cuộn" hoạt động giống như tự động hơn trong thanh cuộn đó sẽ vẫn chỉ hiển thị khi được sử dụng. Vì vậy, nếu bất kỳ giải pháp nào ở trên dường như không hoạt động thì đó có thể là lý do.

Đây là những gì bạn sẽ cần phải sửa nó:

::-webkit-scrollbar {
  -webkit-appearance: none;
  width: 7px;
}
::-webkit-scrollbar-thumb {
  border-radius: 4px;
  background-color: rgba(0, 0, 0, .5);
  -webkit-box-shadow: 0 0 1px rgba(255, 255, 255, .5);
}

Bạn có thể tạo kiểu cho phù hợp nếu bạn không thích mặc định.


1
Điều này làm việc! Nhưng làm thế nào bạn có thể làm cho nó chỉ trên một div cụ thể?
Giàu

@Rich giống như bất kỳ yếu tố css khác. .yourdiv :: - webkit-scrollbar {...}
Kris

@Kris Xin chào, cảm ơn câu trả lời, đây là ví dụ về nó. stackoverflow.com/a/54667091/2637261
Giàu

Tại sao điều này được sử dụng-webkit-appearance: none;
Suraj Jain

Điều đó thật tuyệt! Nên là câu trả lời được chấp nhận.
Cyberpunker

25

Mọi thứ đã thay đổi trong những năm qua. Các câu trả lời ở trên không còn giá trị trong mọi trường hợp nữa. Apple đang đẩy các thanh cuộn biến mất ở khắp mọi nơi. Safari, Chrome và thậm chí Firefox trên MacO (và iO) chỉ hiển thị thanh cuộn khi thực sự cuộn - Tôi không biết về Windows / IE hiện tại. Tuy nhiên, có những cách không chuẩn để định kiểu thanh cuộn trên Webkit (IE đã bỏ cách đây rất lâu).


Nhưng nó xuống cấp một cách duyên dáng ngay trên những cái mới?
Bến

3
Cảm ơn cho điểm tuyệt vời này trên thanh cuộn biến mất. Đối với tôi, lý do để giữ cho thanh cuộn hiển thị là để tránh sự giật nhẹ nhưng rất đáng chú ý và rất khó chịu khi nội dung thay đổi từ có cuộn sang không. Với các thanh cuộn biến mất, chúng không giật cơ thể khi chúng hiển thị và ẩn đi nên nó ổn với tôi. Nhưng cảm ơn vì điểm tuyệt vời này.
Noitidart

4
Từ quan điểm UX, hầu hết các lần chúng tôi muốn thanh cuộn hiển thị. Theo xu hướng hiện tại, nếu thanh cuộn không hiển thị, đây là bước bổ sung để "thử" danh sách hiển thị để biết thêm trong danh sách. Một đầu mối trực quan bổ sung rằng danh sách thả xuống hoặc danh sách có nhiều mục hơn trong đó là không cần thiết nếu mọi người nhìn thấy một thanh cuộn.
Windsurf88

24
html {
    overflow-y: scroll;
}

Đó là điều bạn muốn?

Thật không may, Opera 9.64 dường như bỏ qua khai báo CSS đó khi được áp dụng cho HTMLhoặc BODY, mặc dù nó hoạt động cho các yếu tố cấp khối khác như DIV.


13
html {height: 101%;}

Tôi sử dụng giải pháp trình duyệt chéo này (lưu ý: Tôi luôn sử dụng khai báo DOCTYPE trong dòng đầu tiên, tôi không biết nếu nó hoạt động trong quirksmode, không bao giờ thử nghiệm nó ).

Điều này sẽ luôn hiển thị một thanh cuộn dọc HOẠT ĐỘNG trong mỗi trang, thanh cuộn dọc sẽ chỉ có thể cuộn được vài pixel.

Khi nội dung trang ngắn hơn vùng hiển thị của trình duyệt (cổng xem), bạn vẫn sẽ thấy thanh cuộn dọc hoạt động và nó sẽ chỉ có thể cuộn được vài pixel.

Trong trường hợp bạn bị ám ảnh bởi xác thực CSS (tôi chỉ tuân theo xác thực HTML) bằng cách sử dụng giải pháp này, mã CSS của bạn cũng sẽ xác thực cho W3C vì bạn không sử dụng các thuộc tính CSS không chuẩn như -moz-scrollbars-vertical


1
Giải pháp tao nhã
Artur Keyan

12

body { height:101%; } sẽ "cắt" các trang lớn hơn.

Thay vào đó, tôi sử dụng:

body { min-height:101%; }

1
Câu hỏi này đã được hỏi 5 năm trước và nó đã có câu trả lời được chấp nhận. Câu trả lời của bạn không cung cấp câu trả lời tốt hơn câu trả lời đã được chấp nhận.
Dipen Shah

18
Câu trả lời này thực sự cung cấp thông tin bổ sung không được cung cấp trong các câu trả lời khác.
GaTechThomas

2

Tôi đã có thể làm cho nó hoạt động bằng cách thêm nó vào thẻ body. Nó đẹp hơn đối với tôi vì tôi không có gì trên phần tử html.

body {
    overflow-y: scroll;
}

2

Một cách tiếp cận khác là đặt chiều rộng của phần tử html thành 100vw. Trên nhiều nếu không phải hầu hết các trình duyệt, điều này phủ nhận ảnh hưởng của thanh cuộn trên chiều rộng.

html { width: 100vw; }

0

Đặt chiều cao thành 101% là giải pháp cho vấn đề của tôi. Các trang của bạn sẽ không còn 'nhấp nháy' khi chuyển đổi giữa các trang vượt quá chiều cao của chế độ xem và các trang không.


0
body { 
    min-height: 101vh; 
} 

làm việc tốt nhất cho tôi


0

Tôi làm việc này:

html {
    margin-left: calc(100vw - 100%);
    margin-right: 0;
}

Sau đó, tôi không phải nhìn vào thanh cuộn màu xám xấu xí khi không cần thiết.


Câu hỏi yêu cầu nó luôn luôn được nhìn thấy.
Corv1nus
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.