Mam 3 elementy div, #left, #center i #right, które chcę ustawić na tej samej linii, która ma określoną szerokość, powiedzmy 300px.Dynamiczna szerokość elementu i precyzja subpiksela IE9
#left i #right mają małą zawartość, powiedzmy 50px każda, i wyświetlam je w całości.
#center ma dużo treści, powiedzmy 400px, i chcę wyświetlić jak najwięcej w pozostałym miejscu na linii. W tym celu zawarłem treść #center w #inner.
Przepłynąłem #left i #center na lewo i # prawo na prawo.
<div id="left">
LEFT
</div>
<div id="center">
<div id="inner">
LONG CONTENT ...
</div>
</div>
<div id="right">
RIGHT
</div>
Pytanie 1: Czy istnieje sposób dokonywania #center div podjęcia wszelkich dostępnych pozostałej przestrzeni na linii poprzez CSS (w naszym przykładzie #center musi być 200px szerokości - szerokość linii, 300px, minus szerokość #left i #right, każde 50px)?
Pytanie 2: Nie znalazłem rozwiązania za pomocą CSS i użyłem jQuery do dynamicznego obliczenia pozostałej dostępnej przestrzeni. Działa to dobrze we wszystkich przeglądarkach oprócz IE9.
Problem z IE9 polega na tym, że ma precyzję subpiksela, a jQuery zwraca tylko wartości całkowite dla wymiarów elementów.
Oto przykład: IE9 widzi, że #left ma szerokość 50,5px, podczas gdy jQuery widzi to jako 50px. Ta różnica powoduje podział układu w IE9.
Jeśli muszę obliczyć dostępne miejsce za pomocą JavaScript, co mogę zrobić, aby rozwiązać ten problem z IE9?
Nie jestem pewien, czy to będzie działać, ale może po prostu podłoga wartość zwracana i uczynić 50,5 iść do 50? Jeśli wartości są zawsze większe, to zadziała. Jeśli było to 49,5, to będzie krótki piksel, ale to przynajmniej nie sprawi, że twoje treści nie będą pasować. –
Nie ma sposobu, aby zmienić wartość pływającą używaną w IE9 w jej układzie. Kiedy wywołuję szerokość elementu za pomocą jQuery w IE9, zawsze zwraca on liczbę całkowitą 50px. Ale na wewnętrznym wyświetlaczu IE9 używa pływaków, 50.5px. Wiem o tym, ponieważ zajrzałem do narzędzi programistycznych IE9, a dla wymiarów elementów wyświetlają wartości zmiennoprzecinkowe. – jsgroove
Więc kiedy ustawisz szerokość na 50px, ie9 ustawia ją na 50.5px? To dziwne ... Postarałem się tak przedtem na poziomie piksela i nigdy nie miałem problemów. Wydaje się dziwne. Powodzenia, przepraszam, nie mogłem pomóc! –