2013-12-16 20 views
11

enter image description herezastępczy wejście line-height problem

Jaki jest problem?

Istnieje pole wprowadzania o wysokości 36 pikseli, jak pokazano na powyższym obrazku. W IE10 symbol zastępczy nie jest środkowo w pionie.

+0

Czy możesz przesłać css, który dotyczy danych wejściowych? Trudno zobaczyć, co może być przyczyną tego bez kodu. – Advocation

+0

Jeśli używasz linii o wysokości: Spróbuj dodać "vertical-align: middle" do tekstu – RononDex

+1

Nie potrzebujesz 'line-height', udostępnij pełny kod http://jsfiddle.net/VNrsQ/ –

Odpowiedz

18

Dla wszystkich wejść tylko dać

line-height:normal; 

zajmie normalne line-height i będzie działać poprawnie we wszystkich przeglądarkach.

+2

Zaskakująco działa jak wdzięk –

+1

Dlaczego więc normalność nie jest standardem, wspaniała odpowiedź! Pracował jak urok. –

-1

spróbuje użyć tego:

vertical-align:middle; 
+0

Próbowałem tego, jednak nie zadziałało. – Tushar

+0

@downvoters co jest nie tak? –

-1

Rozwiązanie 1:
wejść używanie bez zastępczy:

<input type="text" class="generalInput" value="Topic" onBlur="javascript:if(this.value==''){this.value=this.defaultValue; strechInput(this.id , 'c');}" onFocus="javascript:if(this.value==this.defaultValue){this.value=''; strechInput(this.id , 's');}">


Rozwiązanie 2:

wykorzystanie ten skrypt, aby dodać oddzielne css dla każdej przeglądarki

var browsers = ['Firefox' , 'Safari'];//and so on 
    var browser = 'unknown'; 
    for(var i = 0 ; i < browsers.length ; i++) 
    { 
     if(window.navigator.userAgent.indexOf(browsers[i]) != -1) 
      browser = browsers[i]; 
    } 
    var head = document.getElementsByTagName("head"); 
    var css = document.createElement("link"); 
    css.setAttribute('href' , './' + browser.toLowerCase() + '.css'); 
    css.setAttribute('rel' , 'stylesheet'); 
    (head[0]).appendChild(css); 



Rozwiązanie 3:
użycie html komentuje

<!--[if IE]> 
    <link rel="stylesheet" href="./ie.css"> 
<![ENDIF]--> 
+0

Dziękuję za odpowiedź, jednak miałem problem z wyrównaniem pionowym elementu zastępczego, myślę, że udostępniłeś powyższą odpowiedź jako symbol zastępczy. – Tushar

+0

@Tushar tak, trochę dobrze, ale po prostu umieściłem to dla innych potrzeb i więcej informacji. – Soosh

0

Można użyć waterwark js, aby rozwiązać ten problem.

http://jsfiddle.net/maxim75/yJuF3/

Wyjazd skrzypce.

<input type="text" id="Text1" /> 
+0

Wystąpił problem z wyrównaniem pionowym elementu zastępczego, myślę, że udostępniłeś powyższe demo jako obiekt zastępczy. – Tushar

+0

Tak, samo dodanie obiektu zastępczego w tagu wejściowym nie gwarantuje perfekcyjnego wyrównania go w każdej przeglądarce. Możesz więc wybrać rozwiązanie znaku wodnego JS, jeśli chcesz. – Anup

0

Dla każdego, kto przyjeżdża do tego późno - Znalazłem rozwiązanie, które pracowały w Twitter Bootstrap (3.1), a także kilka innych testów wpadłem.

Wystarczy dodać do elementu wejściowego:

height: inherit; 
vertical-align: middle; 
1

zwykle ustawić wysokość i skład wysokość do wejścia [type = tekst] odziedziczyć tych właściwości :: zastępczy.

height: inherit; 
line-height: inherit; 
0

Rozwiązanie:

stosowana sama linia 36 px wysokości na wejście [type = "text"].

Efekt uboczny:

Przed podaniem line-height: 36 px to działa dobrze we wszystkich przeglądarce.Jak stosować 36 px line-height do wejścia [type = "text"], poniżej jest to, co wydarzyło się w Safari:

enter image description here

drugie rozwiązanie:

Zastosuj line-height z IE Hack . To jest następujące:

input[type="text"] { 
    line-height: 36px\9; // CSS Hack only for IE. 
}