'Lo,
Net als ik neem aan vrijwel iedereen die wel een web devt gebruik ik geregeld inputelementen om een pagina van invoermogelijkheden te verzien. Wat het stylen van deze elemente betreft loop ik echter steeds tegen een nare eigenschap van deze objecten aan.
Het gebeurt mij wel eens dat een bepaald invoerelement het mooist zou zijn als deze uitgevuld over de beschikbare breedte zou staan. Daar zit echter het nare: dat willen ze niet. Een paar ideeen:
Helaas werkt geen van deze oplossingen, gezien er met een breedte van 100% geen ruimte overblijft voor borders en margins/paddings, gezien het boxmodel. Firefox schijnt een boxmodel hack in css te hebben, maar dat is natuurlijk sowieso niet helemaal de bedoeling. Oplossing nr. 2 werkt niet omdat een inputelement blijkbaar niet doet aan een 'display'...
De enige oplossing die voor mij goed werkt is de volgende:
Op deze manier haal je het probleem weg bij het input element, en lijkt het net alsof het inputelement zelf een border heeft en netjes block-wise scaled...
Dan mij vraag: zijn er mensen die hier andere / betere / elegantere oplossing voor hebben gevonden en wat is jullie ervaring hiermee.
Net als ik neem aan vrijwel iedereen die wel een web devt gebruik ik geregeld inputelementen om een pagina van invoermogelijkheden te verzien. Wat het stylen van deze elemente betreft loop ik echter steeds tegen een nare eigenschap van deze objecten aan.
Het gebeurt mij wel eens dat een bepaald invoerelement het mooist zou zijn als deze uitgevuld over de beschikbare breedte zou staan. Daar zit echter het nare: dat willen ze niet. Een paar ideeen:
Cascading Stylesheet:
1
2
3
4
5
6
7
8
9
| 1: input { width: 100%; } 2: input { display: block; } |
Helaas werkt geen van deze oplossingen, gezien er met een breedte van 100% geen ruimte overblijft voor borders en margins/paddings, gezien het boxmodel. Firefox schijnt een boxmodel hack in css te hebben, maar dat is natuurlijk sowieso niet helemaal de bedoeling. Oplossing nr. 2 werkt niet omdat een inputelement blijkbaar niet doet aan een 'display'...
De enige oplossing die voor mij goed werkt is de volgende:
HTML:
1
2
3
| <div class="wrapper"> <input type="text" class="fill" name="some-input" /> </div> |
Cascading Stylesheet:
1
2
3
4
5
6
7
8
9
10
| .wrapper { padding: 1px 2px; border: 1px #000 solid; } input.fill { width: 100%; margin: 0; padding: 0; border: 0; } |
Op deze manier haal je het probleem weg bij het input element, en lijkt het net alsof het inputelement zelf een border heeft en netjes block-wise scaled...
Dan mij vraag: zijn er mensen die hier andere / betere / elegantere oplossing voor hebben gevonden en wat is jullie ervaring hiermee.
[ Voor 3% gewijzigd door akaIDIOT op 05-07-2007 17:39 ]
*stu!ter* *boink*