This site is mobile accessible. Press the "Tap Here" button to use a smaller font-size.
Smartphone icons created by Freepik - Flaticon
The look of an HTML form can be greatly improved with CSS
Use the width property to determine the width of the input field:
input { width: 65%; }
The example above applies to all <input> elements. If you only want to style a specific input type, you can use attribute selectors:
Use the padding property to add space inside the text field.
Tip: When you have many inputs after each other, you might also want to add some margin, to add more space outside of them:
input[type=text] { width: 100%; padding: 12px 20px; margin: 8px 0; box-sizing: border-box; }
Note that we have set the
Read more about the box-sizing property in our CSS Box Sizing chapter.
Use the
property to change the border size and color, and use the property to add rounded corners:input[type=text] { border: 2px solid red; border-radius: 4px; }
If you only want a bottom border, use the
property:input[type=text] { border: none; border-bottom: 2px solid red; }
Use the
property to add a background color to the input, and the property to change the text color:input[type=text] { background-color: #3CBC8D; color: white; }
By default, some browsers will add a blue outline around the input when it gets focus
(clicked on). You can remove this behavior by adding
Use the selector to do something with the
input field when it gets focus:
input[type=text]:focus { background-color: lightblue; }
input[type=text]:focus { border: 3px solid #555; }
If you want an icon inside the input, use the
property and position it with the property. Also notice that we add a large left padding to reserve the space of the icon:input[type=text] { background-color: white; background-image: url('searchicon.png'); background-position: 10px 10px; background-repeat: no-repeat; padding-left: 40px; }
In this example we use the CSS
property to animate the width of the search input when it gets focus. You will learn more about the property later, in our CSS Transitions chapter.input[type=text] { transition: width 0.4s ease-in-out; } input[type=text]:focus { width: 100%; }
Tip: Use the
property to prevent textareas from being resized (disable the "grabber" in the bottom right corner):textarea { width: 100%; height: 150px; padding: 12px 20px; box-sizing: border-box; border: 2px solid #ccc; border-radius: 4px; background-color: #f8f8f8; resize: none; }
select { width: 100%; padding: 16px 20px; border: none; border-radius: 4px; background-color: #f1f1f1; }
input[type=button], input[type=submit], input[type=reset] { background-color: #4CAF50; border: none; color: white; padding: 16px 32px; text-decoration: none; margin: 4px 2px; cursor: pointer; } /* Tip: use width: 100% for full-width buttons */
Resize the browser window to see the effect. When the screen is less than 600px wide, make the two columns stack on top of each other instead of next to each other.
Advanced: The following example uses media queries to create a responsive form. You will learn more about this in a later chapter.
<style> * { box-sizing: border-box; } input[type=text], select, textarea { width: 100%; padding: 12px; border: 1px solid #ccc; border-radius: 4px; resize: vertical; } label { padding: 12px 12px 12px 0; display: inline-block; } input[type=submit] { background-color: #04AA6D; color: white; padding: 12px 20px; border: none; border-radius: 4px; cursor: pointer; float: right; } input[type=submit]:hover { background-color: #45a049; } .container { border-radius: 5px; background-color: #f2f2f2; padding: 20px; } .col-25 { float: left; width: 25%; margin-top: 6px; } .col-75 { float: left; width: 75%; margin-top: 6px; } /* Clear floats after the columns */ .row::after { content: ""; display: table; clear: both; } /* Responsive layout - when the screen is less than 600px wide, make the two columns stack on top of each other instead of next to each other */ @media screen and (max-width: 600px) { .col-25, .col-75, input[type=submit] { width: 100%; margin-top: 0; } } </style>
Property | Description |
---|---|
content | Used with the | and pseudo-elements, to insert generated content
counter-increment | Increments one or more counter values |
counter-reset | Creates or resets one or more counters |