Esiste un modo semplice per rendere l'area di testo html e il testo del tipo di input ugualmente larghi?
Domanda
Esiste un modo semplice per ottenere un'area di testo HTML e un tipo di input="testo" da visualizzare con (approssimativamente) uguale larghezza (in pixel), che funzioni in diversi browser?
Una soluzione CSS/HTML sarebbe brillante.Preferirei non dover usare Javascript.
Grazie /Erik
Soluzione
Dovresti essere in grado di usarlo
.mywidth {
width: 100px;
}
<input class="mywidth">
<textarea class="mywidth"></textarea>
Altri suggerimenti
Per rispondere alla prima domanda (anche se è stata data risposta alla morte):Una larghezza CSS è ciò di cui hai bisogno.
Ma volevo rispondere La domanda di Caio nelle risposte.Gaius, il tuo problema è che stai impostando la larghezza in em.Questa è una buona idea da fare, ma devi ricordare che gli em si basano sulla dimensione del carattere.Per impostazione predefinita, un'area di input e un'area di testo hanno facce e dimensioni di carattere diverse.Pertanto, quando imposti la larghezza su 35em, l'area di input utilizza la larghezza del suo carattere e l'area di testo utilizza la larghezza del suo carattere.Il carattere predefinito dell'area di testo è più piccolo, pertanto la casella di testo è più piccola.Imposta la larghezza in pixel o punti oppure assicurati che le caselle di input e le aree di testo abbiano lo stesso aspetto e dimensione del carattere:
.mywidth {
width: 35em;
font-family: Verdana;
font-size: 1em;
}
<input type="text" class="mywidth"/><br/>
<textarea class="mywidth"></textarea>
Spero che aiuti.
Qualcun altro lo ha menzionato e poi lo ha cancellato.Se vuoi dare uno stile a tutte le aree di testo e agli input di testo allo stesso modo senza classi, usa il seguente CSS (non funziona in IE6):
input[type=text], textarea { width: 80%; }
Questa è una domanda CSS:la larghezza include le larghezze del bordo e del riempimento, che hanno valori predefiniti diversi per INPUT e TEXTAREA in diversi browser, quindi rendi uguali anche quelli:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>width</title>
<style type="text/css">
textarea, input { padding:2px; border:2px inset #ccc; width:20em; }
</style>
</head>
<body>
<p><input/><br/><textarea></textarea></p>
</body>
</html>
Questo è descritto nel Dimensioni della scatola sezione delle specifiche CSS, che dice:
La larghezza della casella è data dalla somma dei margini sinistro e destro, del bordo e del riempimento e dalla larghezza del contenuto.
Usa CSS3 per far sì che la casella di testo e l'input funzionino allo stesso modo.Vedere jsFiddle.
.textarea, .textbox {
width: 200px;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
Si C'è.Prova a fare qualcosa del genere:
<textarea style="width:80%"> </textarea>
<input type="text" style="width:80%" />
Entrambi dovrebbero corrispondere alla stessa dimensione.Puoi farlo con dimensioni assolute (px), dimensioni relative (em) o dimensioni percentuali.
Solo una nota: la larghezza è sempre influenzata da qualcosa che accade sul lato client: PHP non può effettuare questo genere di cose.
Impostare una classe comune sugli elementi e impostare una larghezza nei CSS è la soluzione più pulita.
Utilizza una classe CSS per la larghezza, quindi posiziona i tuoi elementi in DIV HTML, DIV con la classe menzionata.
In questo modo, il controllo generale del layout dovrebbe essere migliore.
Come accennato in Casella di testo HTML e larghezza del menu a discesa non uguali con XHTML 1.0 strict dipende anche dal tuo doctype.Ho notato che quando si utilizza XHTML 1.0 strict, la differenza di larghezza appare effettivamente.
input[type="text"] { width: 60%; }
input[type="email"] { width: 60%; }
textarea { width: 60%; }
textarea { height: 40%; }
Al giorno d'oggi, se usi bootstrap, dai semplicemente ai tuoi campi di input il file form-control
classe.Qualcosa di simile a:
<label for="display-name">Display name</label>
<input type="text" class="form-control" name="displayname" placeholder="">
<label for="about-me">About me</label>
<textarea class="form-control" rows="5" id="about-me" name="aboutMe"></textarea>
Puoi anche usare i seguenti CSS:
.mywidth{
width:100px;
}
textarea{
width:100px;
}
HTML:
<input class="mywidth" >
<textarea></textarea>