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??
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