CQM
CQM

Reputation: 44278

converting this to css stylesheet

I get a little lost on css stylesheet syntax. My dilemma is that I have four <div> tags with ROUGHLY the same style, except the colors are different or one may float: left but another tag might not have that.

So I was thinking I could add id to all of these so that I can move these style statements into the stylesheet.

How would I address each individual id in the stylesheet? I'm thinking something like div#id or something. Lets assume basic div is already unavailable, but I want some abstract stylesheet tag that at least contains display:block and font-size:11px and then a more specific stylesheet tag to address each <div> tag by its id or class or name.

<div style="display:block; color:steelblue; float:left; font-size:11px;">Open Requests&nbsp;</div>
<div id="openNumber" style="display:block; color:steelblue; font-size:11px; clear:right;">13</div>

<div style="display:block; color:green; float:left; font-size:11px;">Completed Requests&nbsp;</div>
<div id="completeNumber" style="display:block; color:green; float:left; font-size:11px;">13</div>

I get a little turned around on the syntax for different selector types

Thanks for any insight

Upvotes: 0

Views: 125

Answers (6)

Diodeus - James MacFarlane
Diodeus - James MacFarlane

Reputation: 114417

You can use a class for the similarities, and an id for the differences.

<div class="common" id="some-id"><!-- ... --></div>

CSS:

.common {
    display: block;
    float: left;
    font-size: 11px;
}

#completeNumber {
    color: green    
}

Upvotes: 0

Ragnarokkr
Ragnarokkr

Reputation: 2328

You can define some CSS classes and assign them to your elements according to what you need. Just an example:

CSS:

.myDiv {
  display: block;
  font-size: 11px;
}

.left { float: left; }
.clear-both { clear: both; }
.steelblue { color: steelblue; }
.green { color: green; }

HTML:

<div class="myDiv left steelblue">Open Requests&nbsp;</div>
<div class="clear-both"></div>
<div id="openNumber" class="myDiv steelblue">13</div>

<div class="myDiv green left">Completed Requests&nbsp;</div>
<div id="completeNumber" class="myDiv green left">13</div>

In this way you can separate your classes and use them only when you really need it.

Upvotes: 0

Mark Schultheiss
Mark Schultheiss

Reputation: 34217

since the id's have to be unique, you could add an ID to those and then use:

#openRegistration{display:block; color:steelblue; float:left; font-size:11px;}
#openNumber{display:block; color:steelblue; font-size:11px; clear:right;}
#completedRequests{display:block; color:green; float:left; font-size:11px;}
#completeNumber{display:block; color:green; float:left; font-size:11px;}

NOW, given the above, we can simplify it as:

#openRegistration,#openNumber,#completedRequests,#completeNumber{display:block;font-size:11px;}
#openRegistration{ color:steelblue; float:left; }
#openNumber{color:steelblue;  clear:right;}
#completedRequests{ color:green; float:left;}
#completeNumber{ color:green; float:left; }

or IF you want, give them a class and use that:

.myClass{display:block;font-size:11px;}
#openRegistration{ color:steelblue; float:left; }
#openNumber{color:steelblue;  clear:right;}
#completedRequests{ color:green; float:left;}
#completeNumber{ color:green; float:left; }

EDIT: or IF you want, give them more than one class and use that:

.myClass{display:block;font-size:11px;}
.complete{ color:green;}
.open{ color:steelblue;}
#openRegistration{  float:left;}
#openNumber{clear:right;}
#completedRequests{ float:left;}
#completeNumber{ float:left; }


<div class="myClass complete" ...

Upvotes: 0

Benjamin Crouzier
Benjamin Crouzier

Reputation: 41945

I would use multiple classes to group silimar styles together. Try to extract semantic meaning:

Something like this:

CSS:

.block11 { display:block;  font-size:11px; }
.left { float:left; }
.clear-right { clear:right; }
.steelblue { color: steelblue; }
.green { color: green; }

HTML:

<div class="block11 steelblue left">Open Requests&nbsp;</div>
<div class="block11 steelblue clear-right" id="openNumber">13</div>

<div class="block11 green left">Completed Requests&nbsp;</div>
<div class="block11 green left" id="completeNumber">13</div>

Upvotes: 0

boz
boz

Reputation: 4907

You could try the following:

css:

.floatLeft { float: left; }
.clearRight { clear: right; }
.open { color: steelblue; font-size: 11px; }
.complete { color: green; font-size: 11px; }

html:

<div id="openRequests" class="open floatLeft">Open Requests&nbsp;</div>
<div id="openNumber" class="open clearRight">13</div>

<div id="completeRequests" class="complete floatLeft">Completed Requests&nbsp;</div>
<div id="completeNumber" class="complete floatLeft">13</div>

A <div> is already a block-level element, so you don't need to specify display: block on it.

Upvotes: 1

Nick Tomlin
Nick Tomlin

Reputation: 29261

You can create a class .numbers(or whatever best describes your grouping of divs) to hold the shared styles, and add that class to the divs in question. Then, target individual divs with their id's for tweaking colors.

Something like this might help:

CSS

.numbers {
 /* shared styles */ 
}

#one {
 /* unique styles */ 
}

#two {

 /* unique styles */ 
}

#three {

 /* unique styles */ 
}

Organizing your styles, in a semantic and meaningful way, can be challenging, but the time you save maintaining your code is well worth it. For a much better summary of how to do this, you can read this article.

Upvotes: 0

Related Questions