Spencer
Spencer

Reputation: 4158

CSS class and id with the same name

Is there anything wrong with having a css class and id with the same name? Like .footer for the article/post's footer and #footer for the page footer.

Upvotes: 85

Views: 37525

Answers (5)

Freestyle09
Freestyle09

Reputation: 5508

It's completely valid but you should be aware where you put those id attributes, e.g. you can have element like this:

<main id="main" class="main">...</main>

And this is completely valid because you cannot have more main elements on specific page

But here's the situation that may occure some issues with duplicates

<section>
  <header class="header" id="header">...</header>
</section>

<article>
  <header class="header" id="header">...</header>
</article>

You may have multiple header elements on your website so you need to be sure that your id differs from each other header elements

<header class="header" id="unique-header">...</header>
<header class="header" id="another-unique-header">...</header>

With this approach you can share your styles and have two unique elements

Upvotes: 1

Anuj Sharma
Anuj Sharma

Reputation: 51

Yes, you can use same name for both id and class because both parameters have their own significance.

Upvotes: 3

SuspectBloom993
SuspectBloom993

Reputation: 35

The only problem with having same name for class and id is code readability and maintainability. They can have the same names, the browser will render the correct CSS as classes and ids are marked differently (. for class and # for id), but an upgrade or bug fix can be a problem for the developer.

Upvotes: 1

Thariama
Thariama

Reputation: 50832

No, there is nothing wrong, but it might be better to use different names to not confuse other developers. It is more (human) error prone to use different names.

Upvotes: 15

djdd87
djdd87

Reputation: 68456

Nope, perfectly acceptable.

A class is defined using a . and an ID is defined using a #. So as far as the browser is concerned, they're two totally separate items.

The only thing to be careful of is generating any confusion for yourself. It's probably best practise to keep the names different purely for code readability, but there's no harm in them being the same.

Upvotes: 107

Related Questions