Martin
Martin

Reputation: 24318

Applying a CSS style to an element using multiple selectors fails

I'm trying to find out what I am doing wrong. I have the following HTML:

<div id="dialog-container">
    <div id="dialog-box" title="" >
        <div id="dialog-icon" >
            &nbsp;
        </div>
        <p>
        <span id="dialog-message"></span>
        </p>
    </div>
</div>

I have some CSS which floats to the left. If I enter the following it works

#dialog-box #dialog-icon
{
    float: left; 
    height: 32px; 
    width: 32px;   
}

but if I enter 1 more rule i.e insert #dialog-container before the #dialog-box then it's not applied like this:

#dialog-container #dialog-box #dialog-icon
{
    float: left; 
    height: 32px; 
    width: 32px;   
}

but I thought this means apply to dialog-icon that's inside a dialog-box and that is inside a dialog-container?

Am I missing something?

Upvotes: 0

Views: 141

Answers (3)

Mutation Person
Mutation Person

Reputation: 30520

You HTML is not correctly formed or structured for your needs. You are missing a closing DIV tag on the second DIV. This is maybe what you need:

<div id="dialog-container">
    <div id="dialog-box" title="" >
        <div id="dialog-icon" >
            &nbsp;
        </div>
    </div>
</div>

The way you had it, the third div was not treated as a child (or 'inside') the second.

EDIT Following Update

I've tested this in JSFiddle (adding a colour for red and some text to highlight). It seems to be working ok:

http://jsfiddle.net/WW3v2/

Do you have any more info?

Upvotes: 3

jwueller
jwueller

Reputation: 31006

This

#dialog-container #dialog-box #dialog-icon

would match the following structure:

<div id="dialog-container">
    <div id="dialog-box">
        <div id="dialog-icon"></div>
    </div>
</div>

but since your dialog-icon is not inside of dialog-box (at least not properly), this does not work.

Upvotes: 0

Linus Kleen
Linus Kleen

Reputation: 34652

Firstly, you have three opening <div> tags but only two closing ones.

Secondly, you don't need to declare #id1 #id2 as #id2 is an identifier and is only allowed to identify one element. It is sufficient to declare a rule for #id2.

Upvotes: 0

Related Questions