2011-09-11 13 views
116

Jak wycentrować wyrównanie elementu wejściowego pola tekstowego w formularzu HTML?Środkowy znacznik pola wprowadzania tekstu w polu HTML

używam następujący kod, ale to nie działa:

CSS ->

input.placeholder { 
    text-align: center; 
} 
.emailField { 
    top:413px; 
    right:290px; 
    width: 355px; 
    height: 30px; 
    position: absolute; 
    border: none; 
    font-size: 17; 
    text-align: center; 
} 

HTML ->

<form action="" method="POST"> 
    <input type="text" class="emailField" placeholder="[email protected]" style="text-align: center" name="email" /> 
    <!<input type="submit" value="submit" /> 
</form> 
+0

można pokazać swoją HTML? – Will

+0

Naprawdę nie jest to odpowiedź, ale jQuery Mobile robi to, więc możesz chcieć zobaczyć, jak to osiągnąć. – Evans

+0

Dla mnie twój kod działa, gdy pozbędziesz się bit 'input.placeholder'. Dopasowanie tekstu wewnątrz wejścia do środka wyrównuje również symbol zastępczy. – IamGuest

Odpowiedz

219

Jeśli chcesz zmienić tylko styl symbol zastępczy

::-webkit-input-placeholder { 
    text-align: center; 
} 

:-moz-placeholder { /* Firefox 18- */ 
    text-align: center; 
} 

::-moz-placeholder { /* Firefox 19+ */ 
    text-align: center; 
} 

:-ms-input-placeholder { 
    text-align: center; 
} 
+3

Działa to dobrze dla większości pól wejściowych, ale nie dla daty typu. Czy wiesz, jak sprawić, by działało na czas? –

70
input{ 
    text-align:center; 
} 

jest wszystko, czego potrzebujemy.

Working example w FF6. Ta metoda nie jest zgodna z wieloma przeglądarkami.

Twój poprzedni CSS próbował wyśrodkować tekst elementu wejściowego, który miał klasę "placeholder".

+3

Nie chcę wyśrodkować symbolu zastępczego ani tekstu wprowadzonego do pola –

+1

Tak. Oto, co robi ten przykład. Symbol zastępczy _jest_ tekst w polu. –

+2

to nie działa w przykładzie. W tym przykładzie symbol zastępczy jest wyrównany do lewej. –

6

Element zastępczy HTML5 może być stylizowany dla tych przeglądarek, które akceptują ten element, ale w różny sposób, co można zobaczyć tutaj: http://davidwalsh.name/html5-placeholder-css.

Ale nie wierzę, że text-align będzie interpretowany przez przeglądarki. Przynajmniej w Chrome ten atrybut jest ignorowany. Ale zawsze możesz zmienić inne rzeczy, takie jak color, font-size, font-family itd. Sugeruję, abyś przemyślał swój projekt, czy to możliwe, aby usunąć to centralne zachowanie.

EDIT

Jeśli naprawdę chcesz ten tekst wyśrodkowany, zawsze można użyć kodu jQuery lub wtyczki do symulacji zachowania zastępczego. Oto jego przykład: http://www.hagenburger.net/BLOG/HTML5-Input-Placeholder-Fix-With-jQuery.html.

ten sposób styl będzie działać:

input.placeholder { 
    text-align: center; 
} 
6

to działa dobrze dla moich potrzeb, należy sprawdzić kompatybilność przeglądarce, Nie miałem problemów, ponieważ nie dbałem o kompatybilność wsteczną.

.inputclass::-webkit-input-placeholder { 
text-align: center; 
} 
.inputclass:-moz-placeholder { /* Firefox 18- */ 
text-align: center; 
} 
.inputclass::-moz-placeholder { /* Firefox 19+ */ 
text-align: center; 
} 
.inputclass:-ms-input-placeholder { 
text-align: center; 
} 
+1

Czy ta odpowiedź nie jest bezpośrednią kopią innej odpowiedzi? – Anwar

+1

@Awarwar nah, Właśnie doświadczasz Déjà vu – konzo

2

Można zrobić tak:

<center> 
    <form action="" method="POST"> 
    <input type="text" class="emailField" placeholder="[email protected]" style="text-align: center" name="email" /> 
    <input type="submit" value="submit" /> 
</form> 
    </center> 

Working CodePen here

+0

Tylko to działa dla mnie. Być może style dodane w HTML mają większy priorytet lub nadpisują wszystkie inne style. – Gokul

0
::-webkit-input-placeholder { 
font-size: 14px; 
color: #d0cdfa; 
text-transform: uppercase; 
text-transform: uppercase; 
text-align: center; 
font-weight: bold; 
} 
:-moz-placeholder { 
font-size:14px; 
color: #d0cdfa; 
text-transform: uppercase; 
text-align: center; 
font-weight: bold; 
} 
::-moz-placeholder { 
font-size: 14px; 
color: #d0cdfa; 
text-transform: uppercase; 
text-align: center; 
font-weight: bold; 
} 
:-ms-input-placeholder { 
font-size: 14px; 
color: #d0cdfa; 
text-transform: uppercase; 
text-align: center; 
font-weight: bold; 
} 
0

Możesz spróbować tak:

input[placeholder] { 
    text-align: center; 
} 
Powiązane problemy