2013-06-03 22 views
5

Với đánh dấu và css bên dưới, tôi đã cố gắng để có được lề trái được tính toán của trình bao.lấy lề được tính toán tự động trong firefox với jQuery

<section class="page-title"> 
     <div class="shell"> 
     <h5 class="title">Welcome!</h5> 
     </div> 
    </section> 

.shell { 
    zoom: 1; 
    max-width: 1000px; 
    margin-left: auto; 
    margin-right: auto; 
    padding-left: 16px; 
    padding-right: 16px; 
} 

Sử dụng

parseInt($('.shell').css('marginLeft')) 

nó hoạt động trong Chrome, Safari, IE9 nhưng đáng ngạc nhiên không hoạt động trong Firefox. Đã thử cách tiếp cận khác:

($('.shell').outerWidth(true) - $('.shell').outerWidth())/2 

Cũng hoạt động tốt nhưng Firefox. Vì vậy, tôi đoán firefox không hỗ trợ để có được css không xác định với jQuery? Một cách thẳng tiến để làm việc với nó là:

($('.page-title').width() - $('.shell').outerWidth())/2 

Nhưng tôi tự hỏi nếu có cách nào tốt hơn.

+0

Tôi gặp vấn đề tương tự với Firefox v21 – Hengjie

+0

Tôi gặp vấn đề tương tự trong Firefox v37.0.1. – phylae

Trả lời

2

Khi bạn nói nó không hoạt động, bạn có nhận được lỗi (trong bảng điều khiển) hay không trả về 0? Trả lại 0 cho cài đặt tự động, rõ ràng là một vấn đề với các trình duyệt khác nhau.

Bạn có thể sử dụng thư viện jSizes nhẹ để trả về tất cả chỉ số tính bằng pixel. Điều này sẽ giúp bạn tiết kiệm được việc phải xung quanh với outerWidth, v.v.

+0

Ý tôi là, nó trả về 0 –

+0

trả về lib này 0 khi 'margin: auto'. Có cách nào để có được lợi nhuận trong trường hợp này? –

+0

jQuery (và có lẽ vani JS) cũng trả về 0px cho 'tự động'. Tôi không nghĩ rằng bạn có thể có được giá trị 'tự động' ** đáng tin cậy và nhất quán ** qua trình duyệt. tự động có nghĩa là "để cho trình duyệt quyết định" và đó là giá trị dựa trên trình duyệt mà bạn đang đọc. –

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