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.

Like this? Follow me ↯

You might also like:

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


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 not working in IE7 and Firefox: <style type="text/css"> INPUT.text { /* text style */ } INPUT.file { /* file style */ } INPUT.button { /* button style */ } </style>
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...

Foundeo Inc.