CSS
väljare
Sök…
Introduktion
CSS-väljare identifierar specifika HTML-element som mål för CSS-stilar. Detta ämne täcker hur CSS-väljare riktar in sig på HTML-element. Väljarna använder ett brett utbud av över 50 urvalsmetoder som erbjuds av CSS-språket, inklusive element, klasser, ID: er, pseudo-element och pseudoklasser och mönster.
Syntax
- # id
- . klassnamn
- : pseudoklassnamn
- :: pseudo-elementnamn
- [ attr ] / * har atttr- attributet. * /
- [ attr = " värde "] / * har attr- attributet, och dess värde är exakt " värde ". * /
- [ attr ~ = " värde "] / * har atttr- attributet, och dess värde, när det är uppdelat på vitrummet , innehåller " värde ". * /
- [ attr | = " värde "] / * har atttr- attributet, och dess värde är exakt " värde ", eller dess värde börjar med " värde - ". * /
- [ attr ^ = " värde "] / * har atttr- attributet, och dess värde börjar med " värde ". * /
- [ attr $ = " värde "] / * har atttr- attributet, och dess värde slutar med " värde ". * /
- [ attr * = " värde "] / * har attr- attributet, och dess värde innehåller " värde ". * /
- elementnamn
- *
Anmärkningar
- Ibland kommer du att se dubbelt kolon (
::
) i stället för bara en (:
). Detta är ett sätt att skilja pseudoklasser från pseudo-element . - Gamla webbläsare som Internet Explorer 8, bara stödja en enda kolon (
:
) för att definiera pseudo-element. - Till skillnad från pseudoklasser, kan endast ett pseudo-element användas per väljare, om det finns måste det visas efter sekvensen med enkla väljare som representerar väljarens ämnen (en framtida version av W3C-specifikationen kan tillåta flera pseudo-element per väljare ).
Attributväljare
Översikt
Attributväljare kan användas med olika typer av operatörer som ändrar urvalskriterierna i enlighet därmed. De väljer ett element med närvaron av ett givet attribut eller attributvärde.
Väljare (1) | Matchat element | Väljer element ... | CSS-version |
---|---|---|---|
[attr] | <div attr> | Med attribut attr | 2 |
[attr='val'] | <div attr="val"> | Där attribut attr har värde val | 2 |
[attr~='val'] | <div attr="val val2 val3"> | Där val visas i whitespace-separerad lista med attr | 2 |
[attr^='val'] | <div attr="val1 val2"> | Där attr värde börjar med val | 3 |
[attr$='val'] | <div attr="sth aval"> | Där attr värde slutar med val | 3 |
[attr*='val'] | <div attr="somevalhere"> | Där attr innehåller val helst | 3 |
[attr|='val'] | <div attr="val-sth etc"> | Där attr värde är exakt val , eller börjar med val och omedelbart följt av - (U + 002D) | 2 |
[attr='val' i] | <div attr="val"> | Där attr har värde val , ignorerar val brevhölje. | 4 (2) |
Anmärkningar:
Attributvärdet kan omges av antingen enstaka citationstecken eller dubbla citationstecken. Inga offertar kanske också fungerar, men det är inte giltigt enligt CSS-standarden och är avskräckt.
Det finns ingen enda, integrerad CSS4-specifikation, eftersom den är uppdelad i separata moduler. Men det finns "nivå 4" -moduler. Se webbläsarsupport .
detaljer
[attribute]
Väljer element med det givna attributet.
div[data-color] {
color: red;
}
<div data-color="red">This will be red</div>
<div data-color="green">This will be red</div>
<div data-background="red">This will NOT be red</div>
[attribute="value"]
Väljer element med det givna attributet och värdet.
div[data-color="red"] {
color: red;
}
<div data-color="red">This will be red</div>
<div data-color="green">This will NOT be red</div>
<div data-color="blue">This will NOT be red</div>
[attribute*="value"]
Väljer element med det givna attributet och värdet där det givna attributet innehåller det givna värdet var som helst (som en substring).
[class*="foo"] {
color: red;
}
<div class="foo-123">This will be red</div>
<div class="foo123">This will be red</div>
<div class="bar123foo">This will be red</div>
<div class="barfooo123">This will be red</div>
<div class="barfo0">This will NOT be red</div>
[attribute~="value"]
Väljer element med det givna attributet och värdet där det givna värdet visas i en mellanrumsskild lista.
[class~="color-red"] {
color: red;
}
<div class="color-red foo-bar the-div">This will be red</div>
<div class="color-blue foo-bar the-div">This will NOT be red</div>
[attribute^="value"]
Väljer element med det givna attributet och värdet där det givna attributet börjar med värdet.
[class^="foo-"] {
color: red;
}
<div class="foo-123">This will be red</div>
<div class="foo-234">This will be red</div>
<div class="bar-123">This will NOT be red</div>
[attribute$="value"]
Väljer element med det givna attributet och värdet där det givna attributet slutar med det givna värdet.
[class$="file"] {
color: red;
}
<div class="foobar-file">This will be red</div>
<div class="foobar-file">This will be red</div>
<div class="foobar-input">This will NOT be red</div>
[attribute|="value"]
Väljer element med ett givet attribut och värde där attributets värde är exakt det givna värdet eller exakt det givna värdet följt av -
(U + 002D)
[lang|="EN"] {
color: red;
}
<div lang="EN-us">This will be red</div>
<div lang="EN-gb">This will be red</div>
<div lang="PT-pt">This will NOT be red</div>
[attribute="value" i]
Väljer element med ett givet attribut och värde där attributets värde kan representeras som Value
, VALUE
, vAlUe
eller någon annan VALUE
vAlUe
möjlighet.
[lang="EN" i] {
color: red;
}
<div lang="EN">This will be red</div>
<div lang="en">This will be red</div>
<div lang="PT">This will NOT be red</div>
Specificitet för attributväljare
0-1-0
Samma som klassväljare och pseudoklass.
*[type=checkbox] // 0-1-0
Observera att detta innebär att ett attributväljare kan användas för att välja ett element med dess ID på en lägre specificitetsnivå än om det valts med en ID-väljare : [id="my-ID"]
riktar mot samma element som #my-ID
men med lägre specificitet.
Se Syntaxavsnittet för mer information.
kombinatorer
Översikt
Väljare | Beskrivning |
---|---|
div span | Efterkommande väljare (alla <span> s som är ättlingar till en <div> ) |
div > span | Barnväljare (alla <span> s som är ett direkt barn till en <div> ) |
a ~ span | Allmän syskonväljare (alla <span> s som är syskon efter en <a> ) |
a + span | Angränsande syskonväljare (alla <span> s som är omedelbart efter en <a> ) |
Obs! Syskonväljare är inriktade på element som kommer efter dem i källdokumentet. CSS kan i sin natur (det kaskader) inte rikta in sig på tidigare eller överordnade element. Men med hjälp av flex
order
egendom, en tidigare syskon väljare kan simuleras på visuella medier .
Descendant Combinator: selector selector
En efterkommande kombinator, representerad av minst en rymdkaraktär ( ), väljer element som är en ättling till det definierade elementet. Denna kombinator väljer alla ättlingar till elementet (från barnelement på ner).
div p {
color:red;
}
<div>
<p>My text is red</p>
<section>
<p>My text is red</p>
</section>
</div>
<p>My text is not red</p>
I exemplet ovan väljs de första två <p>
-elementen eftersom de båda är ättlingar till <div>
.
Child Combinator: selector > selector
Barnet ( >
) -kombinatorn används för att välja element som är barn , eller direkt ättlingar , till det angivna elementet.
div > p {
color:red;
}
<div>
<p>My text is red</p>
<section>
<p>My text is not red</p>
</section>
</div>
Ovanstående CSS väljer endast det första <p>
-elementet, eftersom det är det enda stycket som härstammar direkt från en <div>
.
Det andra <p>
-elementet är inte valt eftersom det inte är ett direkt barn till <div>
.
Intilliggande syskon Combinator: selector + selector
Den intilliggande syskonkombinatorn ( +
) väljer ett syskonelement som omedelbart följer ett specificerat element.
p + p {
color:red;
}
<p>My text is not red</p>
<p>My text is red</p>
<p>My text is red</p>
<hr>
<p>My text is not red</p>
Exemplet ovan väljer endast de <p>
-element som direkt föregås av ett annat <p>
-element.
General Sibling Combinator: selector ~ selector
Den generella syskonkombinatorn ( ~
) väljer alla syskon som följer det angivna elementet.
p ~ p {
color:red;
}
<p>My text is not red</p>
<p>My text is red</p>
<hr>
<h1>And now a title</h1>
<p>My text is red</p>
Exemplet ovan väljer alla <p>
-element som föregås av ett annat <p>
-element, oavsett om de är direkt intill eller inte.
Klassnamnsväljare
Klassnamnsväljaren väljer alla element med det riktade klassnamnet. Till exempel skulle .warning
välja följande <div>
-element:
<div class="warning">
<p>This would be some warning copy.</p>
</div>
Du kan också kombinera klassnamn till målelement mer specifikt. Låt oss bygga på exemplet ovan för att visa upp ett mer komplicerat klassval.
CSS
.important {
color: orange;
}
.warning {
color: blue;
}
.warning.important {
color: red;
}
html
<div class="warning">
<p>This would be some warning copy.</p>
</div>
<div class="important warning">
<p class="important">This is some really important warning copy.</p>
</div>
I det här exemplet kommer alla element med klassen .warning
att ha en blå textfärg, element med klassen .important
med har en orange textfärg, och alla element som har både .important
och .warning
namn har en röd text Färg.
Observera att inom CSS hade .warning.important
deklarationen inte några utrymmen mellan de två klassnamnen. Detta innebär att det kommer bara att hitta element som innehåller både klassnamn warning
och important
i sin class
attribut. Dessa klassnamn kan vara i valfri ordning på elementet.
Om ett mellanslag inkluderades mellan de två klasserna i CSS-deklarationen, skulle det bara välja element som har överordnade element med ett .warning
och .important
element med .important
.
ID-väljare
ID-väljare väljer DOM-element med inriktat ID. För att välja ett element med ett specifikt ID i CSS används prefixet #
.
Till exempel följande HTML div
element ...
<div id="exampleID">
<p>Example</p>
</div>
... kan väljas av #exampleID
i CSS som visas nedan:
#exampleID {
width: 20px;
}
Obs! HTML-specifikationerna tillåter inte flera element med samma ID
Pseudo-klasser
Pseudoklasser är nyckelord som tillåter val baserat på information som ligger utanför dokumentträdet eller som inte kan uttryckas av andra väljare eller kombinatorer. Denna information kan vara associerade till en viss stat ( statliga och dynamiska pseudo-klasser), till platser ( strukturella och mål- pseudo-klasser), till negationer i fd ( negation pseudo klass) eller till språk ( lang pseudo klass). Exempel inkluderar huruvida en länk har följts eller inte ( :visited
), musen är över ett element ( :hover
), en kryssruta är markerad ( :checked
), etc.
Syntax
selector:pseudo-class {
property: value;
}
Lista över pseudoklasser:
namn | Beskrivning |
---|---|
:active | Gäller alla element som aktiveras (dvs. klickas) av användaren. |
:any | Tillåter dig att bygga uppsättningar med relaterade väljare genom att skapa grupper som medföljande objekt matchar. Detta är ett alternativ till att upprepa en hel väljare. |
:target | Väljer det aktuella aktiva #news-elementet (klickat på en URL som innehåller det ankarnamnet) |
:checked | Gäller radio, kryssruta eller alternativ som är markerade eller växlade till ett "på" tillstånd. |
:default | Representerar alla användargränssnittselement som är standard bland en grupp av liknande element. |
:disabled | Gäller alla UI-element som är i funktionshindrat tillstånd. |
:empty | Gäller alla element som inte har barn. |
:enabled | Gäller alla UI-element som är i ett aktiverat tillstånd. |
:first | Används i samband med @page regeln väljer detta den första sidan i a tryckt dokument. |
:first-child | Representerar alla element som är det första barnelementet i dess förälder. |
:first-of-type | Gäller när ett element är det första av den valda elementtypen inuti sin förälder. Detta kanske inte är det första barnet. |
:focus | Gäller alla element som har användarens fokus. Detta kan ges av användarens tangentbord, mushändelser eller andra former för inmatning. |
:focus-within | Kan användas för att markera ett helt avsnitt när ett element inuti det är fokuserat. Det matchar alla element som: fokus pseudoklass matchar eller som har en ättling fokuserad. |
:full-screen | Gäller alla element som visas i helskärmsläge. Den väljer hela stacken av element och inte bara toppnivån. |
:hover | Gäller alla element som svävas av användarens pekdon, men inte aktiverad. |
:indeterminate | Tillämpar UI-element för radio- eller kryssrutor som varken är markerade eller okontrollerade, men är i obestämd tillstånd. Detta kan bero på en elementets attribut eller DOM-manipulation. |
:in-range | Den :in-range CSS-pseudoklass matchar när ett element har dess attribut i det angivna intervallgränserna för detta element. Det gör att sidan kan ge en feedback om det värde som för närvarande är definierat att använda elementet ligger inom gränsvärdena. |
:invalid | Gäller <input> -element vars värden är ogiltiga enligt den typ som anges i type= attribut. |
:lang | Gäller alla element som förpackar <body> -elementet har ett korrekt betecknad lang= attribut. För att pseudoklassen ska vara giltig måste den innehålla en giltig två- eller trebokstavskod. |
:last-child | Representerar alla element som är det sista barnelementet i dess förälder. |
:last-of-type | Gäller när ett element är den sista av den valda elementtypen inuti dess förälder. Detta kanske inte är det sista barnet. |
:left | Används i samband med @page regeln, detta väljer alla vänster sidor i ett tryckt dokument. |
:link | Gäller alla länkar som inte har besökts av användaren. |
:not() | Gäller alla element som inte överensstämmer med det värde som skickas till ( :not(p) eller :not(.class-name) till exempel. Det måste ha ett värde som ska vara giltigt och det kan bara innehålla en väljare. Du kan dock kedja flera :not väljare tillsammans. |
:nth-child | Gäller när ett element är det n tionde elementet i dess överordnade, där n kan vara ett heltal, ett matematiskt uttryck (t.ex. n+3 ) eller nyckelorden odd eller even . |
:nth-of-type | Gäller när ett element är det n elementet i dess överordnade till samma elementtyp, där n kan vara ett heltal, en matematisk uttryck (t.ex. n+3 ) eller nyckelorden odd eller even . |
:only-child | CSS-pseudoklassen för :only-child representerar alla element vilket är dess enda förälder. Detta är samma sak som :first-child:last-child eller :nth-child(1):nth-last-child(1) , men med en lägre specificitet. |
:optional | Den :optional CSS-pseudoklass representerar alla element som inte har det nödvändiga attributet inställt på det. Det här tillåter formulär för att enkelt ange valfria fält och utforma dem i enlighet därmed. |
:out-of-range | Den :out-of-range CSS pseudoklass matchar när ett element har sitt värdeattribut utanför de angivna områdebegränsningarna för detta element. Det gör det möjligt för sidan att ge en feedback om det värde som för närvarande definieras med hjälp av elementet ligger utanför gränserna för intervall. Ett värde kan vara utanför ett intervall om det är det antingen mindre eller större än maximala och lägsta inställda värden. |
:placeholder-shown | Experimentell. Gäller alla formelement som för närvarande visar platshållare text. |
:read-only | Gäller alla element som inte kan redigeras av användaren. |
:read-write | Gäller alla element som kan redigeras av en användare, till exempel <input> -element. |
:right | Används i samband med @page regeln väljer detta alla rätt sidor i a tryckt dokument. |
:root | matchar rotelementet i ett träd som representerar dokumentet. |
:scope | CSS-pseudoklass matchar de element som är en referens poäng för väljare att matcha mot. |
:target | Väljer det aktuella aktiva #news-elementet (klickat på en URL som innehåller det ankarnamnet) |
:visited | Gäller alla länkar som har besökts av användaren. |
Den
:visited
pseudoklass kan inte användas för mest styling i många moderna webbläsare längre eftersom det är ett säkerhetshål. Se den här länken för referens.
Grundläggande väljare
Väljare | Beskrivning |
---|---|
* | Universalväljare (alla element) |
div | Taggväljare (alla <div> element) |
.blue | Klassväljare (alla element med blue ) |
.blue.red | Alla element med klass blue och red (en typ av sammansatt väljare) |
#headline | ID-väljare (elementet med "id" -attribut inställt på headline ) |
:pseudo-class | Alla element med pseudoklass |
::pseudo-element | Element som matchar pseudo-element |
:lang(en) | Element som matchar: lang deklaration, till exempel <span lang="en"> |
div > p | barnväljare |
Obs: Värdet på ett ID måste vara unikt på en webbsida. Det är en kränkning av HTML-standarden att använda värdet på ett ID mer än en gång i samma dokumentträd.
En komplett lista över väljare finns i CSS Selectors Level 3-specifikationen .
Så utformar du en intervallingång
html
<input type="range"></input>
CSS
Effekt | Pseudo-väljare |
---|---|
Tumme | input[type=range]::-webkit-slider-thumb, input[type=range]::-moz-range-thumb, input[type=range]::-ms-thumb |
Spår | input[type=range]::-webkit-slider-runnable-track, input[type=range]::-moz-range-track, input[type=range]::-ms-track |
onFocus | input[type=range]:focus |
Nedre delen av banan | input[type=range]::-moz-range-progress, input[type=range]::-ms-fill-lower (inte möjligt i WebKit-webbläsare för närvarande - JS behövs) |
Global booleska med kryssruta: kontrollerad och ~ (allmän syskombination)
Med ~ -väljaren kan du enkelt implementera en globalt tillgänglig boolean utan att använda JavaScript.
Lägg till boolean som kryssruta
Till början av ditt dokument lägger du till så mycket booleaner som du vill med en unik id
och den hidden
attributuppsättningen:
<input type="checkbox" id="sidebarShown" hidden />
<input type="checkbox" id="darkThemeUsed" hidden />
<!-- here begins actual content, for example: -->
<div id="container">
<div id="sidebar">
<!-- Menu, Search, ... -->
</div>
<!-- Some more content ... -->
</div>
<div id="footer">
<!-- ... -->
</div>
Ändra booleanernas värde
Du kan växla booleanen genom att lägga till en label
med for
attributuppsättningen:
<label for="sidebarShown">Show/Hide the sidebar!</label>
Få tillgång till booleskt värde med CSS
Den normala väljaren (som. .color-red
) anger standardegenskaperna. De kan åsidosättas genom att följa true
/ false
väljare:
/* true: */
<checkbox>:checked ~ [sibling of checkbox & parent of target] <target>
/* false: */
<checkbox>:not(:checked) ~ [sibling of checkbox & parent of target] <target>
Observera att <checkbox>
, [sibling ...]
och <target>
ska ersättas med rätt väljare. [sibling ...]
kan vara en specifik väljare, (ofta om du är lat) helt enkelt *
eller ingenting om målet redan är ett syskon till kryssrutan.
Exempel på ovanstående HTML-struktur skulle vara:
#sidebarShown:checked ~ #container #sidebar {
margin-left: 300px;
}
#darkThemeUsed:checked ~ #container,
#darkThemeUsed:checked ~ #footer {
background: #333;
}
I aktion
Se denna fiol för en implementering av dessa globala booleaner.
CSS3: Inom räckväljaren exempel
<style>
input:in-range {
border: 1px solid blue;
}
</style>
<input type="number" min="10" max="20" value="15">
<p>The border for this value will be blue</p>
CSS-pseudoklassen :in-range
matchar när ett element har sitt värdeattribut inom de angivna områdesbegränsningarna för detta element. Det gör att sidan kan ge en feedback om att det värde som för närvarande definieras med hjälp av elementet ligger inom gränserna för intervall. [1]
Child Pseudo Class
"The: nth-child (an + b) CSS pseudo-class matchar ett element som har ett + b-1 syskon före det i dokumentträdet, för ett givet positivt eller nollvärde för n" - MDN: nth-child
pseudo-väljare | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
---|---|---|---|---|---|---|---|---|---|---|
:first-child | ✔ | |||||||||
:nth-child(3) | ✔ | |||||||||
:nth-child(n+3) | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ||
:nth-child(3n) | ✔ | ✔ | ✔ | |||||||
:nth-child(3n+1) | ✔ | ✔ | ✔ | ✔ | ||||||
:nth-child(-n+3) | ✔ | ✔ | ✔ | |||||||
:nth-child(odd) | ✔ | ✔ | ✔ | ✔ | ✔ | |||||
:nth-child(even) | ✔ | ✔ | ✔ | ✔ | ✔ | |||||
:last-child | ✔ | |||||||||
:nth-last-child(3) | ✔ |
Välj element med dess ID utan ID-väljarens höga specificitet
Detta trick hjälper dig att välja ett element som använder ID som ett värde för en attributväljare för att undvika ID-väljarens höga specificitet.
HTML:
<div id="element">...</div>
CSS
#element { ... } /* High specificity will override many selectors */
[id="element"] { ... } /* Low specificity, can be overridden easily */
A. Exemplet: inte pseudoklass & B.: fokus inom CSS-pseudoklass
A. Syntaxen presenteras ovan.
Följande väljare matchar alla <input>
-element i ett HTML-dokument som inte är inaktiverade och inte har klassen .example
:
HTML:
<form>
Phone: <input type="tel" class="example">
E-mail: <input type="email" disabled="disabled">
Password: <input type="password">
</form>
CSS:
input:not([disabled]):not(.example){
background-color: #ccc;
}
Pseudoklassen :not()
stöder också kommaseparerade väljare i Selectors Level 4:
CSS:
input:not([disabled], .example){
background-color: #ccc;
}
Se bakgrundssyntax här .
B. Fokus inom CSS-pseudoklass
HTML:
<h3>Background is blue if the input is focused .</p>
<div>
<input type="text">
</div>
CSS:
div {
height: 80px;
}
input{
margin:30px;
}
div:focus-within {
background-color: #1565C0;
}
Exempel på väljarknapp för pseudoklass
CSS
pseudoklassen för :only-child
representerar alla element som är det enda barnet till dess förälder.
HTML:
<div>
<p>This paragraph is the only child of the div, it will have the color blue</p>
</div>
<div>
<p>This paragraph is one of the two children of the div</p>
<p>This paragraph is one of the two children of its parent</p>
</div>
CSS:
p:only-child {
color: blue;
}
Exemplet ovan väljer <p>
-elementet som är det unika barnet från dess förälder, i detta fall en <div>
.
Väljarens sista typ
Den :last-of-type
väljer elementet som är det sista barnet, av en viss typ, av dess förälder. I exemplet nedan väljer css det sista stycket och den sista rubriken h1
.
p:last-of-type {
background: #C5CAE9;
}
h1:last-of-type {
background: #CDDC39;
}
<div class="container">
<p>First paragraph</p>
<p>Second paragraph</p>
<p>Last paragraph</p>
<h1>Heading 1</h1>
<h2>First heading 2</h2>
<h2>Last heading 2</h2>
</div>