id= när det bara är ett element (alltså en "grej") på sidan.
class = när flera element ska ha samma formatering.
Exempel:
<div id="container">
<p class="text">
Lorem ipsum dolor sit amet, at mollis, ut ultricies erat, at non.</p>
<p class="text">
Mus nunc nulla, cursus nunc molestie, velit sit. </p>
<p class="text">
Elit morbi duis, commodo dictumst. Sit eget, etiam hendrerit, malesuada feugiat vestibulum.</p>
</div>
I bland kan det finnas en massa blankrader innan det står som du skrev, men läs uppåt så hittar du säkert något som ser ut som
.classen{
och så kan det finnas en massa rader till bredd och efter den, kanske flera rader längre ner}
Allt mellan måsvingarna gäller för class eller div om där står #
ok, fel av mig...så stod det inte.
Vad är skillanden mellan dessa?
div.mainbg {
margin-bottom: 30px;
}
mainbg {
margin-bottom: 30px;
}
Ska vara:
.mainbg {
margin-bottom: 30px;
}
... dvs med punkt före.
Ingen praktisk skillnad.
I ena säger du: "en div som heter mainbg"
I andra säger du: "ett element som heter mainbg" (du kan sätta classen på annat än en div alltså)
Alltså: Du kanske vill ha en generell formatering med t.ex. en speciell font eller bakgrund med 25px marginaler på en mängd olika element. Du skapar en class och döper den till "foo". Du lägger till den på alla dom där elementen.
Men så ser du att just divvarna med den classen bara ska ha 10px marginaler, men för övrigt precis som classen "foo". Då kan du i stilmallen skriva:
div .foo {margin:10px}
(Med reservation för nåt fiffigt som W3C tänkt ut med det där. Det vet i så fall tanten eller zcorpan nån...)
I ena säger du: "en div som heter mainbg"
I andra säger du: "ett element som heter mainbg" (du kan sätta classen på annat än en div alltså)
Det är snarare så att klassen som appliceras på elementen heter mainbg - i det första fallet kan den bara appliceras på div-element. I det andra alternativet kan appliceras på vilken sorts (nåja) element som helst. Vad elementen heter är irrelevant.
Eller har jag trampat i galet björnskinn med mina tappade ägg?
Det är snarare så att klassen som appliceras på elementen heter mainbg - i det första fallet kan den bara appliceras på div-element. I det andra alternativet kan appliceras på vilken sorts (nåja) element som helst. Vad elementen heter är irrelevant.
Eller har jag trampat i galet björnskinn med mina tappade ägg?
mvh
Jag tror det. Gjorde ett tillägg till mitt inlägg medan du skrev ditt.
Eller så har jag också hamnat med näsan i brevlådan.
För att komma tillbaka till ursprungsfrågan.
Det kan väl finnas en idé med classnamn på div om man t.ex ska publicera en hög med artiklar och man vill avgränsa dem från varandra och att det då dessutom blir enklare att t.ex fortsätta med sådant som p:first-child och få det utskrivet överallt.
id är för sådant som till exempel en head eller en foot. Sådant som bara ska ha ett utseende som bara gäller den diven.
Sedan kan man använda en class inne i dem i stället om det behövs.
Men egentligen funkar det lika bra att även detta markeras som class...
Visst är det så. Men det beror nog mycket på vad man vänjer sig vid. Själv tycker jag det är mycket enklare med id på ställen som bara finns en gång på varje sida (högst), när man kanske efter något år eller så kommer tillbaka för att ändra något och vet att det bara är i t.ex id="foten" mina ändringar kommer synas. Kan på en stor site vara lite svårt att komma ihåg vart man placerade alla div med class-namn... . Kanske kommer inte ändringen fungera överallt...
Målet att sträva efter är att man bara ska behöva ändra på ett enda ställe i en extern css-fil.
Ju tydligare man är där, desto lättare har man/ eller annan, som senare, vill ändra något. Tror jag. Allt beror ju så mycket på ...
Man bör också tänka på att en stil i ett id har högre "specificitet" än en i en klass när det kommer till kollisioner.
Exempel: med följande CSS
#hejsan {color:red}
.hoppsan {color:blue}
div {color: yellow}
ser man effekterna i följande kod:
<div>Gissa min färg</div>
<div class="hoppsan">Gissa min färg</div> <!-- class har högre specificitet än element -->
<div id=hejsan>Gissa min färg</div> <!-- id har högre specificitet än element -->
<div id="hejsan" class="hoppsan">Gissa min färg</div> <!-- id gäller över class som gäller över element -->
Kan bli oväntade effekter annars ;)
Som i exemplet:
#mittid p {color:blue}
.minklass p {color:red}
och
<div id="mittid">
<div class="minklass">
<p>Gissa min färg (tips, den är *inte* röd ;) )</p>
</div>
</div>
För den som inte är med på varför texten faktiskt blir blå trots att "klassen" ligger närmare, är nyckeln till förståelse att "ett element nånstans på vilken nivå som helst inuti ett id", tillsammans har högre specificitet än en regel för ett "element som ligger på godtycklig nivå under ett element med en klass" ;)
Man glömmer alltså lätt att "#mittid p" gäller för godtyckligt djup och att en stil satt på ett ID på så sätt kan bli *väldigt* mycket kraftfullare än en satt relaterat till en klass. ;)
En tumregel jag har i ryggmärgen är:
Ställ gärna in "fasta saker" (som layout-mått osv) med CSS-ID:n, men använd klasser för att definiera saker som skall variera över sidan (som färger, marginaler, paddings etc)
Lycka till :birp
260 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25