开发者

CSS selector driving me nuts!

Apoologie开发者_JAVA技巧s in advance for the slightly long winded code in this question

@charset "UTF-8";
/* CSS Document */

* {
    margin:0;
    padding:0;
    font-family:Arial, Helvetica, sans-serif;
}

#wrapper {
    width:900px;
    margin:0 auto 0 auto;
}

#header {
    background-color:#800080;
    width:894px;
    min-height:60px;
    padding-top:6px;
    padding-left:6px;
}

#header img {
    margin-left:200px;
    margin-top:10px;
}

#headerleft {
    float:left;
}

#header h2 {
    font-family:Arial Black, Arial, Helvetica, sans-serif;
    color:#ffff00;
    font-size:36px;
    /*float:left;*/
    }

#header h3 {
    font-family:Arial Black, Arial, Helvetica, sans-serif;
    color:#ffff00;
    font-size:14px;
}

#nav {
    background-color:#800080;
    width:100%;
    min-height:30px;
}

#nav ul {
    padding-left:7px;
    padding-right:7px;
}


#nav li {
    list-style:none;
    display:inline;
    padding:5px 44px 5px 44px;
}

#nav li a {
    color:#FFF;
    text-decoration:none;
}

#nav li a:hover {
    color:#ffff00;
}


#leftcol {
    background-color:#800080;
    width:125px;
    min-height:30px;
    float:left;
}

#leftcol img {
    margin-left:20px;
    margin-bottom:20px;
}

.content {
    padding:20px 10px 10px 20px;
    float:left;
}

<!-- admin classes -->
.pageselect p {
    color:#C90;
}


#rightcol {
    /*background-color:#800080;*/   
    width:160px;
    min-height:330px;
    float:right;
}

.righthead {
    margin-top:7px;
    background-image:url(../images/rightcol-head.png);
    color:#FFF;
    padding: 5px 20px 5px 20px;
    font-size:14px;
}

.rightmid {
    background-image:url(../images/right-mid.jpg);
    padding: 5px 10px 5px 10px;
    font-size:14px;
}

.rightfoot {
    background-image:url(../images/right-foot.jpg);
    background-repeat:no-repeat;
}

.clear {
    clear:both;
}

#footer {
    background-color:#800080;
    width:880px;
    min-height:30px;
    margin-top:-20px;
    padding-top:30px;
    padding-left:20px;
    padding-bottom:10px;
}

#footer p {
    color:#ffff00;
}

#footer p a {
    color:#ffff00;
    text-decoration:none;
}

#footer p a:hover {
    font-weight:bold;
}

.error {
    color:#C30;
}

I have the above stylesheet. I am attempting to style the following element (taken from firefox web developer tools):

html > body > div#wrapper > div#leftright > div.content > div.pageselect

To my mind .pageselect should be the selector to do that, but I seem to be powerless to influence the style, and its just about sending me wacko!

Why won't this work?

edit for comments:

<div class="pageselect">
<p>
page
</p>
</div>

Everything is defined by a id on its own or by a single class, just the way I code.


Dude

Why do you have an HTML comment in your CSS?

<!-- admin classes -->
.pageselect p {
    color:#C90;
}

That should be:

/* admin classes */
.pageselect p {
    color:#C90;
}

Take note that in some browsers a CSS rule's selector can be spread between two lines:

.pageselect
p {
    color:#C90;
}
/* that was the same as
.pageselect p {
    color:#C90;
}
*/

So your HTML comment <!-- --> is being interpreted as part of a CSS selector. Since it makes no sense as a CSS selector, your whole rule is dropped.


The only style I can see that you have for pageselect is

.pageselect p {
    color:#C90;
}

This would color a paragraph inside pageselect. Not pageselect itself. It should just be

.pageselect {
    color:#C90;
}

EDIT

Ok I think I found your problem. Your comment is wrong and messing with the style. You have,

<!-- admin classes -->
.pageselect p {
    color:#C90;
}

If that is in your css file then its wrong. You need to make this be like your other comments.

/* admin classes */


Have you conssidered using Firefox's Firebug extension to understand if the properties you are willing to define aren't defined somewhere else?

Alternatively, Chrome has this functionality built-in. It can be found in Tools->"Developer Tools"


your css is styling .pageselect p, not just .pageselect


i guess you have a cascade specificity issue. ID-based selectors (starting with #) take precedence over Class-based selectors (starting with .) and both take precedence over Element-based selectors (just the elements' name, like p). and they sum up, which is interestign to note. let's say you have this markup:

<div id="this-div" class="div-class">
  <p id="this-paragraph" class="paragraph-class">
   text text text.
  </p>
  <p> other text </p>

then #this-div{color:blue;} will override p.paragraph-class{color:red;} regardless of the order you put it in the css file. think like this: each #id-based-selector is worth 100 specificity and each .class-based selector is worth 10 and each element-based selector is worth 1.

see http://www.w3.org/TR/CSS2/cascade.html#specificity for more details.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜