Użyj elementu textarea
zamiast elementu input
:
<textarea cols="80" rows="1" style="overflow: visible" placeholder=
"blablabla bla lba bla bla bla blabla bla bla bla lba"></textarea>
To daje bardziej spójne, choć nie całkowicie spójny renderingu. Ustawienie overflow: visible
służy do tego, aby ustawić IE jako miejsce na 80 znaków, w przeciwnym razie zmieści się tylko 79, z powodu pionowego paska przewijania.
Dlaczego pojawia się problem z input
:
size="80"
atrybut określa widoczną szerokość pola do „średniej” szerokości 80 znaków. Nie jest to dokładnie zdefiniowane (co "przeciętne"?), A przeglądarki zaimplementują go nawet nielogicznie: użycie size="80"
powoduje nadanie znacznie mniejszej szerokości niż czterokrotność domyślnej szerokości 20 znaków. Tak więc przeglądarka nie jest nawet spójna. Proporcje zależą od czcionki i przeglądarki. (Dzieje się tak w innych przeglądarkach, jak również.)
Jeśli trzeba zachować przy użyciu input
:
Można użyć style="width: 80ch"
, ale nie wszystkie przeglądarki obsługują tej funkcji CSS3, i nie ma gwarancji, że został wdrożony prawidłowo. Jednostka ch
jest z definicji przesunięciem szerokości cyfry zero, "0", która jest w większości czcionek taka sama jak szerokość szerokości cyfr w ogóle. (Np. Firefox prawie poprawnie implementuje to. Niemal, ale nie całkiem.)
Można ustawić czcionkę w elementach <input>
na czcionkę o stałej szerokości. Nie usuwa to problemu, ale powoduje, że szerokości są bliżej określonych szerokości.
samo tutaj http://jsfiddle.net/qyMLQ/ –
Gdyby to była prawda, mogę dodać stylu inline, które nadmiernie jeździć globalny styl, prawda? Ale to nie działa. – Rhubarb
@Rhubarb: Tak, pod warunkiem, że zastąpisz właściwy styl. –