Wat is cascading css-stijlbladen. Voorbeelden. Het blok markeren met een rand. Deze kop is in grote rode cursief gedrukt.

We hebben vijf smaken van CSS-stijlen behandeld. Vier van hen - stijlklassen, tag-override-stijlen, benoemde en gecombineerde stijlen - kunnen alleen aanwezig zijn in stylesheets.

Stijlbladen, afhankelijk van de plaats van opslag, zijn onderverdeeld in twee typen.

Afzonderlijk van webpagina's opgeslagen, in bestanden met extensie css... Ze bevatten de CSS-code voor de stijldefinities.

Listing 7.4 illustreert een voorbeeld van een externe stylesheet.

Zoals u kunt zien, zijn er hier vier stijlen gedefinieerd. In principe is alles ons bekend.

Als het externe stijlblad apart van de webpagina wordt opgeslagen, moet u het op de een of andere manier aan de webpagina binden. Dit is waar een enkele metatag voor is , die in het kopgedeelte van de bijbehorende webpagina wordt geplaatst. (In hoofdstuk 1 hebben we het gehad over metatags en gedeelten van webpagina's.) Dit is het formaat om het te schrijven:

TYPE = "tekst / css">

Het internetadres van het stylesheetbestand wordt vastgelegd als de waarde van het HREF-attribuut van deze tag.

Andere tagkenmerken zijn voor ons niet relevant. REL-kenmerk specificeert wat het bestand is waarnaar wordt verwezen door de tag , voor de huidige webpagina; de waarde "stylesheet" zegt dat dit bestand een externe stylesheet is. En het TYPE-attribuut geeft aan: Mime type het bestand waarnaar deze tag verwijst; de externe stylesheet is van het tekst / css MIME-type.

In het voorbeeld in Listing 7.5 binden we de externe stylesheet die is opgeslagen in het main.css-bestand aan de huidige webpagina.

Het voordeel van externe stylesheets is dat ze aan meerdere webpagina's tegelijk kunnen worden gekoppeld. Er is slechts één nadeel, en zelfs dat is onbeduidend: het externe stijlblad is opgeslagen in apart bestand, dus er is een kans om het te "verliezen".

(Lijst van 7.6) wordt rechtstreeks in de HTML van de webpagina geschreven. Ze is ingesloten in een gepaarde tag

Verwante stijlen

Het handigst, want met hun hulp regel je makkelijk uniforme stijl de hele website. Een gekoppelde stijl gaat ervan uit dat alle CSS-stijlen in een apart bestand staan ​​met de extensie .css.

Deze benadering is ook handig omdat het de regels voor paginalay-out scheidt van hun inhoud, CSS-code gemakkelijk kan worden gewijzigd zonder de HTML-bestanden te verstoren, en het principe van codescheiding is erg belangrijk, vooral bij grote projecten.

Gebruik de tag . om regels uit een CSS-bestand aan een HTML-pagina te koppelen toegevoegd aan container , en zijn attributen.

Hier is de regel die de regels uit het bestand koppelt: mijnstijl.css met HTML-pagina:

rel = "stylesheet" specificeert dat de tag verwijst naar een stylesheetbestand, href = "mijnsyle.css" stelt zijn adres in. De adresseringsregels zijn hetzelfde als voor reguliere links- het pad kan absoluut, relatief, enz. zijn.

Geïmporteerde stijlen

Het commando gebruiken @importeren u kunt stijlen uit een CSS-bestand toevoegen aan de huidige tabel. Dit kan bijvoorbeeld nodig zijn als u de individuele documentlay-outset wilt aanvullen met globale stijlen, universele regels uit een apart bestand. De methode kan niet worden gebruikt met inline stijlen.

De onderstaande code importeert de bestandstabel in het document any.css, die zich in de map bevindt waarin het HTML-document wordt bewerkt:

@import url (any.css);

De opdracht is geschreven op de regel onder de openingstag

CSS (Cascading Style Sheets), of trapsgewijze tabellen stijlen worden gebruikt om het uiterlijk van een opmaaktaaldocument te beschrijven. Typisch worden CSS-stijlen gebruikt om de stijl van webpagina-elementen te maken en aan te passen en gebruikersinterfaces geschreven in HTML-talen en XHTML, maar kan ook worden toegepast op elk soort XML-document, inclusief XML, SVG en XUL.

Cascading style sheets beschrijven de regels voor het opmaken van elementen met behulp van eigenschappen en aanvaardbare waarden deze eigenschappen. Voor elk element kunt u een beperkte set eigenschappen gebruiken, de rest van de eigenschappen heeft er geen effect op.

Een stijldeclaratie bestaat uit twee delen: het webpagina-element - selector, en de opmaakopdrachten zijn - advertentieblok... De selector vertelt de browser welk element moet worden opgemaakt en in het advertentieblok (code in accolades) geeft een overzicht van de opmaakopdrachten - eigenschappen en hun waarden.


Rijst. 1. Structuur van een verklaring in CSS-stijl

Soorten trapsgewijze stylesheets en hun bijzonderheden

1. Soorten stylesheets

1.1. Extern stijlblad

Extern stijlblad vertegenwoordigt tekstbestand css-extensie, die een set CSS-stijlelementen bevat. Het bestand wordt gemaakt in een code-editor, net als een HTML-pagina. Het bestand kan alleen stijlen bevatten, geen HTML-opmaak. Een externe stylesheet is verbonden met een webpagina met behulp van de tag bevindt zich in de sectie ... Deze stijlen werken voor alle pagina's op de site.

Er kunnen meerdere stylesheets aan elke webpagina worden toegevoegd door meerdere tags achter elkaar toe te voegen door het doel van deze stylesheet op te geven in het mediatag-attribuut. rel = "stylesheet" geeft het type link aan (stylesheet-link).

Het kenmerk type = "text / css" is optioneel in de HTML5-standaard en kan worden weggelaten. Als het attribuut ontbreekt, is het standaard type = "text / css".

1.2. Interne stijlen

Interne stijlen ingebed in de sectie HTML-document en zijn gedefinieerd in de tag... Innerlijke stijlen hebben voorrang op externe stijlen, maar zijn inferieur aan inline stijlen (opgegeven met het stijlkenmerk).

...

1.3. Inline stijlen

wanneer we schrijven inline stijlen, schrijven we de CSS-code naar een HTML-bestand, direct in de elementtag met behulp van het stijlkenmerk:

Let op deze tekst.

Deze stijlen zijn alleen van invloed op het element waarvoor ze zijn opgegeven.

1.4. @Import regel

@Import regel staat het laden van externe stylesheets toe. Om de @import-richtlijn te laten werken, moet deze in de stylesheet (extern of intern) vóór alle andere regels verschijnen:

De @import-regel wordt ook gebruikt om weblettertypen op te nemen:

@import url (https://fonts.googleapis.com/css?family=Open+Sans&subset=latin,cyrillic);

2. Soorten selectors

Selectors geeft de structuur van de webpagina weer. Ze worden gebruikt om regels te maken voor opmaakelementen van een webpagina. Selectors kunnen elementen zijn, hun klassen en identifiers, evenals pseudo-klassen en pseudo-elementen.

2.1. Universele selector

Komt overeen met elk HTML-element. Bijvoorbeeld, * (marge: 0;) zal de marges voor alle site-elementen op nul zetten. De selector kan ook gebruikt worden in combinatie met de pseudo-class of pseudo-element: *: after (CSS-stijlen), *: aangevinkt (CSS-stijlen).

2.2. Elementkiezer

Met elementselectors kunt u alle elementen opmaken van dit type op alle pagina's van de site. H1 (lettertypefamilie: Kreeft, cursief;) stelt bijvoorbeeld de algemene opmaakstijl in voor alle h1-koppen.

2.3. Klassenkiezer

Met klassekiezers kunt u stijlen instellen voor een of meer elementen met dezelfde klassenaam op verschillende plaatsen op de pagina of op verschillende pagina's plaats. Als u bijvoorbeeld een kop met de kopklasse wilt maken, voegt u een klassekenmerk met de waarde kop toe aan de openingstag

en stel de stijl in voor van de opgegeven klasse... Stijlen die met de klasse zijn gemaakt, kunnen worden toegepast op andere elementen, niet noodzakelijkerwijs van dit type.

Gebruiksaanwijzing persoonlijke computer

.headline (teksttransformatie: hoofdletters; kleur: lichtblauw;)

2.4. Identificatiekiezer

Met de id-selector kunt u formatteren een specifiek artikel. De id moet uniek zijn en mag maar één keer op één pagina voorkomen.

#zijbalk (breedte: 300px; zwevend: links;)

2.5. Afstammeling selector

Onderliggende selectors passen stijlen toe op elementen binnen een containerelement. Bijvoorbeeld, ul li (text-transform: hoofdletter;) zal alle li-elementen selecteren die afstammelingen zijn van alle ul-elementen.

Als u afstammelingen moet opmaken specifiek element, moet dit element een stijlklasse krijgen:

p.first a (kleur: groen;) - deze stijl wordt toegepast op alle links, afstammelingen van de alinea met de eerste klasse;

p .first a (kleur: groen;) - als u een spatie toevoegt, worden links in een klassetag .first, die een kind is van het element, gestyled

Eerst a (kleur: groen;) - deze stijl wordt toegepast op elke link die zich in een ander element bevindt dat is aangewezen door de .first class.

2.6. Kinderkiezer

Een onderliggend element is een directe afstammeling van het bevattende element. Eén element kan meerdere onderliggende elementen hebben en elk element kan slechts één bovenliggend element hebben. Met de kindselector kunt u alleen stijlen toepassen als het onderliggende element onmiddellijk volgt op het bovenliggende element en er geen andere elementen tussen staan, dat wil zeggen dat het kind niet langer genest is.
Bijvoorbeeld, p> strong selecteert alle sterke elementen die kinderen zijn van het p-element.

2.7. Zuster selector

Er ontstaat een zusterrelatie tussen elementen met een gemeenschappelijke ouder. Met selectors voor broers en zussen kunt u items uit een groep broers en zussen selecteren.

h1 + p - selecteert alle eerste alinea's onmiddellijk na een tag

zonder de rest van de paragrafen te beïnvloeden;

h1 ~ p - selecteert alle alinea's die broers en zussen zijn van een h1-kop en onmiddellijk erna.

2.8. Kenmerkkiezer

Attribuutselectors selecteren elementen op basis van een attribuutnaam of attribuutwaarde:

[attribuut] - alle elementen die het gespecificeerde attribuut bevatten - alle elementen waarvoor het alt-attribuut is ingesteld;

selector [attribuut] - elementen van dit type die het gespecificeerde attribuut bevatten, img - alleen afbeeldingen waarvoor het alt-attribuut is ingesteld;

selector [attribuut = "waarde"] - elementen van dit type die het gespecificeerde attribuut met een specifieke waarde bevatten, img - alle afbeeldingen waarvan de naam het woord bloem bevat;

selector [attribuut ~ = "waarde"] - elementen die gedeeltelijk . bevatten gegeven waarde, bijvoorbeeld als er verschillende klassen zijn opgegeven voor een element, gescheiden door een spatie, p - alinea's, waarvan de klassenaam feature bevat;

selector [attribuut | = "waarde"] - elementen waarvan de lijst met attribuutwaarden begint met het opgegeven woord, p - alinea's waarvan de klassenaam feature is of begint met feature;

selector [attribuut ^ = "waarde"] - elementen waarvan de attribuutwaarde begint met de opgegeven waarde, a - alle links die beginnen met http: //;

selector [attribuut $ = "waarde"] - elementen waarvan de attribuutwaarde eindigt gespecificeerde waarde, img - alle afbeeldingen in png-formaat;

selector [attribuut * = "waarde"] - elementen waarvan de attribuutwaarde het opgegeven woord ergens bevat, a - alle links waarvan de naam boek bevat.

2.9. Pseudo-klassenkiezer

Pseudo-klassen zijn klassen die niet echt aan HTML-tags zijn gekoppeld. Hiermee kunt u CSS-regels toepassen op elementen wanneer een gebeurtenis wordt geactiveerd of als u zich aan een specifieke regel houdt. Pseudo-klassen kenmerken elementen met de volgende eigenschappen:

: hover - elk element waar de muiscursor over zweeft;

: focus - een interactief element waarnaar met het toetsenbord is genavigeerd of met de muis is geactiveerd;

: actief - een element dat door de gebruiker is geactiveerd;

: geldig - formuliervelden waarvan de inhoud in de browser is gecontroleerd op overeenstemming met het opgegeven gegevenstype;

: ongeldig - formuliervelden waarvan de inhoud niet overeenkomt met het opgegeven gegevenstype;

: ingeschakeld - alle actieve formuliervelden;

: uitgeschakeld - uitgeschakelde formuliervelden, d.w.z. in een inactieve staat;

: binnen bereik - formuliervelden waarvan de waarden in het opgegeven bereik liggen;

: buiten bereik - formuliervelden waarvan de waarden niet zijn opgenomen in het opgegeven bereik;

: lang () - elementen met tekst in de opgegeven taal;

: not (selector) - elementen die de gespecificeerde selector niet bevatten - klasse, identifier, naam of type van het formulierveld -: not ();

: target - het element met het # symbool waarnaar in het document wordt verwezen;

: aangevinkt - geselecteerde (geselecteerd door de gebruiker) formulierelementen.

2.10. Structurele pseudo-klasse selector

Structurele pseudo-klassen selecteren kinderen volgens de parameter die tussen haakjes is opgegeven:

: n-de-kind (oneven) - oneven kinderen;

: n-de-kind (even) - zelfs kinderen;

: nth-child (3n) - elk derde element onder kinderen;

: n-de kind (3n + 2) - selecteert elk derde element beginnend met het tweede kind (+2);

: nth-child (n + 2) - selecteert alle elementen vanaf de tweede;

: nth-child (3) - selecteert het derde kind;

: nth-last-child () - in de lijst met kinderen selecteert u het element met gespecificeerde locatie, vergelijkbaar met: nth-child (), maar beginnend bij de laatste in de tegenovergestelde richting;

: first-child - hiermee kunt u alleen het allereerste kind van de tag stylen;

: last-child - hiermee kunt u het laatste kind van de tag opmaken;

: enig-kind - selecteert het element dat het enige kind is;

: leeg - selecteert elementen die geen kinderen hebben;

: root - selecteert het element dat de root van het document is - het html-element.

2.11. Selector van pseudo-klassen van het structurele type

Geeft een specifiek type onderliggende tag aan:

: nth-of-type () - selecteert elementen naar analogie met: nth-child (), waarbij alleen rekening wordt gehouden met het elementtype;

: first-of-type - selecteert het eerste kind van het gegeven type;

: last-of-type - selecteert het laatste element van het gegeven type;

: nth-last-of-type () - selecteert een element van het gegeven type in de lijst met elementen volgens de opgegeven locatie, beginnend bij het einde;

: only-of-type - Selecteert het enige element van het opgegeven type onder de onderliggende elementen van het bovenliggende element.

2.12. Pseudo-elementkiezer

Pseudo-elementen worden gebruikt om inhoud toe te voegen die is gegenereerd met behulp van de eigenschap content:

: eerste letter - selecteert de eerste letter van elke alinea, is alleen van toepassing op blokelementen;

: eerste regel - selecteert de eerste regel van de tekst van het element, is alleen van toepassing op blokelementen;

: before - voegt gegenereerde inhoud toe voor het element;

: after - voegt gegenereerde inhoud toe na het element.

3. Combinatie van selectors

Voor een nauwkeurigere selectie van elementen voor opmaak, kunt u combinaties van selectors gebruiken:

img: nth-of-type (even) - selecteert alle even afbeeldingen, waarvan de alternatieve tekst het woord css bevat.

4. Groepering van selectors

Dezelfde stijl kan op meerdere elementen tegelijk worden toegepast. Om dit te doen, vermeldt u aan de linkerkant van de aangifte de vereiste selectors gescheiden door komma's:

H1, h2, p, span (kleur: tomaat; achtergrond: wit;)

5. Overerving en cascade

Overerving en cascade zijn twee fundamentele concepten in CSS die nauw verwant zijn. Overerving betekent dat elementen eigenschappen erven van hun ouder (het element dat ze bevat). De cascade komt tot uiting in de manier waarop verschillende soorten stylesheets worden toegepast op het document en hoe conflicterende regels elkaar overheersen.

5.1. Erfenis

Erfenis is het mechanisme waarmee bepaalde eigenschappen van een voorouder worden doorgegeven aan zijn nakomelingen. CSS-specificatie overerving van eigenschappen met betrekking tot de tekstinhoud van de pagina, zoals kleur, lettertype, letterafstand, regelhoogte, lijststijl, tekstuitlijning, tekstinspringing, teksttransformatie, zichtbaarheid, witruimte en woord -spatiëring. Dit is in veel gevallen handig omdat u niet voor elk element op de webpagina de lettergrootte en letterfamilie hoeft in te stellen.

Eigenschappen voor blokopmaak worden niet overgenomen. Dit zijn achtergrond, rand, weergave, zwevend en helder, hoogte en breedte, marge, min-max-hoogte en -breedte, omtrek, overloop, opvulling, positie, tekstdecoratie, verticaal uitlijnen en z-index.

gedwongen erfenis

Door het gebruiken van trefwoord erven U kunt een element dwingen om elke eigenschapswaarde van het bovenliggende element over te nemen. Dit werkt zelfs voor eigenschappen die niet standaard worden overgenomen.

Hoe CSS-stijlen worden ingesteld en werken

1) Stijlen kunnen worden overgenomen van het bovenliggende element (overgeërfde eigenschappen of met behulp van de overerven-waarde);

2) Stijlen in het onderstaande stijlblad hebben voorrang op de stijlen in de bovenstaande tabel;

3) Een element kan vanuit verschillende bronnen worden gestileerd. U kunt controleren welke stijlen worden toegepast in de browserontwikkelaarsmodus. Klik hiervoor boven het element. klik met de rechtermuisknop muis en selecteer "Code weergeven" (of iets dergelijks). De rechterkolom toont alle eigenschappen die voor dit element zijn ingesteld of van het bovenliggende element zijn overgenomen, evenals de stijlbestanden waarin ze zijn opgegeven, en serienummer regels code.


Rijst. 2. Ontwikkelaarsmodus in Google-browser chroom

4) Wanneer u een stijl definieert, kunt u elke combinatie van selectors gebruiken: elementselector, elementpseudoklasse, klasse of element-ID.

div (rand: 1px effen #eee;) #wrap (breedte: 500px;) .box (float: left;) .clear (clear: beide;)

5.2. Cascade

Cascadering Is een mechanisme dat het eindresultaat bepaalt wanneer verschillende CSS-regels op hetzelfde element worden toegepast. Er zijn drie criteria die de volgorde bepalen waarin eigenschappen worden toegepast: de belangrijke regel, de specificiteit en de volgorde waarin de stylesheets worden opgenomen.

De!Belangrijke regel

Regelgewicht kan worden ingesteld met het trefwoord!Belangrijk, dat direct na de eigenschapswaarde wordt toegevoegd, bijvoorbeeld span (lettergewicht: vet! Belangrijk;). De regel moet aan het einde van de aangifte worden geplaatst, vóór het haakje sluiten, zonder spatie. Een dergelijke aankondiging heeft voorrang op alle andere regels. Met deze regel kunt u de eigenschapswaarde overschrijven en een nieuwe instellen voor een element uit een elementgroep in het geval dat er geen directe toegang is tot het bestand met stijlen.

Specificiteit:

Voor elke regel berekent de browser selector specificiteit en als het element tegenstrijdige eigendomsdeclaraties heeft, wordt rekening gehouden met de regel met de meeste specificiteit. De specificiteitswaarde bestaat uit vier delen: 0, 0, 0, 0. De specificiteit van een selector wordt als volgt bepaald:

voor id, voeg 0, 1, 0, 0 toe;
0, 0, 1, 0 wordt toegevoegd voor klasse;
0, 0, 0, 1 wordt toegevoegd voor elk element en pseudo-element;
voor inline-stijl die direct aan een element is toegevoegd - 1, 0, 0, 0;
de universele selector heeft geen specificiteit.

H1 (kleur: lichtblauw;) / * specificiteit 0, 0, 0, 1 * / em (kleur: zilver;) / * specificiteit 0, 0, 0, 1 * / h1 em (kleur: goud;) / * specificiteit: 0, 0, 0, 1 + 0, 0, 0, 1 = 0, 0, 0, 2 * / div # main p.about (kleur: blauw;) / * specificiteit: 0, 0, 0, 1 + 0 , 1, 0, 0 + 0, 0, 0, 1 + 0, 0, 1, 0 = 0, 1, 1, 2 * / .zijbalk (kleur: grijs;) / * specificiteit 0, 0, 1, 0 * / #zijbalk (kleur: oranje;) / * specificiteit 0, 1, 0, 0 * / li # zijbalk (kleur: aqua;) / * specificiteit: 0, 0, 0, 1 + 0, 1, 0, 0 = 0, 1, 0, 1 * /

Daardoor zullen die regels worden toegepast op het element waarvan de specificiteit groter is. Als een item bijvoorbeeld twee specificiteiten heeft met waarden 0, 0, 0, 2 en 0, 1, 0, 1, dan wint de tweede regel.

De volgorde van de bijgevoegde tabellen

U kunt meerdere externe stylesheets maken en deze koppelen aan één webpagina. Als verschillende tabellen bevatten verschillende betekenissen eigenschappen van één element, dan wordt als resultaat de regel die in de stylesheet in de onderstaande lijst is gevonden, op het element toegepast.

Waar zijn stylesheets voor?

Cascading Style Sheets of CSS (van Engelse Cascading Style Sheets) zijn een gevolg van het volgende: HTML-ontwikkeling en stellen ons in staat om naar het volgende niveau van informatiepresentatie te gaan. Met stylesheets kunt u de semantische inhoud van de pagina en het ontwerp van elkaar scheiden.

Zoals we ons herinneren, boden de eerste versies van de HTML-standaard geen enkele manier om de weergave van informatie te controleren. Het algemene concept van hypertext was gericht op de beschikbaarheid van informatie voor elk apparaat dat tekst kan reproduceren. Voor opmaak werd aanbevolen om alleen booleaanse tags te gebruiken die koppen, subkoppen, lijsten, alinea's, aanhalingstekens, enz. definiëren. - dat wil zeggen, die elementen die de structuur van het document vormen. De invulling van het uiterlijk bleef geheel op het geweten van de terminalterminal.

Sindsdien is er echter veel veranderd en HTML-standaard verloor zijn oorspronkelijke slankheid. Aanvankelijk voegde Netscape "verbeterde tags" toe die meer controle gaven over het uiterlijk van de gepresenteerde informatie. De innovatie sloeg aan en alle Netscape-extensies werden de de facto standaard. Toen deed Microsoft hetzelfde. Toen ze het beseften, was HTML een verschrikkelijke mengeling van logische en ontwerptags, incompatibele extensies en reageerde volledig niet meer op het oorspronkelijke concept - om informatie op elk apparaat te presenteren, ongeacht de kenmerken van de informatieweergave.

Vervolgens is er een grootschalige standaardisatie doorgevoerd. Als gevolg hiervan werd de HTML 3.2-standaard geboren. Hij was niet revolutionair, maar zette alleen alle innovaties op hun plaats en werkte uit algemene aanbevelingen voor browserfabrikanten. Revolutionaire veranderingen werden geïntroduceerd in de nieuwe standaard - HTML 4.0 of, zoals het genoemd werd, Dynamic HTML. Lagen, stylesheets en universeel objectmodel browser.

De nieuwe standaard heeft geprobeerd terug te keren naar de oorsprong van het HTML-concept. De vierde versie beveelt, net als de eerste, aan om pagina's zo te maken dat ze op elk apparaat kunnen worden gereproduceerd - of het nu een 21 "monitor of een kleine zwart-wit scherm mobiele telefoon.

Hoe is het presentatieprobleem opgelost? Dit is de revolutionaire benadering. Het wordt aanbevolen om alle ontwerpen over te brengen naar een extern stijlbestand. De hoofdpagina bevat alleen informatie en links naar de benodigde stijlen.

Bij het tonen van de pagina specifiek apparaat een geschikt stylesheet moet worden gebruikt. Voor een mobiele telefoon en een computermonitor moeten ze natuurlijk verschillend zijn. In het eerste geval gebruiken we het minimale ontwerp, waardoor we informatie op de meest optimale en compacte manier kunnen presenteren. In het tweede geval hebben we alle rijkdom aan lettertype- en kleurontwerp tot onze beschikking.

U hoeft slechts één keer een stylesheet te schrijven wanneer u een site maakt voor elk apparaat waarop u informatie wilt weergeven. Bovendien kan de stylesheet voor de hele site hetzelfde zijn. En daarom hoeft u niet dezelfde stijlbeschrijvingen op elk van de pagina's te herhalen.

Het plaatsen van alle stijlinformatie in één extern bestand opent andere voor ons. handige functies- nadat we de inhoud van slechts één (!) stijlbestand hebben gewijzigd, kunnen we tenslotte het hele site-ontwerp in een kwestie van seconden wijzigen. Bovendien zijn er geen andere wijzigingen nodig. Dit is natuurlijk alleen waar als de oorspronkelijke site correct is ontworpen.

Met een beetje theorie uit de weg, laten we in de praktijk gaan, en we beginnen met het verbinden van een stylesheet met een HTML-bestand.

Inclusief stylesheets
Om deze taak te volbrengen, kunnen we een van de 3 voorgestelde methoden gebruiken:

extern bestand

beschrijving in titelsectie

inline beschrijving

Laten we beginnen met de eenvoudigste, de zogenaamde inline beschrijving of beschrijving ingebed in een tag:

Deze tekst wordt overschreven door de stijl

Met behulp van de extra attribuutstijl kunnen we de stijlparameters definiëren die we in elke tag nodig hebben. Dit is de gemakkelijkste methode en werkt alleen binnen één tag. Maar stel je voor hoeveel de bestandsgrootte zal groeien en hoe lastig het zal zijn om het te repareren als we de stijl voor elke tag specificeren. Deze methode verschilt niet veel van bijvoorbeeld de directe beschrijving van het uiterlijk door middel van een tag.

Het is veel handiger om vooraf alle vereiste ontwerpstijlen te definiëren en deze vervolgens eenvoudig op de bijbehorende tags toe te passen. Dit is de tweede manier - beschrijving in de koptekst. Het effect is van toepassing op de hele pagina. Stijlen worden gedefinieerd met klassen, dit zijn lijsten met de definitie van alle benodigde ontwerpparameters.

Bij gebruik van deze methode moet de beschrijving van stijlen in het kopgedeelte worden geplaatst:


....

Deze stijlen kunnen nu overal in de html-code worden toegepast. Hiervoor wordt de volgende constructie gebruikt:

Deze tekst is geschreven met de kopstijl

Deze tekst is in het rood geschreven

Zoals je kunt zien, is alles niet zo moeilijk. Het belangrijkste is om de basisprincipes te begrijpen. Naast het definiëren van nieuwe klassen, hebben we ook de mogelijkheid om standaardtags te overschrijven. Bijvoorbeeld de tag

Nu ziet alle tekst tussen tags eruit zoals gedefinieerd door deze stijl. Dit is erg handig en stelt u in staat om bestaande pagina's eenvoudig aan te passen aan het gebruik van stijlen. Bovendien verkleint het de grootte van het bestand enigszins vanwege de afwezigheid van onnodige klasseattributen.

En tot slot, de derde manier is om de beschrijving van stijlen over te brengen naar een extern bestand. Zijn invloedssfeer strekt zich uit tot alle bestanden waarin de beschrijving is opgenomen. Deze methode sluit het beste aan bij het concept van HTML 4.0. Voor het geval we moeten veranderen verschijning site, is het voldoende om alleen dit ene bestand te corrigeren. Vergelijk het met vorige manieren... In een van hen moet je de beschrijving op elke pagina wijzigen, en in de andere, zelfs meer - in de buurt van elke tag, wat natuurlijk helemaal niet inspirerend is.

Hoe wordt de uitvoering uitgevoerd? extern bestand? Eerst wordt een stijlbestand gemaakt met een beschrijving van alle klassen die we nodig hebben (mystyle.css):

Koptekst (tekst-uitlijning: midden; lettergrootte: 27pt;)
.rood (kleur: rood;)
p (tekst uitlijnen: midden; lettergrootte: 12pt;)


....

....

Dit is het meeste handige manier, en het wordt aanbevolen om het te gebruiken voor het hoofdstijlblad.

Waarom zei ik "basis"? Feit is dat je in de praktijk alle drie de methoden moet gebruiken, en hier komt de "cascade" van stijlen om de hoek kijken. Maar daar hebben we het de volgende keer over.

Voortzetting van het gesprek over het toepassen van stylesheets. Laten we eerst de cascade van stijlen behandelen en dan verder gaan met het bekijken van de syntaxis en een overzicht van de meest voorkomende parameters die worden gebruikt bij het maken van stijlen.

Trapsgewijze stijlen
Laten we dus eerst uitzoeken waarom stijlen cascading worden genoemd. Staat u mij toe, beste lezer, ik zal u nogmaals de manieren geven om stijlen op een pagina te implementeren:

een apart stijlbestand gebruiken en het invoegen met een tag

beschrijving van de stijl in de kop van het document

een stijl toepassen als parameter in een tag.

De cascade is dat stijlen kunnen worden overschreven. De bovenstaande lijst met stylesheets voor het injecteren van stijlen komt overeen met de volgorde van overschrijven. De stroomafwaartse methode kan de stroomopwaartse methode overschrijven.

We hebben bijvoorbeeld in het externe stijlbestand gedefinieerd dat de tekst in de tag

moet worden geschreven in een 10-punts lettertype. Maar als we in de titel van de pagina bovendien aangeven dat dezelfde tekst in de tag

moet worden geschreven in een 12-punts lettertype, dan wordt de tekst in precies die grootte weergegeven - d.w.z. de stijl in de kop van de pagina heeft de stijl in het externe bestand overschreven.

Waar is het voor? Oh het is erg handig ding... En nu zal ik dit laten zien met een specifiek voorbeeld. Laten we aannemen dat de volgende stijl is gedefinieerd voor alle links in de koptekst op onze pagina:


En daarom wordt elke tekst die een hyperlink is automatisch rood en wordt deze niet meer onderstreept. En dus hebben we besloten om het copyright aan het einde van de pagina aan te geven, maar om dit te doen is niet erg opvallend, om er niet de aandacht op te vestigen. Maar toch willen we dat het copyright ook een link is. We hoeven dit maar op één plek op de pagina te doen, en het is onpraktisch om hiervoor een extra klasse te definiëren. In dit geval zijn we bij hulp zal komen trapsgewijze stijlen. Het is voldoende om de linkkleur lokaal te overschrijven:

Auteursrecht (C)
1998-2001 Kersenontwerp

We hebben dit gedaan met behulp van de stijlparameter en, zoals u zich herinnert, werkt deze alleen binnen de limieten van de tag waarin deze is gedefinieerd. Wat we nodig hebben.

Je hebt waarschijnlijk gemerkt dat ik in het bovenstaande voorbeeld in omloop ben gekomen nieuwe tag... Het is speciaal ontworpen voor dergelijke gevallen. Het enige dat het doet, is een gebied definiëren waarop we de stijl kunnen toepassen. Dit is een erg handig label omdat: voegt geen onnodige spatie voor of na zichzelf in (d.w.z. lege verticale spatie), zoals de tag doet

In welke tags is het beter om stijlen te definiëren met behulp van een klasse? Meestal wordt hiervoor een van de volgende constructies gebruikt:

Iets


Iets

Iets

Label

is soortgelijk , maar alleen met het verschil dat het een sprong maakt voor en na zichzelf (op dezelfde manier als

). Maar de stijl van de tekst waarmee de hoofdinhoud van de pagina wordt getypt, kan het beste worden gedaan door de tag te overschrijven

Niet door een bepaalde klasse te definiëren.

En een kleine toevoeging met betrekking tot de juiste weergave in beide browsers - als u gebruik maakt van tafelindeling voor site-ontwerp, moet u de stijl van de hoofdtekst definiëren, niet alleen in de tag

sinds Netscape weigert botweg pre-table stijlen over te nemen.

Laten we, met trapsgewijze in gedachten, praten over de syntaxis.

CSS-syntaxis
Elke klasse wordt beschreven met behulp van een constructie als deze:

Klein (lettergrootte: 9pt;)

Eerst wordt de naam van de klasse aangegeven - het kan willekeurig zijn, maar het is nog steeds wenselijk om een ​​zinvolle naam te geven. Verder, tussen accolades () allemaal vereiste parameters voor van deze klasse... Parameters worden van elkaar gescheiden door puntkomma's. Hier is nog een voorbeeld dat een langere beschrijving gebruikt:

Klein (lettergrootte: 9pt; kleur: #eeeeee; tekstuitlijning: midden;)

Merk op dat ik in beide constructies de klassenaam met een punt begon en zo een generieke klasse definieerde, d.w.z. een die op elke tag kan worden toegepast. En dit wordt gedaan met behulp van de volgende constructie:


Aangezien er universele klassen zijn, zijn er dan waarschijnlijk nog andere? Dat klopt, er zijn ook zogenaamde tagged klassen:

p.small (lettergrootte: 9pt;)

Een klasse die op deze manier is gedefinieerd, werkt alleen in de tag waarvoor deze is bedoeld, en voor alle andere wordt deze genegeerd:

Deze tekst wordt weergegeven in kleine stijl


We kunnen parameters niet alleen voor één tag definiëren, maar voor meerdere tegelijk. Om dit te doen, volstaat het om ze in de definitie van de stijl op te sommen, gescheiden door komma's:

p, td (lettergrootte: 9pt; kleur: groen;)

Deze techniek wordt groeperen genoemd, en in dit geval hebben we gedefinieerd voor:

dezelfde grootte en de kleur van de tekst.

In het geval van het overschrijven van bestaande tags, kunnen niet alle parameters worden gespecificeerd in de stijlbeschrijving, maar alleen de parameters die we willen veranderen. Alle andere parameters krijgen standaardwaarden, die voor verschillende tags zijn verschillend.

Pseudo-lessen
CSS heeft zoiets als een pseudo-klasse. In tegenstelling tot een gewone klasse, is de actie van een pseudo-klasse niet van toepassing op de hele tekst waarop deze stijl wordt toegepast, maar alleen op een deel ervan en is alleen mogelijk in een bepaalde staat. Laten we, om het duidelijker te maken, eens kijken naar het effect dat koppelingen alleen worden onderstreept als u de muisaanwijzer erop plaatst. Het effect is vrij algemeen en je kunt het ook op deze site zien. Hier is een fragment van de stylesheet die het bovenstaande effect bereikt:

a (tekstdecoratie: geen;)
a: hover (tekst-decoratie: onderstrepen;)

De bovenste regel is een overschrijving van de standaardtag , die het onderstrepen van links verbiedt, maar de onderste is de stijldefinitie voor de hover pseudo-klasse, die de stijl van de link beschrijft op het moment dat de cursor erop staat.

Hier is nog een voorbeeld van een pseudo-klasse - het definiëren van een drop-cap aan het begin van een alinea:

p: eerste letter (lettergrootte: 200%; lettergewicht: vet;)

Merk op dat in beide gevallen de stijl van invloed is op een specifieke status (de gebruiker staat op het punt op de link te klikken) of een stuk tekst (alleen de eerste letter van de alinea verandert). Dit is het punt van pseudo-klassen.

U kunt meerdere gerelateerde CSS-eigenschappen combineren in één eigenschap om tijd en moeite te besparen.

Vergelijking van individuele en verkorte waarden

Houd rekening met de volgende regel voor marges (sneltoetsen en randen werken op dezelfde manier):

div.foo (marge-boven: 1em; marge-rechts: 1.5em; marge-onder: 2em; marge-links: 2.5em;)

Deze regel kan in het kort worden geschreven:

div.foo (marge: 1em 1.5em 2em 2.5em ;)

Minder dan vier waarden instellen voor een steno-eigenschap

De verkorte waarde kan minder dan vier waarden hebben, volgens onderstaande lijst. De resultaten zijn gerangschikt op het aantal opgegeven waarden:

Afkortingen referentie:

Grensafkortingen voor verschillende eigenschappen

Er moet ook worden vermeld dat u zelfs grenseigenschapswaarden kunt instellen voor slechts één rand van een element zoals dit:

grens-links-breedte: 2px; border-links-stijl: solide; border-links-kleur: zwart;

Afkorting voor enkele eigenschappen van de marge, opvulling en rand Dit werkt allemaal op dezelfde manier als hierboven werd getoond in de sectie "Kiezen tussen een enkele eigenschap en een verkorte waarde".
Afkortingen voor het lettertype Met een enkele regel afkorting kunt u de lettergrootte, het gewicht, de stijl, de familie en de regelhoogte definiëren. Beschouw bijvoorbeeld de volgende code:

lettergrootte: 1.5em; lijnhoogte: 200%; lettergewicht: vet; lettertype-stijl: cursief; font-familie: Georgia, "Times New Roman", schreef

U kunt dit allemaal definiëren met de volgende regel:

lettertype: 1.5em / 200% vet cursief Georgia, "Times New Roman", schreef;

Afkorten voor achtergrond Met een CSS-tekenreeksen u kunt de achtergrondkleur definiëren, achtergrond afbeelding, beeldherhaling en beeldpositie. Laten we de volgende code nemen:

achtergrondkleur: # 000; achtergrondafbeelding: url (afbeelding.gif); achtergrondherhaling: geen herhaling; achtergrondpositie: linksboven;

Dit kan worden weergegeven met de volgende afkorting:

achtergrond: # 000 url (image.gif) no-repeat linksboven;

Afkortingen voor lijsten In dit geval een soortgelijk verhaal met lijst eigenschappen stelt u in staat om eigenschapswaarden in te stellen voor het lijstmarkeringstype, de positie en de afbeelding op een enkele regel. Laten we de volgende code nemen:

lijst-stijl-type: cirkel; lijst-stijl-positie: binnen; lijst-stijl-afbeelding: url (bullet.gif);

Dit komt overeen met het volgende:

lijststijl: cirkel binnen url (bullet.gif);

CSS toepassen op HTML

Er zijn drie manieren om CSS toe te passen op een HTML-document:

  • snaar;
  • genest;
  • externe stylesheets.

Inline stijlen

U kunt als volgt een stijlblad toepassen op een element met behulp van het stijlkenmerk:

Dit kenmerk geeft alle weer CSS-eigenschappen en hun betekenissen.

Het voordeel van inline stijlen is dat de browser gedwongen wordt deze instellingen te gebruiken. Alle andere stijlen gedefinieerd in andere stylesheets, of zelfs genest binnen document titel worden overschreven door deze stijlen.

Een groot probleem met inline-stijlen is dat ze de stijlen veel moeilijker te onderhouden maken. Het gebruik van CSS is bedoeld om de presentatie van een document te scheiden van de structuur, maar inline-stijlen doen precies het tegenovergestelde: ze verspreiden de presentatieregels door het hele document.

Afgezien van onderhoudsproblemen, profiteert u niet van het meest essentiële onderdeel van CSS: cascadering.

Geneste stijlen

Geneste stijlbladen worden aan de kop van het document geplaatst, in een stijlelement, zoals op de volgende voorbeeldpagina:

Het voordeel van geneste stijlbladen is dat u niet aan elke alinea een stijlkenmerk hoeft toe te voegen - u kunt ze allemaal opmaken met één enkele definitie. Dit betekent ook dat als u het uiterlijk van alle alinea's moet wijzigen, u dit op één plek kunt doen, maar dit alles is beperkt tot één document.

Externe stijlbladen

Externe stylesheets betekent het plaatsen van alle CSS-definities in een apart bestand, het opslaan met de CSS-bestandsextensie en het vervolgens toepassen op HTML-documenten met behulp van het element koppeling in de titel van het document. Bijvoorbeeld:

Met externe stijlbladen kunt u alle uiterlijkdefinities in één enkel bestand opslaan. Dit betekent dat u wijzigingen op de hele site kunt aanbrengen door slechts één bestand te wijzigen. webbrowser tegelijkertijd kan het het eenmaal laden en vervolgens in de cache opslaan voor alle andere documenten die ernaar verwijzen, waardoor de hoeveelheid geladen informatie wordt verminderd.

Stijlbladen importeren

Er is een andere manier om externe stylesheets te importeren in HTML-bestanden- @importoperator. Het wordt op dezelfde manier in de geneste stylesheet ingevoegd als de geneste CSS die hierboven is weergegeven. De syntaxis is als volgt:

De twee fundamentele concepten van CSS zijn: erfenis en trapsgewijze. Erfenis heeft te maken met hoe een element in HTML-opmaak eigenschappen erft van zijn voorouderelementen (waarin het is opgenomen) en deze doorgeeft aan zijn nakomelingen, terwijl trapsgewijze behandelt CSS-declaraties die van toepassing zijn op een document, en hoe tegenstrijdige regels elkaar overheersen.

Erfenis

Erfenis in CSS is het een mechanisme waarmee bepaalde eigenschappen van een voorouderelement worden doorgegeven aan zijn nakomelingen.

Met overerving kunt u bijvoorbeeld lettertype-eigenschappen definiëren voor html- of body-elementen, en deze worden overgenomen door alle andere elementen. U kunt achtergrondkleuren definiëren en voorgrond voor een specifiek containerelement, en de voorgrondkleur wordt automatisch overgenomen door onderliggende elementen in die container.

Elk element in HTML-document zal alle geërfde eigenschappen van zijn voorouder erven, behalve het root-element (html), dat geen voorouder heeft.

Cascadering

Cascadering is een mechanisme dat het eindresultaat bepaalt wanneer meerdere conflicterende CSS-declaraties op hetzelfde element worden toegepast. Er zijn drie hoofdconcepten die de volgorde bepalen waarin CSS-declaraties worden toegepast:

  • Belang
  • Specificiteit:
  • Volgorde broncode

Belang is het meest significant. Als twee verklaringen even belangrijk zijn, bepaalt de specificiteit van de regels welke van toepassing is. Als de regels dezelfde specificiteit hebben, bepaalt de volgorde van de broncode het resultaat.

Belang

Belang CSS-declaraties zijn afhankelijk van waar het is gedefinieerd. Tegenstrijdige aangiften worden in de volgende volgorde toegepast, waarbij latere aangiften de vorige overschrijven:

  • User-agent-stijlbladen
  • Reguliere declaraties in custom style sheets
  • Reguliere declaraties in stylesheets van auteurs
  • Belangrijke verklaringen in stylesheets van de auteur
  • Belangrijke verklaringen in gebruikersstijlbladen

User-agent-stylesheet is het ingebouwde stijlblad van de browser. Elke browser heeft zijn eigen standaardregels voor het weergeven van verschillende HTML-elementen als er geen stijl is gedefinieerd door de gebruiker of de paginaontwerper. Niet-bezochte links worden bijvoorbeeld meestal blauw en onderstreept weergegeven.

Gebruiker stylesheet is een door de gebruiker gedefinieerde stylesheet. Niet alle browsers ondersteunen stylesheets voor gebruikers, maar ze kunnen erg handig zijn, vooral voor gebruikers met bepaalde soorten functionele tekortkomingen. Een persoon met dyslexie kan bijvoorbeeld een stylesheet hebben waarin bepaalde lettertypen en kleuren worden gedefinieerd die het lezen gemakkelijker maken.

Auteur stylesheet is wat gewoonlijk een "stylesheet" wordt genoemd. Dit is een stylesheet die de auteur van het document (of waarschijnlijker de ontwerper van de site) heeft geschreven en gelinkt (of opgenomen).

Om van een reguliere aangifte een belangrijke te maken, moet u de!Belangrijke richtlijn erachter plaatsen. Zoals je kunt zien, zullen belangrijke verklaringen in de stylesheet van de gebruiker al het andere overschrijven, wat logisch is.

De standaardweergave van de browser is alleen van toepassing als deze declaraties niet worden overschreven door regels voor gebruikers- of auteursstijlbladen, aangezien het gebruikersagent-stijlblad de laagste prioriteit heeft.

Specificiteit:

Specificiteit: wordt gedefinieerd als een maatstaf voor hoe specifiek de selector van een regel is. Een selector met lage specificiteit kan veel elementen matchen (zoals *, dat overeenkomt met elk element in het document), terwijl een selector met hoge specificiteit slechts één element per pagina kan matchen (zoals #nav, dat alleen overeenkomt met een element met een id die overeenkomt met navigatie).

De specificiteit van een selector kan eenvoudig worden berekend. Als twee of meer advertenties conflicteren voor: gegeven element en alle declaraties even belangrijk zijn, dan heeft de declaratie met de meest specifieke selector voorrang in de regel.

Specificiteit heeft vier componenten, die kunnen worden aangeduid als a, b, c en d. Component a is het meest begrenzend, d het minst.

  • De definitie van component a is heel eenvoudig: het is 1 voor het declareren van het stijlattribuut, anders is het 0.
  • Component b is het aantal id-selectors in de selector (degenen die beginnen met#).
  • Component c is een nummer kenmerk selectors, inclusief klassenkiezers - en pseudo-klassen.
  • De d-component is het aantal element- en pseudo-elementtypen in de selector.

Na een kleine telling kunt u een reeks van deze vier componenten krijgen die de specificiteit voor elke regel definieert. CSS-declaraties in het style-attribuut hebben geen selector, dus hun specificiteit zal altijd 1,0,0,0 zijn.

Enkele voorbeelden staan ​​in de tabel.

Kiezer een B C NS Specificiteit:
h1 0 0 0 1 0,0,0,1
.foo 0 0 1 0 0,0,1,0
#bar 0 1 0 0 0,1,0,0
html> head + body ul # nav * .home a: link 0 1 2 5 0,1,2,5

Het is vermeldenswaard dat het verbinden van tekens (zoals>, + en