2012-03-26 11 views
7

Próbowałem ustawienie position:absolute a następnie left, top, right i bottom do stałych wartości w pikselach, ale chyba również ustawić width i height nie mogę zmusić go do prawidłowej pracy na Firefox 11.O użyciu lewo/góra/prawo/dno na bezwzględną umieszczonej textarea

Renderowanie wygląda dobrze na safari/chrome ... ale czy jest to błąd przeglądarki Firefox lub coś, co w rzeczywistości nie jest standardem? Używanie 100% dla width i height jest czasami rozwiązaniem, ale nie wtedy, gdy element nie pokrywa całkowicie kontenera nadrzędnego.

Patrz http://jsfiddle.net/EjS7v/6/

Chrome, no 100% width/height to chrom (a pożądany wynik)

Firefox, width/height to 100% Firefox (szerokość/wysokość do 100%)

Firefox, without width/height Firefox (bez szerokości/wysokości)

Czy istnieją alternatywy dla używania JavaScript do obliczania szerokości i wysokości w czasie wykonywania?

Należy zauważyć, że w tym przykładzie użyłem stałego rozmiaru div jako pojemnika, ale najciekawszym i najbardziej przydatnym przypadkiem jest pojemnik elastyczny.

Odpowiedz

6

W rzeczywistości istnieje prosta alternatywa, użyj prezentacji znaczników, aby zawrzeć tę powierzchnię tekstu, a następnie tylko 100% szerokość wysokość dla samego tekstu.

Rzeczywiście, CSS jest bardzo ograniczony.

+0

Rzeczywiście rozwiązanie było trywialne, nie rozumiem, dlaczego nie myślałem o tym ... dzięki. – 6502

+0

Dobrze. Zrobiłem to źle tak wiele razy, zanim pomyślałem o tym podejściu zamiast ... mojej przyjemności. –

4

To dlatego textarea, w przeciwieństwie do, powiedzmy, div, ma default width and height:

Jeśli element posiada atrybut cols i analizowania wartość tego atrybutu za pomocą reguł w celu analizowania nieujemne liczby całkowite robi” t generuje błąd, wówczas agent użytkownika powinien użyć tego atrybutu jako wskazówki do prezentacji dla właściwości width na elemencie, przy czym wartość ta jest efektywną szerokością tekstową (zdefiniowaną poniżej). W przeciwnym razie agent użytkownika powinien działać tak, jakby miał regułę arkusza stylów na poziomie agenta użytkownika, ustawiającą właściwość width na elemencie na efektywną szerokość tekstu.

Textarea szerokość efektywna elementu textarea jest wielkość x Średnia + sbw gdzie wielkość to szerokość postać elementu, Średnia jest średnią szerokość znaku pierwotnego czcionką element w pikselach CSS i sbw jest szerokością paska przewijania w pikselach CSS. (Właściwość odstępu między literami elementu nie ma wpływu na wynik).

Jeśli element ma atrybut rows, a analiza składniowa wartości tego atrybutu przy użyciu reguł analizowania nieujemnych liczb całkowitych nie powoduje wystąpienia błędu, to użytkownik agent powinien użyć tego atrybutu jako wskazówki wskazującej dla właściwości height na elemencie, której wartością jest efektywna wysokość textarea (zdefiniowana poniżej). W przeciwnym razie agent użytkownika powinien działać tak, jakby miał regułę arkusza stylów na poziomie agenta użytkownika, ustawiającą właściwość height na elemencie na efektywną wysokość tekstu.

textarea efektywna wysokość elementu textarea jest wysokość w pikselach CSS liczby linii określona wysokość znaku elementu, plus wysokość pasek przewijania w CSS pikseli.

+0

Dzięki ... doktorzy wydają się naprawdę jasne. Wygląda na to, że odpowiedź na to, czy można uniknąć pozycjonowania Javascript, to: --( – 6502

+2

. W rzeczywistości, jedynym powodem, dla którego "działa" w Safari/Chrome, jest błąd WebKit: https://bugs.webkit.org/ show_bug.cgi? id = 81863 –

+1

@BorisZbarsky: lub oznacza, że ​​błąd (logiczny) jest w standardowej specyfikacji :-) ... Spodziewałbym się na przykład sposobu ustawienia 'wierszy' i' cols' na '" auto "' lub coś w tym stylu. Element "textarea" wydaje się być całkiem zepsuty z punktu widzenia projektu (w tym strasznego bałaganu na temat soft/hard newlines). – 6502

Powiązane problemy