2011-01-10 16 views
11

Bir jQuery UI aralık kaydırıcısında çalışırken, çoğunlukla kromda hata ayıklanıyordum.jQuery (webkit) ve Firefox arasındaki farkları konumlandırma

$el.css('left');

bana bir yüzdesi olarak sol pozisyon verecekti: 84% ben şöyle kolundan birini sol pozisyonunu kapmak diye aralık sınırı vardır yapmak gerekiyordu. Ancak, Firefox'ta test ettiğimde, değeri piksel olarak döndürüyordu.

Bunu daha önce deneyimleyen var mı? Firebug'daki DOM'a bakarak, Firefox yüzdeye dayalı sol konumlandırmayı tanır ancak bunu bir değer olarak döndürmez. Firefox için bu varsayılan davranış mı? Bu da IE'de aynı mı?

+0

İyi soru. Son zamanlarda, özellik yüzde (veya ems) olarak belirtildiğinde Firefox'ta pikselleri döndüren css ('sol') bulmak için şaşırdım. Sonuçta, her zaman position() 'ı kullanarak piksel değerini alabilirsiniz. Yine de Chrome'da kontrol etmediniz. – harpo

+0

Ya, ben temelde bu işlevsellik ile yapılmış olduğunu düşündüğümde, ekranlardan bir tanesi vurulduğu zaman kendimi şaşırdım. Bir MBP w/o VMWare veya benzeri üzerinde çalışmak, bu yüzden şimdi gerçekten IE için test edemezsiniz. – hellatan

+0

Bu, sorunuzu yanıtlamaz, ancak jQuery tabanlı bir çözüm, her bir tarayıcıda aynı değeri (piksel olarak) döndüren 'position' (http://api.jquery.com/position/) kullanmaktır. – Emmett

cevap

0

En son sürüm 1.4.4'ten itibaren jQuery ile konumlandırma için bilinen herhangi bir farklılık olduğuna inanmıyorum.

1

CSS() işlevi, tarayıcı tarafından rapor edildiği gibi, belirtilen CSS özelliği değerini verir. Sonuç olarak, tarayıcıya özeldir ve bu şekilde uzunluk ve konumlandırma ile uğraşırken kullanılmamalıdır.

+0

olarak ayarlar. Css() işlevi css özelliklerini değiştirmenize veya okumanıza izin verir ve bunlar (her ne kadar) tarayıcı başına farklı şekilde yorumlanır. Tarayıcıdan bağımsız rakamlar ve sonuçlar istiyorsanız position() işlevini kullanın. – Ivanhoe

0

kullanım $el.position().left; yerine :)

+0

Şansınız yoksa aynı sonucu verebilir. (şu anda benim için) – Sascha

0

böyle, doğrudan DOM erişerek bu soruna çalıştı:

$el.get(0).style.left

o FF, Chrome, Safari ve IE9 için% değeri döndürür. (Operada test etmediniz, ama)