Grundläggande css-väljare. CSS-väljare


Idag ska vi titta på konceptet med CSS-väljare och hur vi kan använda dem för att förkorta vår HTML-uppmärkning, vilket gör den renare.

CSS-väljare– Det här är det element som vi kommer att tillämpa på CSS-egenskaper. Ordet "väljare" är självförklarande, det betyder val.

P (färg: röd) div span (bakgrund: grön) ul li (liststil: ingen)

Klass- och id-väljare

I exemplet ovan har vi 3 väljare - p, div span, ul li. Det vill säga att hela vår stilfil består av väljare och deras egenskaper. Det är mest bekvämt och intuitivt, särskilt för nybörjare, att använda taggens klassnamn eller den unika identifieraren för taggen som väljare. För att tilldela en klass eller identifierare till en tagg måste vi ange den bland attributen för den taggen. En specifik tagg kan ha maximalt 1 ID och oändligt antal klasser. Exempel:

text i första div
text i andra div
text i tredje div

Vad du bör vara uppmärksam på:

  • Klasser och identifierare kan tilldelas alla (alla) taggar.
  • Varje id är unikt och kan inte upprepas på samma sida, till skillnad från klasser!
  • Samma klass kan tilldelas alla taggar och kan upprepas hur många gånger som helst på en sida.
  • Om vi ​​vill tilldela flera klasser till en specifik tagg anger vi dem helt enkelt åtskilda av ett mellanslag.
  • Namnen på klasser och identifierare kan vara desamma, men förutom namnet kommer det inte att finnas något gemensamt mellan dem.

Hur hänvisar man till en klass eller id i en stilmallsfil (CSS)?

Låt oss titta på ett exempel:

#first (färg: röd;) /* få tillgång till id som heter först */.second (färg: blå;) /* få tillgång till klassen som heter andra */#first .second (färg: orange;) /* få tillgång till klassen med namnet andra ENDAST om den är INNE i taggen med identifieraren först */.first .third (färg: grå;) /* refererar ENDAST till klassen som heter tredje om den är INNE i en tagg med klass först */

I vårt fall kommer de två sista instruktionerna inte att fungera, eftersom vi inte har klasser kapslade inuti taggar med givna attribut. Som du kanske har märkt, för att indikera att vi syftar specifikt på id, måste vi sätta ett hash-tecken (#) framför dess namn utan mellanslag, om vi hänvisar till en klass, måste vi sätta en punkt (. ) framför klassnamnet.

Att använda klasser och identifierare är mycket bekvämt, men det ökar vår HTML-uppmärkning, helst (som aldrig existerar) ska vi inte använda dem alls, istället kommer vi att använda kombinationer och grupperingar av väljare, resten av artikeln kommer att handla om dem, men! Men detta betyder inte alls att du helt ska överge användningen av klasser och identifierare, du bör bara komma ihåg att du ofta, istället för att skapa en ny klass eller id, kan klara dig med de tekniker som beskrivs nedan och de kan också vara ganska bekvämt.

Vad är skillnaden mellan klass och id?

Utöver ovanstående skillnader är det också värt att notera att egenskaper som anges av id har högre prioritet än egenskaper som tilldelats klassen. Det vill säga om vi skriver:

text i diva

Då blir textfärgen röd, trots att klassen ligger lägre i koden och om de hade samma prioritet skulle texten bli blå.

Efter syntax: i fall med en klass kan vi välja vilken tagg som ska ha den här klassen, för att göra detta, efter taggnamnet UTAN ett mellanslag, måste vi referera till klassen. Exempel:

Min klass (fastigheter) /* kommer att gälla för alla taggar som innehåller klassen myclass */ div.myclass (egenskaper) /* kommer endast att gälla för div-taggar som innehåller klassen myclass */

Detta kommer också att fungera för id, men en sådan post är meningslös, eftersom id inte kan upprepas på sidan, vilket betyder att det räcker att helt enkelt deklarera id:t utan taggen som det refererar till:

text

Det verkar bara finnas en ospecificerad skillnad kvar, och det gäller ett ämne som jag inte tänkt beröra inom en snar framtid på den här bloggen - Javascript. Men jag är fortfarande skyldig att rapportera det till dig: om du vill komma åt ett element med med hjälp av Javascript, då för detta ändamål kommer det att vara mycket bekvämt att ha ett ID för detta element. För att referera till ett element efter dess klass i Javascript finns det ingen sådan inbyggd funktion, du måste använda sekundära funktioner+ det är inte alltid kompatibelt med flera webbläsare.

Summa summarum: vi använder id och klass, men med måtta och frågar oss alltid om det är möjligt att klara sig utan dem och hur lämpligt det är.

Relaterad väljare

Div p (färg: grön;) /* Väljare efter barn */ p(färg: röd;) /* väljare efter tagg */

Men som jag redan skrev i föregående artikel, i det första fallet kommer CSS-egenskaper att tillämpas på alla p-taggar som är kapslade på ALLA djup av div-taggen. Men vad händer om vi bara vill tillämpa egenskaper på direkta ättlingar, det vill säga till den första nivån av häckning:

Tredje nivån

Direkt arvinge (första nivån)

Andra nivån

Direkt arvinge (första nivån)

I det här fallet måste vi använda den så kallade relaterade väljaren, ett vinkelfäste används för att beteckna det, du kan använda mellanslag eller så kan du utelämna dem, jag skulle inte rekommendera det:

Div>p (färg: blå;) /* endast den första nivån av häckning */ div p (färg: blå;) /* absolut alla stycken i en div */

Universalväljare

Vi har löst det här, vi har redan 3 typer av väljare i vår arsenal, nu vill jag berätta om en mycket ovanlig väljare som sticker ut bland alla andra - det här är den så kallade universella väljaren, som indikeras av en asterisk (*):

* (marginal: 0; utfyllnad: 0;)

Så här börjar alla för mig nytt projekt, jag råder dig att göra detsamma. Den universella väljaren gäller för alla sidelement (taggar), men har noll prioritet (endast under ingen prioritet alls). Det används vanligtvis för att åsidosätta CSS-egenskaperna som webbläsare ställer in som standard för vissa taggar. Tänk dig, det här händer faktiskt! Webbläsare ställer in sina egna egenskaper för en hel del taggar som standard, till exempel hyperlänktaggen blå textfärg och understrykningar, de sätter utfyllnad på body-taggen osv. Det finns absolut inget behov för oss att komma ihåg, känna till och använda detta, så vi tar omedelbart bort de mest banala egenskaperna med en universell väljare, men jag skulle inte rekommendera att lägga till något annat till den (eller lägga till, men försiktigt), trots den minsta (null ) prioritet för den universella väljaren, i vissa fall kan den fortfarande åsidosätta andra egenskaper för dig, så tänk på det.

Förresten, när du arbetar med väljare, som med allt arbete som är relaterat till layoutlayout, är det väldigt bekvämt att använda visning av sidelement. Om du ännu inte är medveten om sådana saker som Opera Dragonfly, Firebug och webbinspektörer i allmänhet, så behöver du, utan att överdriva, snarast läsa artikeln på länken ovan! Och den som redan har använt liknande saker, snälla följ mig.

Pseudo-klasser

Till skillnad från klasser behöver inte pseudoklasser anges i HTML-uppmärkningen, de beräknas av webbläsaren själva. Vi har 4 statiska pseudo-klasser och 3 dynamiska pseudo-klasser, exklusive CSS 3, mer om det mot slutet. Statiska inkluderar (:first-child, :link, :visited, :lang()):

Direkt arvinge (första nivån)

Tredje nivån

Direkt arvinge (första nivån)

Andra nivån

Direkt arvinge (första nivån)

Resultat:

Naturligtvis kan du kombinera väljare som du vill, till exempel:

Div>span p:first-child (färg: grön;) /*kommer att fungera om p är det första barnet till dess förälder och är inuti en span-tagg som är en direkt underordnad av en div-tagg */

Namnet på pseudoklassen som presenteras ovan talar för sig självt första barnet - det första barnet.

Följande två statiska pseudoklasser gäller endast för hyperlänktaggen (:link, :visited), de tillämpar CSS-egenskaper beroende på om den här länken specifik användare eller inte:

A:länk (färg: blå;) /* ställ in färgen blå för obesökta länkar, och som standard är de understrukna */ a:besökt (färg: grön; text-dekoration: ingen;) /* besökta länkar kommer att ha röd text, ta bort understrykningen */

Pseudo-klassen:lang() används för att specificera olika stilar beroende på språket. Det språk som designen ska tillämpas på anges inom parentes. Detta kan till exempel användas för att specificera olika stilar av citattecken inom citattecken:

Q:lang(de) (citat: "\201E" "\201C";) /* citat för tyska */ q:lang(en) (citat: "\201C" "\201D";) /* citat för engelska */ q:lang(ru) (citat: "\00AB" "\00BB";) /* citat för ryska språket */

Detta är kanske den enda möjliga typen av väljare som jag aldrig har använt.

Dynamiska pseudo-klasser

Dynamiska pseudoklasser är :active, :hover, :focus. Dynamiska pseudoklasser utlöses av en specifik åtgärd på sidan, de fungerar för alla taggar, och inte bara för länkar, som många tror och till och med hävdar i sina bloggar! Låt oss överväga deras ansökan:

P:active (bakgrund: röd;) /* stil som kommer att tillämpas på taggen när du klickar på den (musklick) */ input:focus (bredd: 400px;) /* stil som kommer att tillämpas på elementet där det här ögonblicket fokus (fungerar till exempel för textinmatningsfält: textområde, inmatning). I I detta fall vid fokusering blir bredden på ingången lika med 400 pixlar, bekvämt att använda för vacker effekt Utöka fältet genom att klicka. */ div:hover (bakgrund: grön;) /* Utlöses när markören svävar över ett element, används främst för att skapa en vacker effekt när du håller muspekaren över länkar. */

Tillämpa dessa stilar på vårt exempel ovan så ser du själv.

Intilliggande väljare

Intilliggande väljare är närmaste granne under koden, inte barnet! Mycket bekväm väljare:

text i stycket i första div

text i stycke UTANFÖR div

text i stycket i andra div

text i spann

återigen ligger stycket utanför div

Resultat:

Generaliserade intilliggande väljare

Generaliserade intilliggande väljare fungerar precis som vanliga intilliggande väljare, förutom att egenskaperna inte bara gäller den första granne nedan, utan för alla angivna grannar nedan:


text i diva

paragraf

paragraf

paragraf


text i spann

paragraf

paragraf


stycke i diva

stycke i diva


text i spann

paragraf

Resultat:

Attributväljare

Attributväljare låter oss komma åt taggar som har det attribut vi behöver, eller till och med ett specifikt värde:

P (egenskaper) /* gäller för alla p-taggar som har ett align-attribut */ p (egenskaper) /* där värdet för align-attributet är center */ p (egenskaper) /* där värdet för align-attributet börjar i mitten */ p (egenskaper) /* där värdet för align-attributet innehåller center */ p (egenskaper) /* där webbplatsen bland annat kan separeras med mellanslag () */ p (egenskaper) /* där värdet på klassattributet endast består av eller börjar med ordet site, följt av ett bindestreck och resten av värdet ( eller ) */ p (egenskaper) /* där värdet för align-attributet slutar med center */

CSS 3 pseudoklasser

Du har redan blivit bekant med alla huvudväljare och detta borde räcka för dig under de första dagarna. Men i CSS 3 har många nya pseudoklasser dykt upp, nu kan vi ta inte bara det första barnet, utan också vilket annat barn som helst, vi kan gå från motsatsen, ta inte det första, utan det sista barnet, och så vidare och så vidare. Allt detta är väldigt bekvämt och praktiskt, förutom att du kan ha problem med äldre versioner av IE. Låt oss samla all vår kraft och gå igenom alla återstående väljare, så att du senare kan ha dem i åtanke när du skapar din egen layout.

:sista-barn – analogt med:första-barn, men tar inte det första, utan det sista barnet.

:only-child – fungerar om elementet (taggen) är det enda barnet.

:only-of-type - fungerar om elementet (taggen) är det enda underordnade av sin typ.

:nth-child() – refererar till barn med deras serie nummer, kan du komma åt alla jämna eller udda nummer. Till exempel:


paragraf

paragraf

paragraf


text i spann

paragraf

paragraf

paragraf

paragraf

paragraf

paragraf

Resultat:

:nth-last-child – fungerar på samma sätt som den föregående, men rapporten börjar från slutet.

:first-of-type – det första barnet i sin typ inom den direkta föräldern.

:last-of-type – det sista barnet i sin typ inom den direkta föräldern.

:empty – fungerar för de taggar som inte innehåller ett enda tecken (ingen text).

:not() – ger ett undantag för de givna elementen. Exempel:


stycke med klassrulle


paragraf

paragraf


stycke med klassrulle

Resultat:

Hantera fält, formulär, alternativknappar och kryssrutor i CSS

:enabled - gäller tillgängliga gränssnittselement som formulär, knappar, switchar, etc. Som standard är alla gränssnittselement tillgängliga.

:disabled - gäller för inaktiverade gränssnittselement som knappar, formulär och så vidare. Gränssnittselement inaktiveras om du lägger till attributet disabled till dem i HTML eller disabled="disabled" i XHTML.

:checked – gäller för gränssnittselement som radioapparater och kryssrutor när de är i påslaget läge.

Pseudo-element

Pseudo-element, liknande pseudo-klasser, beräknas automatiskt av webbläsaren, vi behöver inte oroa oss för detta. För att undvika att blanda ihop pseudo-element med pseudo-klasser i CSS-specifikationer 3, beslutade man att använda ett dubbelt kolon, istället för ett enda, som var fallet i CSS 2. Därför kan du på Internet hitta pseudoelement med både en enkel kolon och en dubbel kolon - båda alternativen är korrekta . För bättre kompatibilitet med IE rekommenderas det dock att använda ett enda kolon.

:first-line – den första raden inuti ett block eller tabellelement.

:first-letter – den första bokstaven i ett blockelement.

Summa summarum: nu vet du och kan använda den fulla kraften i överlappande stilmallar, men detta betyder inte att du omedelbart behöver skynda dig att skapa webbplatslayouter med så många väljare, pseudoklasser och pseudoelement som du har lärt dig idag. Jag har listat alla möjliga verktyg, och du bör bara välja det mest nödvändiga för dig själv.

Fördelar med att optimera HTML med CSS

En del av poängen med allt ovan är att gå bort från den allestädes närvarande användningen av klass- och id-attribut i HTML, och därigenom överlåta allt till de mäktiga stilmallarna.

Externa stilfiler, som externa Javascript-filerär perfekt cachade, vilket innebär att när användaren besöker någon sida på din webbplats för första gången kommer användarens webbläsare ihåg dessa filer och laddar inte ner dem igen, till skillnad från själva webbplatssidan, det vill säga din HTML-kod, bilder och text, som webbläsaren laddar ner igen och igen. Detsamma gäller sökmotorer, de bryr sig inte alls om din. externa filer, men de bryr sig inte om volymen och innehållet i din HTML-kod. Sökmotorer du måste skanna hela strukturen på sidan och i ditt eget intresse hjälpa dem med detta, fokusera sina ansträngningar på innehållet, och inte på en krånglig vägg av uppmärkning som består av ett gäng klasser och identifierare, eller ännu värre - Javascript-händelsehanterare och CSS-stilar direkt i taggattribut (och sådant händer fortfarande).

Du kan argumentera med mig, säger de, vi kan tvinga klientens webbläsare att ladda ner lokal miljö alla inkluderade filer, bilder, cachelagra hela sidan, och så vidare och så vidare. Mot en sådan bakgrund är en sådan bagatell helt förlorad, men på ett eller annat sätt, genom att minska HTML-uppmärkningen så mycket som möjligt, vinner du bara, utan att förlora något förutom en eventuell vana.

Låt oss sammanfatta: tack vare optimering och minskning av HTML har vi en mycket liten vinst i sajtladdningshastighet och SEO ( sökmotoroptimering), samt renare kod.

Eftersom vi inte vill styla alla våra HTML-element på en gång, behöver vi förmågan välja en delmängd av dessa element.

CSS-väljare bestämmer vilka element vi vill använda stilen på.

Grundläggande taggväljare

Det är enkelt att rikta in sig på grundläggande HTML-taggar: använd bara taggnamnet.

Det finns ett direkt samband mellan namnet HTML-tagg och CSS-väljaren som används.

Klasser

Med tanke på att vi förmodligen inte vill utforma alla stycken eller alla rubriker lika, måste vi skilja dem åt.

Av alla HTML-attribut är klassattributet det viktigaste för CSS. Det låter dig bestämma grupp HTML-element som vi kan rikta in oss på exakt. Sätt bara en prick före namnet på klassen du vill använda:

Datum (färg: röd;)

Å andra sidan finns det HTML-attribut klass med värdedatum . Det måste matcha CSS-klassens namn.

Du kan använda vilket namn som helst för din klass, men det får inte börja med ett nummer.

Klassväljaren .date riktar in sig på alla HTML-element med ett class="date"-attribut. Så följande HTML-element Allt kommer att stylas:

Evenemanget kommer att äga rum kl lördag.

Observera att taggnamnet spelar ingen roll, endast klassattributet beaktas.

Identifierare

Du kan också använda id-attributet i din HTML och definiera det i din CSS med hjälp av en hash:

#tagline( färg: orange;)

Den här titeln kommer att vara orange.

Identifierare liknar klasser genom att de också är baserade på ett HTML-attribut.

Exempel

Kombinera väljare

Låt oss använda vårt tidigare exempel där vi vill göra våra datum röda:

Evenemanget kommer att äga rum kl lördag.

Om vi ​​vill ha våra dejter inne istället visades i blått? Vi kan lägga till följande CSS-regel:

Em.date ( färg: blå; )

em.date kombinerar:

  • em-taggväljare;
  • klassväljare .datum .

Det kommer bara att gälla element . Detta kommer inte att påverka andra .date eller .

Väljarhierarki

Ett mellanslag i väljaren definierar anfader/barn-relationen. Låt oss säga att vi vill att länkarna i vår rubrik ska vara röda:

Rubrik a (färg: röd;)

Pseudo-klasser

HTML-element kan ha olika tillstånd. Det vanligaste fallet är när du håller muspekaren över en länk. Det är möjligt i CSS att använda en annan stil när en sådan händelse inträffar.

Pseudoklasser är bundna till vanliga väljare och börjar med ett kolon.

Detta material ägnas åt grunderna för styling på en internetresurs med hjälp av väljare.

Väljare i CSS används för att definiera en specifik
element i html-sidan som du behöver ansöka om
eller ändra CSS-stilen.

Typer av väljare i CSS

Elementväljare

För att ge den nödvändiga CSS-stilen skrivs i detta fall namnet som en väljare html-element. Till exempel räcker det att ange önskad stil för H1-rubriken, varefter dessa rubriker kommer att ha den form vi kräver. Så här kommer koden att se ut:

H1 (
teckenstorlek: 11pt;
}

Det finns ofta tillfällen då du behöver göra rubriker in olika stilar. Här kommer en klassväljare att hjälpa till att lösa detta problem.

Väljare efter klass

Klassväljaren är universell i CSS. Du kan skriva det så här: före klassnamnet skriver vi en prick, och först då inom parentes anger vi stilen vi behöver:

.red (
teckensnittsfamilj: tahoma, sans-serif;
färgen röd;
teckenstorlek: 11pt;
}

Ett exempel på användning av en klassväljare. Låt oss tillämpa den här stilen på H1-rubriken html sida:

Namn på sidan

Från exemplet ovan kan du se att "class"-attributet med det angivna namnet tillämpas CSS-stil "röd".
Ett annat exempel. I html-delen skriver vi:

Denna rubrik är blå eftersom motsvarande klass tillämpas på den


id".

I html-dokumentet ser det ut så här:

Låt oss ställa in stilen för detta stycke

I CSS-dokumentet:

p#newstyle (färg: blå; teckenstorlek: 12px;)

Som ett resultat kommer ett blått teckensnitt med en storlek på 12px att användas för detta stycke.

Kontextväljare

En lika nödvändig komponent är kontextväljare.
Till exempel på en webbplats fanns det ett behov av "H1"-rubriker, bifogade med taggen djärv markera i rött:

H1 fet (färg:röd;)

Som du kan se skrivs H1-rubriken först, ett mellanslag läggs till och taggen djärv och sedan inom parentes stilen vi angav. Detta kan uttryckas i ord som detta: "Om det finns en fet tagg inuti H1-huvudet ska texten vara röd."

På detta sätt kan du också ställa in stilar för objekt i punktlistor, tabeller och till och med deras celler, med olika kapslingsnivåer.

Nästa sida -

CSS-väljare är en av huvudfunktionerna i CSS-språket. Väljare låter dig komma åt antingen en grupp av element eller bara ett av dem.

Väljare i CSS

Väljare används för att tala om för webbläsaren vilka element som ska tillämpas på stilarna som beskrivs i hängslen.

P (stilar...)

I det här fallet är väljaren p – stycketagg. Den här regeln lägger till stilar till alla stycken på en webbsida.

Vilka typer av CSS-väljare finns det?

Taggväljare - det enklaste. Det har visats i ett exempel. För att skriva det i css måste du skriva taggnamnet utan vinkelparenteser. Stilarna kommer att tillämpas på alla element med den taggen.
Table() – stilar för alla tabeller
Li() – stilar för alla listobjekt
A() – stilar för alla länkar

Stilklass– du kan bifoga en stilklass till valfritt element på en webbsida. Till och med till en bokstav. Sedan i css-filen kan du komma åt detta element genom att skriva dina egna stilar för det. För att göra detta måste du sätta en prick och skriva namnet på stilklassen efter den. Exempel:
.about() – reglerna kommer att gälla för alla element som har attributet class = "about".
.down() – reglerna kommer att tillämpas på alla element som har attributet class = "down".
.float() – reglerna kommer att gälla för alla element som har attributet class = "float"

Som du kan se är det viktigaste att göra en poäng. En stilklass kan bindas till ett obegränsat antal element. Ett element kan tilldelas flera klasser.

Identifierare– annan typ av väljare. En identifierare kan tilldelas endast ett element. Den kan inte ha två identifierare, och ID:t som är kopplat till detta element kan inte registreras någon annanstans.

Den är inställd så här:

Paragraf

Det vill säga, precis som en klass, används bara attributet id vilket ord som helst används som dess betydelse.

För att komma åt ett element med en identifierare via css måste du skriva id-värdet och sätta en hash framför det.

#first( Teckenstorlek: 22px)

Vi övergick till stycket med id = först. Stilen kommer bara att tillämpas på den. För de återstående styckena ändras inte teckenstorleken.

Pseudo-klasser

Det finns en intressant typ av väljare i CSS: pseudoklasser. Det vill säga klasser som element har som standard och som inte behöver specificeras ytterligare. Vissa av dem fungerar bara för länkar, medan vissa kan appliceras på alla element. I vilket fall som helst, CSS-pseudo-klasser underlättar avsevärt arbetet för en webbutvecklare.

En pseudoklass är en stilklass av ett element som vi faktiskt inte definierade själva, det existerar bara på egen hand. Till exempel, se den här koden i html:

Paragraf

Du kan absolut säga att det här stycket har en speciell klass, eftersom det är skrivet där. Men pseudoklasser behöver inte skrivas som standard, och detta är deras fördel i det här fallet. Låt oss sedan titta på de mest populära av dem.

För länkar

För inmatningsfält och länkar

:focus – Stilen tillämpas på elementet som får ingångsfokus.
Faktum är att det finns många nya coola pseudo-klasser för inmatningsfält, men de är alla nya för CSS3, och i den här artikeln skulle jag bara vilja diskutera de enklaste. Det kommer definitivt att finnas en artikel om CSS3-väljare i framtiden.

För alla element

  1. :hover – stil som används när du håller muspekaren över ett element
  2. :first-child – välj det första underordnade elementet
  3. :last-child – sista underordnade element
  4. :nth-child() – Ett tal eller en formel skrivs inom parentes som bestämmer vilka element som kommer att väljas.
  5. :first-of-type, :last-of-type, :nth-of-type() – fungerar nästan identiskt med de tidigare pseudoklasserna. Den enda skillnaden är att elementtypen beaktas här. Skillnaden kan märkas i följande exempel:
    li:first-child – det första listobjektet kommer att väljas, men bara om li-elementet kommer först i det överordnade blocket. Om det finns en annan tagg före den kommer ingenting att väljas.
  6. li:first-of-type – det första listobjektet från allt som finns i den överordnade kommer att väljas. Det spelar ingen roll var de finns i koden. Jag hoppas att skillnaden är tydlig.
  7. :nth-last-child – fungerar på samma sätt som :nth-child, men räknas från det sista elementet, inte det första.
  8. :nth-last-of-type – liknande :nth-last-child, men med hänsyn till elementtypen.

Dessa är inte alla pseudoklasser, utan de mest populära och nödvändiga. Egentligen är alla pseudoklasser markerade på samma sätt i css, åtskilda av ett kolon. Dessutom kan du kombinera väljare och få intressanta funktioner:
a:visited:active – stilar för den redan besökta länken som klickas på.
div:first-child:hover – stilar för alla de första blocken i deras föräldrar som hålls över.

Som du kan se ger sådana väljare stora möjligheter när det gäller stylingelement. Använd dem så kan du enkelt nå vilka element som helst.

Kombinera väljare

En annan viktig regel du behöver känna till. Stilklassväljare kan skrivas utan att separera dem från varandra. Till exempel:
.class1.class2 – kommer att välja de element som har båda dessa klasser.
.class1.class3.class8 – kommer att välja element som alla tre stilklasserna är kopplade till.

Kapslade väljare

Om vi ​​skiljer väljare från varandra med mellanslag kan vi nå det element vi behöver. Exempel:
Tabell td – markerar alla celler i tabeller
Ul li a – väljer alla länkar som finns i listobjekt (och listobjekt ligger i sin tur i själva listorna)
.class1 p – kommer att välja alla stycken med attributet class = "class1"
.class2 p span – kommer att välja allt tagginnehåll , som ligger i stycken med klass klass2.

Du kan häcka och kombinera på detta sätt hur många gånger du vill. Exempel:
#header .logo span:first-letter()– väljer den första bokstaven i logotypen, som finns i rubriken
.class1.class2:hover() – kommer att definiera hovringsstilen för element som har båda stilklasserna.

Barnväljare

Om du behöver styla överordnade element som är DIREKT dotterbolag, då måste du skriva det så här:
Ul > li() – kommer att välja listobjekt som är kapslade direkt i den, och inte i andra taggar
P > a() – väljer bara de länkar i stycken som ligger direkt i dem och inte kapslade i andra taggar (som i sin tur redan är kapslade i stycken)
Exempel:

Om du skriver en väljare som denna P > a , kommer stilarna att tillämpas på länken i exemplet ovan? Nej, eftersom det fortfarande är kapslat i en annan tagg, det vill säga det är inte ett direkt underordnat.

Intilliggande väljare

Det sista vi ska titta på idag. Om du skriver det i css så här:
.class1 + .class4() , då väljer denna väljare elementet med attributet class = "class4" , och detta element måste visas i HTML-koden omedelbart efter elementet med klassen class1. Bara i det här fallet kommer allt att fungera. Låt oss titta på ett exempel igen:

Kommer väljaren ovan (.class1 + .class4()) att fungera? Nej, eftersom elementen inte ligger bredvid varandra. Mellan dem finns img-taggen. Om du tar bort det kommer allt att fungera.

Så vi har tittat på de mest grundläggande och enklaste väljarna. Denna kunskap kommer säkert att räcka för att du ska lösa 95% av problemen. I nästa artikel kommer jag att beskriva några mer specifika CSS-väljare.

Attributväljare

Låter dig välja specifika element utan att tilldela dem en stilklass eller identifierare.

Attributväljare är de väljare där ett attribut eller ett attribut med ett värde skrivs inom hakparenteser. Några exempel för att klargöra det:
* – väljer alla element som har ett href-attribut med valfritt värde.
input – väljer alla inmatningselement som har ett disable-attribut (alla inaktiverade fält).
input – väljer alla fält vars typ är lösenord , det vill säga fält för att ange ett lösenord.
img – väljer en bild som har src-attributet = "/logo.png" specificerat.

Som du kan se är det inte så svårt att skriva CSS-attributväljare. Deras viktigaste skillnad är hakparenteserna, där antingen bara ett attribut eller ett attribut med dess exakta värde skrivs. Men funktionaliteten hos dessa väljare slutar inte där.

Avancerade css-attributväljare

Alla följande väljare är skiftlägeskänsliga.
Sök i början av en rad
div – väljer alla div som har en stilklass som börjar med "block". Således kommer till exempel följande block att väljas: "block-head", "block-3", "blocknote" . Huvudsaken är att det finns ett nyckelord i början av betydelsen.

Hitta i slutet av en sträng
A – väljer alla länkar vars adress slutar på .rar. Således, om du kan ladda ner något på din webbplats, kan du lägga till en ikon bredvid alla länkar till arkiverade filer.

Att hitta en delsträng överallt i ett värde
span – kommer att välja alla span-taggar som har "art" i sitt klassnamn var som helst i namnet. Således kommer till exempel spann med följande klasser att väljas: party, clart, art-1.

Sök efter prefix
p – kommer att välja stycken med en stilklass som har ett namn som antingen exakt matchar "först" eller som innehåller prefixet först- som börjar klassnamnet.

Att hitta ord inom mening
inmatning– kommer att välja alla inmatningselement där värdet för identifieringsattributet innehåller ordet text . Det skiljer sig från att söka efter en delsträng överallt genom att det är ordet som måste inkluderas, inte delsträngen.

De två sista alternativen används sällan och kommer sannolikt inte att vara användbara för dig ofta, men för allmän utveckling kan du fortfarande känna till dem.

Vad är attributväljare användbara för?

Med hjälp av sådana väljare kan du välja många HTML-element utan att ge dem stilklasser. I vissa fall kan du med den här metoden förkorta koden och förenkla ditt arbete. Till exempel ovan gav jag ett exempel med en ikon för arkiv. Här dök en annan idé upp. Till exempel, på din webbplats länkar du ofta till en annan resurs (säg Wikipedia) och du vill visa en speciell ikon bredvid länkar till Wikipedia, som andra länkar inte borde ha.

Du kan implementera det så här:

A (css-regler)

Det finns faktiskt många fler sätt att använda attributväljare. De kan till viss del förenkla arbetet där det behövs. Använd css och prenumerera på bloggen för att lära dig mer om webbutveckling.

Css3-väljare och pseudoklasser

Om nya css3-väljare, som jag inte skrev om i tidigare artiklar.

Förbättrat arbete med formulär

Det här är nya pseudoklasser. I grund och botten handlar de alla om nya formers möjligheter.
:enabled – pseudoklassen kommer att välja alla aktiva fält. Det vill säga de där du kan skriva något eller åtminstone är läsbara.
:disabled är den motsatta pseudoklassen, väljer alla inaktiverade fält. Följaktligen kan du med dess hjälp lägga till ytterligare stilar till sådana fält.
:skrivskyddad – välj alla inmatning, som är skrivskyddade.
:read-write – väljer alla fält som är redigerbara.

Lägga till stilar med giltighet i åtanke

Det finns också mycket intressanta pseudoklasser med vilka du kan tilldela stilar beroende på giltigheten eller ogiltigheten av det angivna värdet. Tidigare kunde detta endast göras med JavaScript.
:valid – väljer alla fält där det angivna värdet uppfyller kraven. Själva kraven specificeras vanligtvis med mönsterattributet. Kan också bero på fälttypen. Till exempel kommer ett fält som innehåller en e-postadress att betraktas som ogiltigt om det inte finns något @ i det angivna värdet.
:invalid – väljer därför alla ogiltiga fält där värdet inte motsvarar vad som förväntas. Till exempel kan du göra texten färg i fält som detta rött:

Indata:ogiltig( Färg: röd;)

Om vi ​​nu skriver felaktiga värden i fälten blir texten röd. Följaktligen kan du också använda bilder av en bock och ett kryss för att visa användaren om han fyllt i allt korrekt.

Stilar för obligatoriska fält

Jag skulle också vilja notera att motsvarande pseudo-klass har dykt upp för obligatoriska fält.
:required – kommer att välja element som har detta attribut. Det vill säga att alla fält måste fyllas i.
:optional – den motsatta klassen, kommer att välja fält som är valfria.

Pseudo-klass: inte

:not är ett slags antiväljare som låter dig bestämma vilka element ANVÄND INTE stilar. Ett par exempel.
A:not(:last-child)() – kommer att välja alla länkar på sidan utom den sista.
.nav:not(li)() – kommer att välja alla element med klass nav, men dessa ska inte vara listobjekt (li).
#article p:not(.special:first-child) – kommer att välja alla stycken i artikelblocket utom det första stycket med specialklassen.

Som du kan se är ett villkor skrivet inom parentes för pseudoklassen: vad exakt behöver uteslutas från urvalet. Du kan också skriva kombinationsväljare i villkoret, så att du kan välja och utesluta vad du vill.

Det här är pseudoklassen som ibland behövs, den behövs inte bara i teorin, utan också i praktiken. Åh ja, du kan också fortsätta att komponera väljaren efter :not(). Till exempel:
Div:not(#header) .wrap – väljer alla div med wrap-klassen, förutom div med id = "header"

Dessa var väljare som introducerades i CSS3.

Prioritet för css-väljare

För att avgöra vilka stilar som har företräde, använd dessa enkla regler:
ID är den högsta prioritetsväljaren. Om ett element har en stilklass och ett id , och båda tilldelas samma egenskaper med olika värden, kommer stilarna som skrivs för id:t att exekveras.

Klassen är en väljare med högre prioritet än taggväljaren (p, table, ul). En pseudoklass har samma vikt som en enkel klass. p:first-line har företräde framför .firstline eftersom den andra väljaren bara är en klass, medan den första är en taggväljare + pseudoklass.

En annan användbar regel är att ju mer specifik väljaren är, desto mer prioriterade stilar är för den. Till exempel, mellan body och p, vinner stycket striden eftersom det är en mer specifik väljare än body (eftersom det är hela sidan, så inte särskilt specifik). Tabell p är i sin tur mer specifik än bara p . I allmänhet är det bara att vara medveten om dessa regler.

Slutsats

Den här artikeln täckte inte attributväljare, men i allmänhet har jag redan skrivit om dem tidigare. Jag önskar dig framgång med att lära dig webbplatsbyggande, inklusive CSS-väljare.

Jag skulle också vilja tillägga att om du använder jQuery så har den sina egna väljare, även om de är väldigt lika dessa, men det finns små skillnader.

Senaste uppdatering: 2016-04-21

Att definiera en stil börjar med en väljare. Till exempel:

Div( width:50px; /* width */ height:50px; /* höjd */ bakgrundsfärg:röd; /* bakgrundsfärg */ marginal: 10px; /* indrag från andra element */ )

I detta fall är väljaren div . Ett antal väljare ärver namnet på de formaterade elementen, till exempel div, p, h2, etc. När en sådan väljare är definierad kommer dess stil att tillämpas på alla element som matchar denna väljare. Det vill säga, den ovan definierade stilen kommer att tillämpas på alla element

på webbsidan:

CSS-väljare

CSS-väljare

Det finns 3 divs på sidan, och de kommer alla att utformas:

Klasser

Ibland kräver samma element olika styling. Och i det här fallet kan vi använda klasser.

För att definiera en klassväljare i CSS placeras en punkt före klassnamnet:

RedBlock( bakgrundsfärg:röd; )

Klassnamnet kan vara godtyckligt. Till exempel, i det här fallet är klassnamnet "redBlock". Det är dock tillåtet att använda bokstäver, siffror, bindestreck och understreck i klassnamnet och klassnamnet måste börja med en bokstav.

Det är också värt att överväga fallet med namn: namnen "artikel" och "ARTIKEL" kommer att representera olika klasser.

När en klass väl har definierats kan vi tillämpa den på ett element med hjälp av class-attributet. Till exempel:

Låt oss definiera och använda flera klasser:

CSS klasser

CSS klasser

Identifierare

För att identifiera element som är unika på en webbsida används identifierare, som bestäms med hjälp av id-attribut. En sida kan till exempel ha ett huvudblock eller en rubrik:

Att definiera stilar för identifierare liknar att definiera klasser, bara hash-symbolen # används istället för en punkt:

CSS-ID:n

Huvudinnehåll

Det är dock värt att notera att identifierare har mer att göra med webbsidans struktur och mindre med styling. Klasser används för styling snarare än identifierare.

Universalväljare

Förutom tagg-, klass- och identifieringsväljare har css även den så kallade universalväljare, som representerar asterisken (*). Den tillämpar stilar på alla element på HTML-sidan:

*(bakgrundsfärg: röd;)

Styla en grupp väljare

Ibland tillämpas vissa stilar på en rad väljare. Vi vill till exempel lägga en understrykning på alla rubriker. I det här fallet kan vi lista väljare för alla element separerade med kommatecken:

CSS-väljare

CSS3

Väljare

Väljargrupp

Lite text...

En väljargrupp kan innehålla både taggväljare och klass- och identifierareväljare, till exempel:

H1, #header, .redBlock( färg: röd; )







2024 gtavrl.ru.