2011-07-16 32 views
15

Thông thường một thanh cuộn được định vị như thế này:CSS: Có thể "đẩy" thanh cuộn Webkit vào nội dung không?

________________________________________ 
|       |   | 
|   content   | scrollbar | 
|       |   | 
|       |   | 
|       |   | 
|       |   | 
|__________________________|___________| 

tôi về cơ bản tìm cách để có một khoảng cách giữa một "tùy chỉnh" thanh cuộn và ranh giới ngoài của một container cuộn:

________________________________________ 
|     |   |  | 
|  content  | scrollbar | gap | 
|     |  <  |  | 
|     |   |  | 
|     |   |  | 
|     |   |  | 
|____________________|___________|_____| 

Sử dụng một margin-right trên ::-webkit-scrollbar hoặc ::-webkit-scrollbar-track-piece không thành công và thông báo về thanh cuộn kiểu có thể cho trạng thái Webkit:

Lề được hỗ trợ dọc theo trục của thanh cuộn. Chúng có thể là phủ định (do đó, bản nhạc có thể được tăng lên để che phủ các nút một phần).

Tôi hiện đang tự hỏi liệu có ai đã quản lý để đẩy thanh cuộn "vào" nội dung (hoặc ngoài trình bao) cho một số phương tiện khác không hơn margin.

Tôi giả định rằng điều này có thể chỉ có thể (nếu thậm chí) sử dụng một số loại mẹo - bất kỳ ý tưởng nào?

Những thứ khác tôi đã thử không thành công là padding-right: 10pxborder-right: 10px solid rgba(255, 255, 255, 0) (đường viền trong suốt).

Trả lời

6

Tôi nghĩ rằng không thể bằng cách chỉ định lề phải cho thanh cuộn phải. Thanh cuộn là một phần của cửa sổ giao diện người dùng và có thể không được tạo kiểu qua CSS.

Tuy nhiên, bạn chỉ có thể tạo trình bao bọc nội dung xung quanh tất cả các phần tử khác trong HTML của mình, cung cấp độ rộng tối đa, nhỏ hơn 100% và đặt overflow: scroll; cho trình bao bọc. Điều này sẽ đạt được hiệu quả mong muốn và làm việc trong gần như tất cả các trình duyệt.

[ý kiến ​​cá nhân] Tôi nghĩ rằng đó là một thói quen rất xấu của một số nhà thiết kế web nhất định, những người muốn kiểm soát mọi phần của màn hình của tôi. Ví dụ: thanh cuộn phải được tạo kiểu bởi trình quản lý cửa sổ không phải bởi trang web tôi hiện đang xem.

+2

Cảm ơn câu trả lời của bạn. Và giải pháp của bạn hoạt động tất nhiên tốt, nhưng không thực sự trả lời câu hỏi của tôi (mà được thừa nhận là một thử nghiệm). Tôi đồng ý nhiều hơn hoặc ít hơn với ý kiến ​​cá nhân của bạn. Tuy nhiên mọi thứ đã thay đổi kể từ khi mọi người đã làm những điều khủng khiếp với thanh cuộn IE. Tôi - đối với một - làm việc trên một ứng dụng trình duyệt trong đó cửa sổ chính không thể cuộn được. Do đó thanh cuộn không phải là một phần của chrome của trình duyệt mà là một phần tử đầu vào của một ứng dụng, không phải là một trang web. Nhưng đó cũng chỉ là ý kiến ​​cá nhân. – polarblau

+0

Mặt khác, nếu bạn đang di chuyển thanh cuộn cửa sổ chính, bạn sẽ sử dụng không gian đã xóa mới như thế nào. Bạn không thể hiển thị bất cứ điều gì nếu không có phần tử HTML để đặt nội dung vào. Vì vậy, đó chỉ là không gian trống phía sau thanh cuộn, ngay cả khi bạn sẽ làm cho nó quản lý để di chuyển nó. – feeela

+1

Không gian trắng không phải là không gian vô dụng;) – polarblau

17

Bạn có thể làm điều đó với đường viền trong suốt. Nhưng bạn cần phải thiết lập background-clip: padding-box; hoặc nó sẽ không hoạt động.

Ví dụ: http://jsfiddle.net/6KprJ/1/

+0

Trong khi đây là một thủ thuật gọn gàng, biên giới dường như được áp dụng tập trung xung quanh các đường viền của ngón tay cái có hiệu quả thay đổi giao diện của ngón tay cái cũng tùy thuộc vào cách 'dày' biên giới, đúng? – polarblau

+0

Ví dụ dễ thương! :) –

+3

Đây phải là câu trả lời được chấp nhận. –

Các vấn đề liên quan