2012-01-19 46 views
10

Tôi đang sử dụng thanh trượt jQuery để điều chỉnh phần đệm của một DIV chứa văn bản đoạn. Khi tôi tăng phần đệm trên tất cả các mặt bằng nhau, nó sẽ buộc các đoạn kèm theo vào một cột hẹp hơn, ở giữa trang.Hiển thị CSS jQuery - hoạt động trong Firefox, không phải trong Chrome

Tính năng này hoạt động trong Firefox, nhưng trong Chrome chiều rộng đoạn vẫn không đổi (tức là chúng không bị thu hẹp khi đệm của DIV đẩy vào chúng), do đó hãy đẩy bố cục sang phải.

Tôi đã tạo lại sự cố tại đây: jsfiddle.net/ms3Jd. Bạn có thể dùng thử trong Chrome và Firefox để thấy sự khác biệt.

Bất kỳ ý tưởng nào về cách buộc Chrome làm mới các đoạn được đính kèm?

+2

Dường như lỗi WebKit đối với tôi. – thirtydot

+0

Có thể - nhưng tôi biết có nhiều cách để buộc (hoặc lừa) Chrome làm mới/vẽ lại/đánh giá lại các yếu tố trang, nhưng không biết cách thực hiện. Ý tưởng nào? – Mateo

Trả lời

13

Tôi biết có nhiều cách để buộc (hoặc lừa) Chrome để refresh/vẽ lại/recalcuate các yếu tố trang, nhưng không biết cách thực hiện . Ý tưởng nào?

Taken từ đây: How can I force WebKit to redraw/repaint to propagate style changes?

sel.style.display='none'; 
sel.offsetHeight; // no need to store this anywhere, the reference is enough 
sel.style.display='block'; 

Tôi nhanh chóng áp dụng nó ở đây, nhưng bạn nên làm cho nó thành một chức năng: http://jsfiddle.net/thirtydot/ms3Jd/5/

+2

Phiên bản plugin jQuery: http://jsfiddle.net/thirtydot/ms3Jd/7/. Có thể là quá mức cần thiết .. – thirtydot

+0

Nó hoạt động - cảm ơn bạn (và những người trả lời khác) - bạn là một thiên tài! – Mateo

0

Bạn có thể thêm tràn và nổi tính:

#preview > div { 
    padding: 5%; 
    overflow: auto; 
    float: left; 
} 
+0

Hmmm ... đó là tiến bộ, và được chúng tôi một nửa cách đó. Cảm ơn. Tôi đã thử trong jsfiddle - khi chúng ta tăng phần đệm, các đoạn DO tính toán lại. Nhưng nếu chúng ta sau đó giảm padding một lần nữa, họ không mở rộng một lần nữa. Bạn có thể cung cấp thêm sự tinh tế nào không? – Mateo

3

Tôi đang sử dụng fadeTo để buộc chrome để làm mới.
Không chắc chắn nhưng tôi đoán đó là animate trên fadeTo có mẹo
thử dòng đó trên jsfiddle.

$('#preview > div').css('padding', ui.value + '%').children('p').fadeTo(1, .99).fadeTo(1, 1); 
Các vấn đề liên quan