Có thể đặt thanh cuộn dọc DIV ở bên trái của div bằng css không? những gì về jscript?DIV Thanh cuộn dọc trên bên trái
Trả lời
Bạn có thể thêm một giả cuộn bất cứ nơi nào bạn muốn với JQuery và plugin này: JScrollPane
Được rồi, vì vậy, tôi đã viết một plugin jQuery để cung cấp cho bạn một thanh cuộn bên trái hoàn toàn bản địa nhìn.
Dưới đây là cách hoạt động:
Tiêm một bên
div
bên cửa sổ để cho phép tính toán chiều rộng nội dung (content_width
). Sau đó, bằng cách sử dụng này, chiều rộng thanh cuộn gốc có thể được tính toán:scrollbar_width = parent_width - content_width - horizontal_padding
.Tạo hai khác nhau
divs
bên trong ngăn, cả hai đều chứa đầy nội dung.Mục đích của một người là "người tạo". Nó được sử dụng chỉ cho thanh cuộn. Sử dụng một lề trái tiêu cực, các plugin kéo nó trái để chỉ thanh cuộn là trong xem (nội dung của
div
này được cắt bớt ở cạnh).div
khác được sử dụng để thực sự chứa nội dung cuộn có thể nhìn thấy.
Bây giờ, đã đến lúc kết hợp cả hai. Mỗi 50ms (
window.setInterval
), giá trị chênh lệchscrollTop
từ "poser"div
được áp dụng cho nội dung có thể nhìn thấy, cuộndiv
. Vì vậy, khi bạn cuộn lên hoặc xuống bằng thanh cuộn trên bên trái, độ lệch cuộn được áp dụng trở lại trêndiv
với nội dung hiển thị.
lời giải thích này có lẽ hút và có thực sự là một khá hơn một chút để nó mà tôi không mô tả, nhưng, không có thêm ado, ở đây nó là:
$.fn.leftScrollbar = function(){
var items = $(this);
$(function(){
items.each(function(){
var e = $(this);
var content = e.html();
var ie = !jQuery.support.boxModel;
var w = e[ie?'innerWidth':'width'](), h = e[ie?'innerHeight':'height']();
//calculate paddings
var pad = {};
$(['top', 'right', 'bottom', 'left']).each(function(i, side){
pad[side] = parseInt(e.css('padding-' + side).replace('px',''));
});
//detect scrollbar width
var xfill = $('<div>').css({margin:0, padding:0, height:'1px'});
e.append(xfill);
var contentWidth = xfill.width();
var scrollerWidth = e.innerWidth() - contentWidth - pad.left - pad.right;
e.html('').css({overflow:'hidden'});
e.css('padding', '0');
var poserHeight = h - pad.top - pad.bottom;
var poser = $('<div>')
.html('<div style="visibility:hidden">'+content+'</div>')
.css({
marginLeft: -w+scrollerWidth-(ie?0:pad.left*2),
overflow: 'auto'
})
.height(poserHeight+(ie?pad.top+pad.bottom:0))
.width(w);
var pane = $('<div>').html(content).css({
width: w-scrollerWidth-(ie?0:pad.right+pad.left),
height: h-(ie?0:pad.bottom+pad.top),
overflow: 'hidden',
marginTop: -poserHeight-pad.top*2,
marginLeft: scrollerWidth
});
$(['top', 'right', 'bottom', 'left']).each(function(i, side){
poser.css('padding-'+side, pad[side]);
pane.css('padding-'+side, pad[side]);
});
e.append(poser).append(pane);
var hRatio = (pane.innerHeight()+pad.bottom)/poser.innerHeight();
window.setInterval(function(){
pane.scrollTop(poser.scrollTop()*hRatio);
}, 50);
});
});
};
Khi bạn đã bao gồm jQuery và plugin này trong trang, áp dụng thanh cuộn bên trái:
$('#scrollme').leftScrollbar();
Thay #scrollme
với bộ chọn CSS để các yếu tố (s) bạn muốn áp dụng thanh cuộn bên trái để.
(và, rõ ràng, điều này làm giảm độc đáo)
Tôi sẽ đưa ra một bản demo trong một ngày hoặc lâu hơn ... làm việc trên blog của tôi lên. – brianreavis
thay vì một setInterval, cố gắng thêm một trình lắng nghe sự kiện cho DOMAttrModified (hoặc sự kiện onpropertychange cho IE) – Peter
Liên kết ví dụ đã chết. –
Tôi đã có một trường hợp sử dụng đơn giản để lựa chọn một giải pháp css đơn giản:
<div style="direction: rtl; height: 250px; overflow: scroll;">
<div style="direction: ltr; padding: 3px;">
Content goes here
</div>
</div>
Rực rỡ và đơn giản. +1 –
Tuyệt vời nhưng có vẻ như không hoạt động trên Safari (thử nghiệm nó trên Safari 5.1.7 ngay bây giờ và thanh cuộn ở bên phải). –
Khá thông minh. Đã không làm việc trên trường hợp cụ thể của tôi, nhưng rất hợp lý. Tôi thích các giải pháp đơn giản. –
- 1. Hiển thị thanh cuộn dọc Div
- 2. Cách chỉ có một thanh cuộn dọc trên div
- 3. Làm thế nào để định vị thanh cuộn div ở phía bên tay trái?
- 4. Tiêu đề div vẫn ở trên cùng, div cuộn dọc bên dưới với thanh cuộn chỉ được đính kèm với div
- 5. jqGrid thanh cuộn dọc
- 6. ItemsControl thiếu thanh cuộn dọc
- 7. Dọc Scrollbar dẫn đến thanh cuộn ngang
- 8. Tạo kiểu thanh cuộn CSS3 trên div
- 9. DIV với các góc tròn và thanh cuộn bên trong
- 10. Đặt thanh cuộn dọc hiển thị
- 11. Thanh cuộn dọc và ngang trên tiện ích Tkinter
- 12. Thanh cuộn dọc hiển thị CSS trên thẻ trước
- 13. Cuộn bên trong thanh bên cố định
- 14. iframe 100% height gây ra thanh cuộn dọc
- 15. Vsplit làm thanh cuộn dọc được hiển thị (gvim)
- 16. Có thể dừng thanh cuộn dọc từ đẩy cột/tiêu đề DataGrid sang trái không?
- 17. Thanh cuộn dọc với cửa sổ.open
- 18. Chrome hiển thị thanh cuộn dọc ở bên phải khi sử dụng hướng: rtl
- 19. Div với thanh cuộn bên trong div có vị trí: cố định
- 20. JList - sử dụng thanh cuộn dọc thay vì nằm ngang với hướng cuộn dọc?
- 21. Android :: Webview xóa thanh cuộn cho DIV
- 22. HTML: Cách tạo DIV chỉ với các thanh cuộn dọc cho đoạn văn dài?
- 23. Độ mờ Div dựa trên vị trí thanh cuộn
- 24. Tại sao có một thanh cuộn dọc trên svg của tôi ở mức 100%?
- 25. nút bên trái/bên phải bên trong div
- 26. Đặt chiều cao 100% thành div gây ra thanh cuộn dọc
- 27. Chiều cao hộp thoại Jquery và thanh cuộn dọc
- 28. Float: div nghỉ bên trái bị hỏng?
- 29. CSS Div 100% với phao: bên trái
- 30. Inner trái nổi div của không mở rộng div container theo chiều dọc
dân (sử dụng tài liệu LTR anyway) mong đợi thanh cuộn bên phải. Bạn thực sự nên để chúng ở đó. (Và nếu bạn đang xử lý ngôn ngữ RTL, thì thanh cuộn sẽ ở bên trái, trừ khi bạn đã đánh dấu ngôn ngữ và hướng văn bản sai) – Quentin
@Quentin: Chrome luôn hiển thị thanh cuộn dọc ở phía bên phải . – CSharper