Den ::before
og ::after
pseudo-elementer i CSS lar deg sette inn innhold til en side uten at det trenger å være i HTML. Selv om sluttresultatet faktisk ikke er i DOM, ser det ut på siden som om det er, og vil egentlig være slik:
div::before ( content: "before"; ) div::after ( content: "after"; )
before after
De eneste grunnene til å bruke den ene over den andre er:
- Du vil at det genererte innholdet skal komme før elementets innhold, posisjonelt.
- Den
::after
innhold er også “etter” i kilde rekkefølge, slik at det vil posisjonere oppå :: før hvis stablet oppå hverandre naturlig.
Merk at innholdet fortsatt er inne i elementet de brukes på. Navngivningen føles som om de kan komme, vet du, før eller etter elementet, men det er egentlig før eller etter det andre innholdet inni.
Verdien for innholdet kan være:
- En streng:
content: "a string";
- spesialtegn må kodes spesielt som en unicode-enhet. Se tegnesiden. - Et bilde: innhold: url (/path/to/image.jpg.webp); - Bildet settes inn i nøyaktige dimensjoner og kan ikke endres. Siden ting som gradienter faktisk er bilder, kan et pseudo-element være en gradient.
- Ingenting: innhold: “”; - Nyttig for clearfix og å sette inn bilder som bakgrunnsbilder (angi bredde og høyde, og kan til og med endre størrelse med bakgrunnsstørrelse).
- En teller:
content: counter(li);
- Virkelig nyttig for stylinglister til: markør kommer.
Merk at du ikke kan sette inn HTML (i det minste blir det gjengitt som HTML). content: "";
: vs ::
Hver nettleser som støtter dobbelt kolon (: :) CSS3 syntaks støtter også bare (:) syntaks, men IE 8 støtter bare enkelt kolon, så foreløpig anbefales det å bare bruke enkelt kolon for best nettleserstøtte.
:: er det nyere formatet ment å skille pseudoinnhold fra pseudovalgere. Hvis du ikke trenger IE 8-støtte, kan du gjerne bruke dobbelt kolon.
I slekt
- ::første linje
- ::første bokstav
- Pseudo klassevalg
Nettleserstøtte
Små problemer:
- Firefox 3.5- tillater ikke absolutt posisjonering av pseudo-elementer.
- I Opera 9.2 vises alltid mellomrom i dette pseudo-elementet som om det er
pre
tekst. - IE 8 støtter ikke z-indeks på dem
Chrome | Safari | Firefox | Opera | DVS | Android | iOS |
---|---|---|---|---|---|---|
2+ | 1.3+ | 3.5+ | 6+ | 8+ | Jepp | Jepp |