Easy-to-follow video tutorials help you learn software, creative, and business skills.Become a member
One of the challenges in building elegant forms is trying to create the same cross-browser experience across multiple browsers. Using an array of advanced selectors, you can give users of DOM- compliant browsers a richer experience without changing your formal style in older browsers. So in this exercise, we'll use attribute selectors and the focus-pseudo class to finish styling our form. If you're following along in exercise files with this, I'm on the contact.htm file and we have our contact_secondary.css file opened as well. Let's switch to the cascading style sheets file and if you scroll up into our form styles, you're going to find there are two styles up here that have been commented out.
These aren't really advanced selectors, but the advanced selectors build off of them, so I'm going to highlight them and Dreamweaver gives us again that wonderful little feature over here on the Code toolbar. So if you hover over the Remove Comment icon, when you click it and just like that, they're both uncommented out, so I love that feature in Dreamweaver. Let's scroll down to the bottom of our styles and we're just going to add some additional styling right down here. So the last line, let's go ahead and type in a comment. Now I really want to create a section of styles down here so that people know that these styles are more enhancing styles than purely functional styles.
So we'll indicate that in a comment. Type in these styles use attribute selectors and the focus pseudo-class selector to style form elements in DOM-compliant browsers. Other browsers such as IE6 will ignore these styles and render the default.
Now, I know that seems like a lot of typing, but that's really good information to pass along to anybody that might be appraising your style sheets, any team members that might be working on this with you, and really even yourself because six months or later you may wonder, hey what are all these styles doing down here on the bottom? Now before you write these styles, I want to save this style sheet, move back to the contact.htm example and preview that in our browser, see what the base level styles are going to look like. So as I scroll down, I can see that our fieldset tags now have a little bit of space between them, our legends are styled so they are little bit more visually pleasing.
Our form is looking pretty good. So on any other browser, this is probably acceptable, but let's see what we can do for DOM-compliant browsers. So we'll switch out of Firefox, go back into our CSS file and let's add a few rules. It really doesn't take that many. Type in fieldset and then right after fieldset, open up a bracket. Now if you've never done an attribute selector, let's take a look at the syntax after we're finished with it. So, fieldset, open up a bracket, type in id=personalinfo, and then close your bracket. So this is an attribute selector and an attribute selector targets an element, in this case the fieldset, where an attribute meets a specific value.
Now you can do an attribute selector in one of two ways. One is just to check for the presence of an attribute. So you could say fieldset and then bracket notation id. That would look for any fieldset tag that had the id attribute. In this case, we're going for a specific attribute. We're saying when id=personalinfo, we want to style it this way. As you can imagine, this gives you a tremendous amount of control over your styling. So let's go ahead and give it a background color and the background color for this one will be cc9. On the next line, we'll give it a border and our border is going to three pixels. We're going to use the ridge styles.
It's going to give a three-dimensional effect and we'll change its color to black, 000, and that's the end of our first attribute selector. Get on the next line and we'll do another attribute selector for the other fieldset. So fieldset and then in bracket notation, id=artistinfo, close your bracket, put a curly brace, and in this one we'll again type in a background property and it will make that ccc so a gray and then we'll pass along a border property. And we'll do the same border, three pixels, ridge and we'll do it at #000 for black, and that's the end of that one.
So we haven't done a lot so far. But this is actually making a big difference to our file. Let's keep going and we're going to type in legend and again we'll do bracket notation. Then we're going to type in class=perlegend, so this is the class that we passed along earlier and we're targeting that with an attribute selector. So we're going to add a background attribute. Background attribute color will be #cc9. We're going to do a border top, so type in border-top, and it's going to be equal to a three-pixel ridge border at 000, so that will be black now.
That's exact same border that we have on our fieldset and we will see kind of what we're going to do with this in just a moment. So we're going to do another border value and this one would be border right, and it's going to be the same value, three-pixel, ridge and #000. Finally, we'll do a border left and we'll give it the same value. So three pixels ridge #000. So we placed a border all the way around our legend except for on the bottom. This is going to give us the appearance of a tab, we'll have a border on the left, on the top and on the right and that will sort of circle around and because of the fact that we do have a border on the bottom, the legend is going to overlap the fieldset just slightly and that will give it the appearance of a tab.
Our legend for the artistinfo is going to look very similar to this. So instead of retyping all that, I'm simply going to copy it and paste it below and I will change the class attribute from perlegend to artlegend and the only other change I'm going to make is the background color will change to ccc. The last thing we want to do is give our user a little bit of input in terms of where they currently are within our form. We'll use a focus pseudo selector to do that. So let's type in input:focus. Now, you maybe used to using pseudo class selectors when you style your links because you might do a:link, a:hover, a:active.
Well, the focus pseudo selector is another pseudo-class selector that allows us to respond when focus has been established on an element on the page. In this case we're going to respond to a focus event on any of the input elements. So input:focus and then do a comma and type in textarea:focus. People often forget the larger commenting text field isn't an input text field; it's a text area. So we're going ahead and styling both the input text fields and the text areas for our focus event. Here we're just going to apply a border so that when somebody is focused on a text field, it will be surrounded with a 2 pixel solid border and the color of this border is going to be #630.
So you save your file. Now there we have it. We completed five additional rules. It didn't take a lot of time and it didn't really take a lot of effort, but when we go back to our contact form, we're going to test this in our browser and you can see that it's made a dramatic difference to the styling of our form. So now we have these tabbed areas. Our fieldsets are defined very clearly visually and in terms of being different sections of our forms. We have got this sort of tabbed effect up top of the legend. Now, this is going to work in most standards-compliant browsers. Notice that as I click in Name, it would choose focus, when I click in Email it would choose focus. When I click in Additional Comments, it'll also choose focus, so as they tab to our form, they'll get that focus feedback as well.
So this is going to work in almost all standards-compliant browsers. Now, I do want to pass along a word of warning: the legend tag is notoriously picky when it comes to its positioning information. So unless you're going to use a type of positioning like absolute, the technique that we've just used will sometimes break in browsers like Opera or Internet Explorer. So be very careful with using those. So as we can see a properly constructed accessible and standards-compliant form doesn't have to be boring or plain. Using combination of standards-compliant form elements and creative CSS, you can create richer user experiences while still meeting the needs of all form users.
Our next exercise will examine using Dreamweaver to assist in client-side form validation.
Get unlimited access to all courses for just $25/month.Become a member
Access exercise files from a button right under the course name.
Search within course videos and transcripts, and jump right to the results.
Remove icons showing you already watched videos if you want to start over.
Make the video wide, narrow, full-screen, or pop the player out of the page into its own window.
Click on text in the transcript to jump to that spot in the video. As the video plays, the relevant spot in the transcript will be highlighted.