webForumDet fria alternativet

id.klass.. Hur fungerar det??

3 svar · 447 visningar · startad av learn

learnMedlem sedan jan. 20051 130 inlägg
#1

Jag har upptäckt att css inte beter sig riktigt som jag vill. Om jag exempelvis har en <div> med id="div1" och en <p> med class="p1" och vill att alla "p1" som ligger i en "div1" skall se ut på ett visst sätt, hur ska jag göra?

Så här brukar jag göra: #div1.p1 { ... } och det fungerar ibland, men det händer att css:en inte fungerar om jag inte ändrar till #div1 .p1 { ... } alltså ett mellanslag mellan id och class.

Hur ska man göra, vad beror de olika sätten på, hur ska jag tänka, vilka är reglerna och NÄR ska jag ha mellanslag och inte??

Tack! :) :)

nitro2k01Medlem sedan aug. 20039 342 inlägg
#2

Först och främst, du bör inte använda samma id på flera element. Följande kod fungerade för mig:

<style type="text/css">

.div1 .p1{color: red;}

</style>

<div class="div1">
Div1:
<p class="p1">p1</p>
<p class="p2">p2</p>
<p class="p1">p1</p>
<p class="p2">p2</p>

</div>

<div class="div2">
Div2:
<p class="p1">p1</p>
<p class="p2">p2</p>
<p class="p1">p1</p>
<p class="p2">p2</p>

</div>

Vill du specificera mer kan du även lägga till taggnamn:

<style type="text/css">

div.div1 p.p1{color: red;}

</style>

<div class="div1">
div med class="div1":
<p class="p1">p1</p>
<p class="p2">p2</p>
<p class="p1">p1</p>
<p class="p2">p2</p>

</div>

<p class="div1">
p med class="div1":
<p class="p1">p1</p>
<p class="p2">p2</p>
<p class="p1">p1</p>
<p class="p2">p2</p>

</div>
jarvkloMedlem sedan juli 20013 378 inlägg
#3

Hmm...

Skillnaden mellan #div1.p1 och #div1 .p1 är att:
#div1.p1 gäller för en

<div id="div1" class="p1">...</div>

medan
#div1 .p1 (med mellanslaget) gäller för

<div id="div1"><div class="p1">...</div></div>

eller i ditt fall, även för

<div id="div1"><p class="p1">...</p></div>

(sättet du skriver på gör att klasserna inte binds till något visst element, hade du skrivit t.ex. #div1 p.p1 hade det inte gällt för "div-div"-exemplet medan det gällt för "div-p"-exemplet ovan).

Sedan är, som Nitro påpekar, grundskillnaden mellan class och id att class="whatever" får förekomma på hur många element samtidigt, medan id="something" bara får finnas på exakt ett element i ett och samma dokument... Alltså id= får förekomma i flera, men du måste använda olika värden för varje id= du anänder i ett och samma dokument

När du sedan börjar kombinera olika "selektorer" med mellanslag sådär, inträder automatiskt att olika sätt att skriva dem på "skriver över" andra enligt ett visst regelverk (kallas "specificitet")... Läs mer om detta i t.ex. http://www.stuffandnonsense.co.uk/archives/code/
. :bire

learnMedlem sedan jan. 20051 130 inlägg
#4

Man tackar nitro2k01 & jarvklo!! Nu förstår jag precis. :bire :bire :bire

129 ms totalt · 3 externa anrop · v20260731065814-full.beb2e261
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)