Styling input based on their type with CSS

March 06, 2006

A few weeks ago I posted how I style forms with CSS. Here's another trick that could be used with that technique.

Suppose your creating a form with a couple text fields and a submit button. Now you want to set the width of the text fields, but you want your submit button to be set to the default size. If you did something like this:

input { width: 200px; }

All input tags would be 200px; we only want input tags with type="text" to be 200px; you can use attribute selectors:

input[type="text"] { width: 200px; }

Attribute selectors are super handy but they don't work in IE6! You may still find them useful, just make sure you test on IE to make sure things still look ok. Just a note to always check your styles work on multiple browsers and resolutions - your visitor may be viewing on Mozilla on a 24" monitor or a Lenovo netbook with Chrome, and you want your site to look good in all cases.

Related Entries

51 people found this page useful, what do you think?


"Attribute selectors are super handy but they don't work in IE6!" That is why CSS has this thing called classes. Designate a class for the text inputs and one for the button inputs.
Tony, I'm aware of classes, but attribute selectors allow you to style specific elements without designating a class. The saved typing is what makes them handy!
Dean Edwards has created a solution for using CSS Selectors in IE6 that he called "IE7" (which isn't the greatest name.) This library also fixes other IE6 issues, such as: * Pure CSS Menus * Complexspiral * Box-Model * Fixed Positioning * Dynamic Pseudo Classes * Rounded Corners * XML * PNG Transparency
you can use attribute selectors:* *which doesn't work for 89%-90% for your potential user-base. Roll on IE7 and automatic update, I say!
grrr... didn't spot the comments on daughters titchy screen... time to upgrade, I say!
This came in super handy. As for Tony, I don't have access to all the code I'm styling. Our forms are generated dynamically from code by a separate dev team, so this is the only option I have for controlling how a group checkboxes are styled.
This works in IE7 and Firefox: <style type="text/css"> INPUT.text { /* text style */ } INPUT.file { /* file style */ } INPUT.button { /* button style */ } </style> I'm under the impression it works under IE6, but not 100% sure as I don't have access to IE6 any more since upgrading.
This not working in IE7 and Firefox: <style type="text/css"> INPUT.text { /* text style */ } INPUT.file { /* file style */ } INPUT.button { /* button style */ } </style>
that styling works. once you add that style to your css, make sure you add the class="button" to the input button.
I am using IE 8.0.6001.18783 I created a style that used your input.text and put the class reference. That worked. However, I did the same (copy paste) to input.button and that did not work. In the html, I used 'class="text"' and that worked. but 'class="button"' did not work. I also added input:button, input#button, input->button and anything else I could think of for future parsing approaches to the CSS file. Help?
Very useful tips indeed. Thanks
Just what I needed! Thanks, Pete.
Create a #registration #form using #HTML5 and #CSS3
This works on all browsers perfectly (even in i.e. 6) you just need to add a jquery

<script language="javascript" src="jquery-1.4.2.js"></script>
<script language="javascript" type="text/javascript">
$('.testclass input[type=button]').css({
'border':'1px solid red',

$('.testclass input[type=text]').css({
'border':'1px solid blue',

<div class="testclass">
<input name="" type="text" />
<textarea name="" cols="" rows=""></textarea>
<input name="" type="button" value="submit" />
Plz do comment...
This not working in IE7 and Firefox
Great tip, thanks for sharing it in this post.

Was exactly what I needed!

Gunther from Brazil

Recent Entries