Het grootste verschil tussen CSS2 en CSS3 is dat CSS3 is opgesplitst in verschillende secties, genaamd modules. Elk van deze modules baant zich een weg door het W3C in verschillende stadia van het aanbevelingsproces. Dit proces heeft het veel gemakkelijker gemaakt voor verschillende stukken CSS3 om door verschillende fabrikanten in de browser te worden geaccepteerd en geïmplementeerd.
Als je dit proces vergelijkt met wat er gebeurde met CSS2, waar alles werd ingediend als een enkel document met alle Trapsgewijze stijlbladen informatie erin, begint u de voordelen te zien van het opsplitsen van de aanbeveling in kleinere, afzonderlijke stukjes. Omdat aan elk van de modules afzonderlijk wordt gewerkt, genieten ontwikkelaars van een veel breder scala aan browserondersteuning voor CSS3-modules.
Nieuwe CSS3-kiezers
CSS3 biedt verschillende nieuwe manieren om CSS-regels te schrijven met nieuwe CSS-selectors, evenals een nieuwe combinator en enkele nieuwe pseudo-elementen.
Er zijn drie nieuwe kenmerkselectors:
-
Attribuutbegin komt exact overeen:
element[foo^="balk"]
Het element heeft een attribuut genaamd foo dat begint met "bar", b.v. -
Attribuuteinde komt exact overeen:
element[foo$="bar"]
Het element heeft een attribuut genaamd foo dat eindigt op "bar", b.v. -
Attribuut bevat de overeenkomst:
element[foo*="balk"]
Het element heeft een attribuut genaamd foo die de tekenreeks "bar" bevat.
Er zijn 16 nieuwe pseudo-klassen geïntroduceerd:
-
:wortel
- Het hoofdelement van het document.
-
:nde-kind (n)
- Gebruik dit om exacte onderliggende elementen te matchen of gebruik variabelen om afwisselende matches te krijgen.
-
:n-de-laatste-kind (n)
- Match exacte onderliggende elementen die optellen vanaf de laatste.
-
:n-de-type (n)
- Combineer broer of zus-elementen met dezelfde naam ervoor in de documentstructuur.
-
:nth-last-of-type (n)
- Combineer broer of zus-elementen met dezelfde naam vanaf de onderkant.
-
:laatste kind
- Overeenkomen met de laatste onderliggende element van de ouder.
-
:eerste-van-type
- Overeenkomen met het eerste broer of zus-element van dat type.
-
:laatste-van-type
- Overeenkomen met het laatste broer of zus-element van dat type.
-
:enig kind
- Overeenkomen met het element dat het enige kind is van zijn bovenliggende element.
-
:alleen-van-type
- Zoek het element dat het enige in zijn soort is.
-
:leeg
- Overeenkomen met het element dat geen kinderen heeft (inclusief tekstknooppunten).
-
:doelwit
- Overeenkomen met een element dat het doel is van de verwijzende URI.
-
:ingeschakeld
- Overeenkomen met het element wanneer het is ingeschakeld.
-
:gehandicapt
- Overeenkomen met het element wanneer het is uitgeschakeld.
-
:gecontroleerd
- Overeenkomen met het element wanneer het is aangevinkt (keuzerondje of selectievakje).
-
:niet (en)
- Match wanneer het element niet overeenkomt met de simple selectors.
Er is een nieuwe combinator:
-
elementA ~ elementB
- Match wanneer elementB ergens na elementA volgt, niet noodzakelijk onmiddellijk.
Nieuwe eigenschappen
CSS3 introduceerde ook verschillende nieuwe CSS-eigenschappen. Veel van deze eigenschappen creëren visuele stijlen die waarschijnlijk meer geassocieerd zouden worden met een grafisch programma zoals program Photoshop. Sommige hiervan, zoals border-radius of box-shadow, bestaan al sinds de introductie van CSS3. Anderen, zoals flexbox of zelfs CSS Raster zijn nieuwere stijlen die nog steeds vaak als CSS3-toevoegingen worden beschouwd.
In CSS3 is het boxmodel niet veranderd. Maar er zijn een aantal nieuwe stijleigenschappen die u kunnen helpen bij het opmaken van de achtergronden en randen van uw kaders.
Meerdere achtergrondafbeeldingen
Met behulp van de stijlen achtergrondafbeelding, achtergrondpositie en achtergrondherhaling kunt u in het vak meerdere achtergrondafbeeldingen opgeven die op elkaar moeten worden gelaagd. De eerste afbeelding is de laag die zich het dichtst bij de gebruiker bevindt, met de volgende erachter geschilderd. Als er een achtergrondkleur is, wordt deze onder alle afbeeldingslagen geschilderd.
Nieuwe eigenschappen voor achtergrondstijl
Er zijn ook enkele nieuwe achtergrondeigenschappen in CSS3:
- achtergrond-clip
- Deze eigenschap definieert hoe de achtergrondafbeelding moet worden bijgesneden. De standaard is de border-box, maar deze kan worden gewijzigd in de padding box of de content box.
- achtergrond-oorsprong
- Deze eigenschap bepaalt of de achtergrond in het opvulvak, het randvak of het inhoudvak moet worden geplaatst.
- achtergrondformaat
- Deze eigenschap geeft de grootte van de achtergrondafbeelding. Het stelt je in staat om kleinere afbeeldingen uitrekken zodat ze op de pagina passen.
Wijzigingen in bestaande achtergrondstijleigenschappen Style
Er zijn ook enkele wijzigingen in bestaande eigenschappen voor achtergrondstijlen:
-
achtergrond herhaling
- Er zijn twee nieuwe waarden voor deze eigenschap: ruimte en ronde. Ruimte verdeelt de betegelde afbeelding gelijkmatig in de doos zonder te worden bijgesneden. Met Round wordt de achtergrondafbeelding opnieuw geschaald, zodat deze een geheel aantal keren in het vak wordt weergegeven.
-
achtergrond-bijlage
- Er wordt een nieuwe waarde "lokaal" toegevoegd, zodat de achtergrond meeschuift met de inhoud van het element wanneer dat element een schuifbalk heeft.
-
achtergrond
- De steno-eigenschap op de achtergrond voegt de eigenschappen size en origin toe.
CSS3-randeigenschappen
In CSS3 kunnen randen de stijlen zijn die we gewend zijn (vast, dubbel, gestreept, enz.) of ze kunnen een afbeelding zijn. Bovendien ondersteunt CSS3 afgeronde hoeken. Randafbeeldingen zijn interessant omdat u een afbeelding van alle vier de randen maakt en vervolgens de CSS vertelt hoe die afbeelding op uw randen moet worden toegepast.
Nieuwe randstijleigenschappen
Er zijn enkele nieuwe randeigenschappen in CSS3:
- grens-radius
- grens-rechtsboven-radius, grens-rechtsonder-radius, grens-linksonder-radius, grens-linksboven-radius
- Met deze eigenschappen kunt u afgeronde hoeken aan uw randen maken.
- border-image-source
- Specificeert het afbeeldingsbronbestand dat moet worden gebruikt in plaats van reeds gedefinieerde randstijlen.
- border-image-slice
- Vertegenwoordigt de binnenwaartse verschuivingen van de randen van de randafbeelding.
- grens-beeld-breedte
- Definieert de waarde van de breedte voor uw randafbeelding.
- border-image-begin
- Specificeert de mate waarin het gebied van de randafbeelding zich buiten het kaderkader uitstrekt.
- border-image-stretch
- Definieert hoe de zijkanten en het midden van de randafbeelding moeten worden betegeld of geschaald.
- rand-afbeelding
- De steno-eigenschap voor alle eigenschappen van de randafbeelding.
Aanvullende CSS3-eigenschappen met betrekking tot randen en achtergronden
Wanneer een kader wordt afgebroken bij een pagina-einde, kolomeinde of regeleinde (voor inline-elementen), wordt de doos-decoratie-break eigenschap definieert hoe de nieuwe vakken worden omwikkeld met rand en opvulling. Achtergronden verdelen over verschillende gebroken dozen met behulp van deze eigenschap.
een nieuwe doos-schaduw eigenschap voegt schaduwen toe aan vakelementen.
Met CSS3 kunt u nu eenvoudig een webpagina met meerdere kolommen opzetten zonder tabellen of ingewikkeld div tag structuren. U vertelt de browser eenvoudig hoeveel kolommen het body-element moet hebben en hoe breed ze moeten zijn. Bovendien kunt u randen (regels) en achtergrondkleuren toevoegen die de hoogte van de kolom overspannen, en uw tekst zal automatisch door alle kolommen stromen.
Definieer het aantal en de breedte van de kolommen
Er zijn drie nieuwe eigendommen waarmee u het aantal en de breedte van uw kolommen kunt definiëren:
-
kolombreedte
- Definieert de breedte van uw kolommen. De browser laat de tekst dan doorstromen om de ruimte te vullen met kolommen die zo breed zijn.
-
kolomtelling
- Definieert het aantal kolommen op de pagina. De browser maakt dan kolommen die breed genoeg zijn om in de ruimte te passen, maar alleen het aantal dat u opgeeft.
-
kolommen
- Shorthand-eigenschap waar u de breedte of het aantal kunt definiëren (of beide, maar dat is zelden logisch).
CSS3-kolomhiaten en regels
Hiaten en regels worden tussen kolommen geplaatst in hetzelfde scenario met meerdere kolommen. Hiaten duwen de kolommen uit elkaar, maar regels nemen geen ruimte in beslag. Als een kolomregel breder is dan de opening, overlapt deze aangrenzende kolommen. Er zijn vijf nieuwe eigenschappen voor kolomregels en hiaten:
-
kolom-gap
- Definieert de breedte van de openingen tussen de kolommen.
-
kolom-regel-kleur
- Definieert de kleur van de regel.
-
kolom-regel-stijl
- Definieert de stijl van de regel (vast, gestippeld, dubbel, enz.).
-
kolom-regel-breedte
- Definieert de breedte van de regel.
-
kolomregel
- Een steno-eigenschap die alle drie de eigenschappen van de kolomregel in één keer definieert.
CSS3-kolomafbrekingen, kolommen overspannen en kolommen vullen
Kolom pauzes gebruiken dezelfde CSS2-opties die worden gebruikt om pauzes in pagina-inhoud te definiëren, maar met drie nieuwe eigenschappen: break-before, pauze na, en inbraak.
Net als bij tabellen, kun je elementen instellen om kolommen te overspannen met de eigenschap column-span. Hiermee kunt u koppen maken die meerdere kolommen beslaan, meer als een krant.
Het vullen van kolommen bepaalt hoeveel inhoud in elke kolom zal staan. Gebalanceerde kolommen proberen dezelfde hoeveelheid inhoud in elke kolom te plaatsen, terwijl automatisch de inhoud naar binnen stroomt totdat de kolom vol is en dan naar de volgende gaat.
Meer functies in CSS3 die niet zijn opgenomen in CSS2
Er zijn veel extra functies in CSS3 die niet bestonden in CSS2, waaronder:
- CSS-sjabloonlay-outmodule en CSS3-rasterpositioneringsmodule: Rasters maken met CSS.
- CSS3-tekstmodule: Maak een omlijning van tekst en maak zelfs slagschaduwen met CSS.
- CSS3 Kleurmodule: Nu met dekking.
- Wijzigingen in het doosmodel: Inclusief een feesttent eigenschap die fungeert als de IE-tag.
- CSS3-gebruikersinterfacemodule: U krijgt nieuwe cursors, reacties op acties, vereiste velden en zelfs het formaat van elementen.
- Mediaquery's: Mediaquery's geeft u meer flexibiliteit bij het definiëren hoe een stijlblad moet worden gebruikt. U kunt bijvoorbeeld een stylesheet definiëren die alleen is bedoeld voor handheld-apparaten met een viewport die groter is dan 20em.
- CSS3 Ruby-module: Biedt ondersteuning voor talen die tekstuele ruby gebruiken om documenten te annoteren.
- CSS3-module voor gepagineerde media: Voor nog meer ondersteuning voor paginamedia (papier, transparanten, enz.).
- Gegenereerde inhoud: het uitvoeren van kop- en voetteksten, voetnoten en andere inhoud die programmatisch wordt gegenereerd, met name voor paginamedia.
- CSS3 Spraakmodule: Wijzigingen in auditieve CSS.