views:

230

answers:

6

I'm a little confused about HTML classes and IDs, as I'd like to use them BOTH to describe an HTML element. Is this valid and supported by most browsers?

The motivation for me to use both is this:

  1. I have a CSS style that I would like applied to multiple elements.
  2. I have some AJAX and Javascript that will manipulate those same elements, so I need a way to identify which element is which using an ID.
  3. So I'd like to use an id to identify each element for JS manipulation AND at the same time I would like to specify a class so that the same style is applied from the same css.
+8  A: 

An ID would be unique to only one item, where a class can be used to group many items together. You can use them together as you stated, ID as a unique identifier for Javascript and the class to markup with CSS.

Search for html class vs id to get many articles about this topic.

Example:

<ul>
    <li class="odd" id="item1">First Item in the List</li>
    <li class="even" id="item2">Second Item in the List</li>
    <li class="odd" id="item3">Third Item in the List</li>
</ul>
Chris Bartow
A: 

Yes, any normal browser should allow the setting of CSS classes regardless of element id. However, setting styles on a specific element (using ids, for example) may override styles set through a CSS class.

SirDemon
A: 

Yes it is valid in all browsers. ID expresses just the unique IDentification of your html control through others, and class applies some style to it. Use IDs when there is only one occurence per page. Use classes when there are one or more occurences per page.

DaDa
why the downvote ??
DaDa
Because your answer is wrong. As stated below, ID's are used for unique elements. Classes are used for multiple elements. Both are used for style.
oneporter
oh come on man! the question was :Is this valid and supported by most browsers? And that was only the answer to that! anyway
DaDa
Your answer is not only incorrect, it doesn't even make sense as a sentence. Both class and id are used to identify parts of the HTML. What does "identification of your html control through others" mean?
AmbroseChapel
the answer is correct, and the sentence too. ambrose go and take some english grammar course.
Class has nothing special to do with style. The answer also implies that they are or should be mutually exclusive.
Anonymous
he edited his answer to be correct, although it could still be better. SQLMaster ... kinda mean
Chad Grant
+6  A: 

Yes, it is perfectly valid to use both the ID and Class properties in one element. Example:

<div class="infoBox" id="myUniqueStyle"> *content* </div>

Still, keep in mind that an ID can only be used once (hence its name), while you can use classes as many times as you'd like througout a document. You can still use both the ID and the class to apply styles, while only the ID is a simple way of reaching the element through javascript.

A good way of doing it is applying IDs to all elements that you know are unique (header, navigation, main containers etc.), and classes to everything else.

"Is the" applies to elements using ID: "This is the navigation bar", "this is the header"

"Is a" or "is an" applies to elements using classes: "This is a blogPost", "this is an infoBox" etc.

Arve Systad
It's strange that everyone got through this without ever using the word: selector.
Walt Gordon Jones
That's because there is no selector in HTML. We're not discussing the stylesheet setup here, but the markup :)
Arve Systad
+2  A: 

You can definitely use both if you need to.

An ID is typically used to identify structural sections of your site - you should have only one element with a particular ID and any element can have only one ID.

A class is used to set styles which might be used in more than one place in your HTML file - any element can have multiple classes set.

A typical HTML document using both IDs and classes might be something like

<html>
...
<body>
<div id="header"></div>
<ul id="nav" class="full-width dark">...</ul>
<div id="content">
<div id="important-container" class="class-set-by-javascript another-class-set-by-javascript"></div>
</div>
</body>
</html>
Tom
A: 

Just a very obscure note about combining class and id in your CSS declarations, there's a bug with IE6, if you have:

  • two or more pages which have an element with the same id

  • those elements have different classes

  • you're styling them using an #idname.classname rule

then only the first rule in the stylesheet will take effect.

See this page for details

AmbroseChapel