Hallitse CSS:n mukautettujen korostusten kaskadia tarkkaan tekstinvalinnan muotoiluun. Opi ::selection, ::highlight ja esimerkit sekä prioriteettisäännöt.
CSS:n mukautettujen korostusten kaskadi: Tekstin valinnan prioriteetin hallinta
Verkkoselainten oletusarvoinen tekstinvalinnan korostus on usein yksinkertainen sininen tausta valkoisella tekstillä. Vaikka se on toimiva, se ei välttämättä sovi verkkosivustosi brändiin tai saavutettavuusvaatimuksiin. Onneksi CSS tarjoaa tehokkaita työkaluja tekstinvalinnan korostusten mukauttamiseen, joiden avulla voit luoda visuaalisesti miellyttävän ja käyttäjäystävällisen kokemuksen. Tässä kirjoituksessa syvennytään CSS:n mukautettujen korostusten kaskadiin, tutkitaan saatavilla olevia eri tekniikoita ja niiden prioriteetin hallintaa halutun lopputuloksen saavuttamiseksi. Käsittelemme standardia ::selection-pseudo-elementtiä, edistyneempää ::highlight-pseudo-elementtiä sekä mukautettujen korostusten määrittelyä, keskittyen niiden toimintaa ohjaaviin kaskadi- ja spesifisyyssääntöihin.
Perusteiden ymmärtäminen: ::selection-pseudo-elementti
::selection-pseudo-elementti on tekstinvalinnan muotoilun perusta CSS:ssä. Se mahdollistaa valitun tekstin ulkoasun muokkaamisen elementin sisällä. Sillä on laaja tuki nykyaikaisissa selaimissa ja se tarjoaa yksinkertaisen tavan mukauttaa valitun tekstin taustaväriä, tekstin väriä ja muita perusominaisuuksia.
::selection-elementin peruskäyttö
Käyttääksesi ::selection-elementtiä, kohdistat sen CSS-säännöllä ja määrität haluamasi tyylit. Esimerkiksi, jos haluat muuttaa taustavärin keltaiseksi ja tekstin värin mustaksi, kun tekstiä valitaan, käyttäisit seuraavaa CSS:ää:
::selection {
background-color: yellow;
color: black;
}
Tämä sääntö koskee kaikkia tekstinvalintoja koko verkkosivustollasi. Jos haluat kohdistaa sen tiettyihin elementteihin, voit käyttää tarkempia valitsimia:
p::selection {
background-color: lightgreen;
color: darkgreen;
}
Tämä sääntö vaikuttaa vain <p> (kappale) -elementtien sisällä oleviin tekstinvalintoihin.
::selection-elementin rajoitukset
Vaikka ::selection on hyödyllinen työkalu, sillä on rajoituksensa. Se mahdollistaa pääasiassa perusominaisuuksien, kuten background-color ja color, muokkaamisen. Monimutkaisempia muotoiluvaihtoehtoja, kuten liukuvärien tai varjojen käyttöä, ei tueta suoraan. Lisäksi ::selection ei tarjoa mekanismia useiden, päällekkäisten ja eri tyyleillä varustettujen korostusten luomiseen. Tässä kohtaa ::highlight-pseudo-elementti astuu kuvaan.
Esittelyssä ::highlight: Tehokkaampi vaihtoehto
::highlight-pseudo-elementti on uudempi lisäys CSS:ään, joka tarjoaa enemmän joustavuutta ja hallintaa tekstinvalinnan korostuksiin. Se mahdollistaa nimettyjen korostusten määrittelyn, jolloin voit soveltaa eri tyylejä valitun tekstin eri osiin. Tämä on erityisen hyödyllistä monimutkaisissa asetteluissa tai kun haluat erottaa erityyppistä sisältöä valinnan sisällä.
Nimettyjen korostusten määrittely highlight-name-ominaisuudella
Avain ::highlight-elementin käyttöön on highlight-name-ominaisuus. Tämän ominaisuuden avulla voit antaa nimen tietylle korostukselle, jonka voit sitten kohdistaa CSS-säännöillä. Käyttääksesi ::highlight-elementtiä, sinun on ensin määriteltävä nimetty korostus JavaScriptillä. Tämä johtuu siitä, että CSS itse ei voi määritellä uutta korostuksen nimeä; se voi ainoastaan *muotoilla* selaimen jo luomia korostuksia. Tässä on esimerkki:
// JavaScript:
CSS.registerProperty({
name: '--my-custom-highlight',
syntax: '<color>',
inherits: false,
initialValue: 'transparent',
});
Tämä JavaScript-koodi rekisteröi CSS:n mukautetun ominaisuuden nimeltä --my-custom-highlight, joka hyväksyy väriarvoja eikä periydy. Tämä on välttämätön vaihe ennen korostuksen muotoilua. Nyt voit käyttää CSS:ää korostuksen soveltamiseen:
::highlight(my-custom-highlight) {
background-color: rgba(255, 0, 0, 0.3);
color: white;
}
Tämä CSS-sääntö kohdistuu "my-custom-highlight"-nimiseen korostukseen ja soveltaa siihen punaisen taustan 30 %:n peittävyydellä ja valkoisen tekstin. Huomaa rgba-funktion käyttö läpinäkyvyyden saavuttamiseksi. Sinun on luotava nimi (kuten `my-custom-highlight`) ja viitattava siihen CSS:ssä `::highlight(my-custom-highlight)`-valitsimella.
Korostusten soveltaminen JavaScriptillä
Jotta voimme nyt soveltaa korostusta verkkosivullamme, käytämme JavaScriptiä. Tämä tehdään tyypillisesti käärimällä korostettava tekstinosa <span>-tagiin ja antamalla sille highlight-name-tyyli:
<p>This is some <span style="--highlight: my-custom-highlight;">important</span> text.</p>
Tässä esimerkissä sana "important" korostetaan tyyleillä, jotka on määritelty "my-custom-highlight"-nimelle. Toinen esimerkki voisi olla:
<p>This is <span style="--highlight: warning-highlight;">a warning message</span> that needs attention.</p>
Jossa 'warning-highlight' vastaa nimeä, jonka rekisteröit CSS.registerProperty-funktiolla ja jota käytit ::highlight(warning-highlight) CSS-lohkossa.
::highlight-elementin edut
- Useita korostuksia: Voit määritellä useita nimettyjä korostuksia ja soveltaa niitä tekstin eri osiin.
- Hienojakoinen hallinta: Voit kohdistaa tiettyihin tekstin osiin erilaisia korostustyylejä.
- Semanttinen korostus: Voit käyttää korostuksia merkityksen välittämiseen, kuten virheiden tai varoitusten korostamiseen.
CSS-korostuskaskadin ymmärtäminen: Prioriteetti ja spesifisyys
Kun samaan tekstiin sovelletaan useita korostustyylejä, CSS-kaskadi määrittää, mikä tyyli on etusijalla. Kaskadi on sääntöjoukko, jota selaimet käyttävät ristiriitojen ratkaisemiseen eri CSS-sääntöjen välillä. Kaskadin ymmärtäminen on ratkaisevan tärkeää mukautettujen korostustyylien hallinnassa ja sen varmistamisessa, että halutut tyylit sovelletaan oikein.
Etusijajärjestys
CSS-kaskadi noudattaa tiettyä etusijajärjestystä, joka voidaan tiivistää seuraavasti (matalimmasta korkeimpaan prioriteettiin):
- Selaimen tyylit: Selaimen oletustyylit.
- Käyttäjän tyylit: Käyttäjän määrittämät tyylit (esim. selainlaajennusten kautta).
- Tekijän tyylit: Verkkosivuston kehittäjän määrittämät tyylit (sinun CSS:si).
- !important-tekijän tyylit: Verkkosivuston kehittäjän
!important-avainsanalla määrittämät tyylit. - !important-käyttäjän tyylit: Käyttäjän
!important-avainsanalla määrittämät tyylit.
Jokaisella näistä tasoista spesifisyydellä on ratkaiseva rooli. Spesifisyys viittaa CSS-valitsimen painoarvoon tai tärkeyteen. Tarkemmat valitsimet ohittavat vähemmän tarkat valitsimet.
Spesifisyyssäännöt
Spesifisyys lasketaan seuraavien sääntöjen perusteella:
- Sisäiset tyylit (inline): Suoraan HTML-elementtiin
style-attribuutilla määritellyillä tyyleillä on korkein spesifisyys. - ID:t: Valitsimilla, jotka kohdistuvat elementteihin niiden ID:n perusteella (esim.
#my-element), on korkea spesifisyys. - Luokat, pseudo-luokat ja attribuutit: Valitsimilla, jotka kohdistuvat elementteihin niiden luokan (esim.
.my-class), pseudo-luokkien (esim.:hover) tai attribuuttien (esim.[type="text"]) perusteella, on keskitason spesifisyys. - Elementit ja pseudo-elementit: Valitsimilla, jotka kohdistuvat elementteihin niiden tag-nimen (esim.
p) tai pseudo-elementtien (esim.::selection,::highlight) perusteella, on matala spesifisyys. - Yleisvalitsin: Yleisvalitsimella (
*) on matalin spesifisyys.
Kun samaan elementtiin sovelletaan useita valitsimia, selain laskee kunkin valitsimen spesifisyyden ja soveltaa tyyliä valitsimelta, jolla on korkein spesifisyys. Jos kahdella valitsimella on sama spesifisyys, sovelletaan sitä tyyliä, joka esiintyy myöhemmin CSS-tyylitiedostossa.
Spesifisyyden soveltaminen korostustyyleihin
Kun työskennellään mukautettujen korostustyylien kanssa, spesifisyys on erityisen tärkeää, koska saatat käyttää sekä ::selection- että ::highlight-elementtejä, mahdollisesti yhdessä sisäisten tyylien kanssa. Tässä on, miten spesifisyysnäkökohdat voivat vaikuttaa:
::selectionvs.::highlight:::highlight-elementtiä pidetään yleensä *tarkempana* kuin::selection-elementtiä. Tämä tarkoittaa, että jos sekä::selection- että::highlight-säännöt koskevat samaa tekstiä,::highlight-säännöt ovat tyypillisesti etusijalla.- Sisäiset tyylit (inline): Kuten aina, sisäiset tyylit (käyttämällä
style-attribuuttia suoraan HTML-elementissä) ohittavat sekä::selection- että::highlight-tyylit, ellei!important-avainsanaa käytetä. - Valitsimen spesifisyys:
::highlight-elementin kanssa käytettyjen valitsimien spesifisyys voi edelleen vaikuttaa lopputulokseen. Esimerkiksip::highlight(my-highlight)on tarkempi kuin pelkkä::highlight(my-highlight)ja on etusijalla, jos molemmat soveltuvat.
Esimerkkejä spesifisyydestä käytännössä
Havainnollistetaan tätä muutamalla esimerkillä:
/* CSS */
::selection {
background-color: blue;
color: white;
}
::highlight(my-highlight) {
background-color: red;
color: yellow;
}
<p>This is some <span style="--highlight: my-highlight;">important</span> text.</p>
Tässä tapauksessa, kun käyttäjä valitsee tekstin, "my-highlight"-merkityllä osalla on punainen tausta ja keltainen teksti, koska ::highlight(my-highlight)-sääntö on tarkempi ja ohittaa yleisen ::selection-säännön kyseiselle span-elementille.
Tarkastellaan toista esimerkkiä:
/* CSS */
::selection {
background-color: blue;
color: white;
}
p::selection {
background-color: green;
color: black;
}
<p>This is some text.</p>
Tässä, jos käyttäjä valitsee tekstiä <p>-tagin sisältä, sillä on vihreä tausta ja musta teksti. p::selection-valitsin on tarkempi kuin globaali ::selection-valitsin.
Strategioita korostuskaskadin hallintaan
Jotta voit tehokkaasti hallita korostuskaskadia ja varmistaa, että mukautetut korostustyylisi sovelletaan tarkoitetulla tavalla, harkitse seuraavia strategioita:
1. Käytä tarkkoja valitsimia
Käytä tarkkoja valitsimia kohdistaaksesi tyylit haluamiisi elementteihin. Esimerkiksi sen sijaan, että käyttäisit globaalia ::selection-sääntöä, kohdista se tiettyihin elementteihin tai verkkosivustosi osiin käyttämällä tarkempia valitsimia, kuten .my-section::selection tai #my-element::selection.
2. Hyödynnä highlight-name-ominaisuutta
Käytä aina kun mahdollista highlight-name-ominaisuutta ::highlight-elementin kanssa nimettyjen korostusten määrittelyyn. Tämä mahdollistaa tiettyjen tekstinosien kohdistamisen ja erilaisten tyylien soveltamisen niiden semanttisen merkityksen tai kontekstin perusteella.
3. Vältä !important-avainsanaa (yleensä)
Vaikka !important-avainsanan käyttö voi olla houkuttelevaa, sitä tulisi välttää aina kun mahdollista. !important-sanan käyttö voi tehdä CSS:stä vaikeammin ylläpidettävää ja johtaa odottamattomiin ristiriitoihin. Keskity sen sijaan käyttämään spesifisyyttä kaskadin hallintaan.
4. Järjestä CSS-koodisi
Järjestä CSS-koodisi loogisella ja johdonmukaisella tavalla. Käytä kommentteja koodisi dokumentoimiseen ja ryhmittele toisiinsa liittyvät tyylit yhteen. Tämä helpottaa CSS:n ymmärtämistä ja ylläpitoa.
5. Testaa perusteellisesti
Testaa mukautetut korostustyylisi perusteellisesti eri selaimilla ja laitteilla. Eri selaimilla voi olla hieman erilaisia toteutuksia CSS-kaskadista, joten on tärkeää varmistaa, että tyylisi soveltuvat johdonmukaisesti kaikilla alustoilla.
6. Huomioi saavutettavuus
Huomioi aina saavutettavuus suunnitellessasi mukautettuja korostustyylejä. Varmista, että valitsemasi värit tarjoavat riittävän kontrastin tekstin ja taustan välillä. Vältä myös tyylejä, jotka voivat olla häiritseviä tai hämmentäviä käyttäjille, joilla on kognitiivisia vammoja.
Saavutettavuusnäkökohdat
Tekstinvalinnan korostusten mukauttaminen voi parantaa merkittävästi käyttäjäkokemusta, mutta on ratkaisevan tärkeää priorisoida saavutettavuus. Huonosti suunnitellut korostukset voivat vaikeuttaa sisällön lukemista ja ymmärtämistä käyttäjille, joilla on näkö- tai kognitiivisia vammoja.
Värikontrasti
Varmista, että tekstin ja taustan välinen kontrasti on riittävä. Web Content Accessibility Guidelines (WCAG) suosittelee vähintään 4.5:1 kontrastisuhdetta normaalille tekstille ja 3:1 suurikokoiselle tekstille. Käytä verkkotyökaluja korostusväriesi kontrastisuhteen tarkistamiseen.
Vältä vilkkuvia tai välkkyviä tehosteita
Vältä vilkkuvien tai välkkyvien tehosteiden käyttöä korostustyyleissäsi. Nämä tehosteet voivat olla häiritseviä ja laukaista kohtauksia käyttäjillä, joilla on valoherkkä epilepsia.
Tarjoa selkeät visuaaliset vihjeet
Varmista, että korostustyylit antavat selkeän visuaalisen vihjeen siitä, että teksti on valittu. Vältä tyylejä, jotka voivat olla epäselviä tai hämmentäviä. Vältä esimerkiksi taustavärejä, jotka ovat liian samankaltaisia oletustaustavärin kanssa.
Testaa avustavilla teknologioilla
Testaa mukautetut korostustyylisi avustavilla teknologioilla, kuten ruudunlukijoilla. Varmista, että ruudunlukija ilmoittaa valitun tekstin oikein ja että korostustyylit eivät häiritse käyttäjän kykyä navigoida ja ymmärtää sisältöä.
Kansainvälistämisen ja lokalisoinnin näkökohdat
Kehitettäessä verkkosivustoja maailmanlaajuiselle yleisölle on tärkeää ottaa huomioon kansainvälistäminen (i18n) ja lokalisointi (l10n). Tämä sisältää verkkosivuston sisällön ja suunnittelun mukauttamisen eri kieliin, kulttuureihin ja alueisiin.
Tekstin suunta
Ole tietoinen erilaisista tekstin suunnista. Jotkut kielet, kuten arabia ja heprea, kirjoitetaan oikealta vasemmalle (RTL). Varmista, että mukautetut korostustyylisi toimivat oikein sekä vasemmalta oikealle (LTR) että oikealta vasemmalle (RTL) -suuntaisissa teksteissä. CSS:n loogiset ominaisuudet (esim. `margin-inline-start`, `border-inline-end`) voivat olla tässä hyödyllisiä.
Kulttuurierot
Ole tietoinen kulttuurieroista valitessasi korostusvärejä. Väreillä voi olla eri merkityksiä eri kulttuureissa. Esimerkiksi punainen väri voi symboloida onnea yhdessä kulttuurissa ja vaaraa toisessa. Tutki värien kulttuurista merkitystä verkkosivustosi kohdemarkkinoilla.
Fonttituki
Varmista, että valitsemasi fontit tukevat eri kielissä käytettyjä merkkejä ja glyyfejä. Käytä Unicode-fontteja, jotka tukevat laajaa valikoimaa merkkejä. Harkitse myös varafonttistrategioiden käyttöä varmistaaksesi, että verkkosivustosi teksti näkyy oikein, vaikka käyttäjän laitteessa ei olisi asennettuna vaadittuja fontteja.
Käytännön esimerkkejä ja käyttötapauksia
Tutustutaan muutamiin käytännön esimerkkeihin ja käyttötapauksiin CSS:n mukautetulle korostuskaskadille:
1. Semanttinen korostus koodille
Voit käyttää mukautettuja korostuksia korostamaan erilaisia koodielementtejä, kuten avainsanoja, muuttujia ja kommentteja. Tämä voi helpottaa käyttäjien koodinpätkien lukemista ja ymmärtämistä.
/* CSS */
::highlight(keyword) {
color: #0077cc;
}
::highlight(variable) {
color: #cc0077;
}
::highlight(comment) {
color: #666666;
font-style: italic;
}
<pre><code>
<span style="--highlight: keyword;">function</span> <span style="--highlight: variable;">greet</span>(<span style="--highlight: variable;">name</span>) {
<span style="--highlight: comment;">// Tämä on kommentti</span>
console.log("Hello, " + <span style="--highlight: variable;">name</span> + "!");
}
</code></pre>
2. Hakutermien korostaminen
Voit käyttää mukautettuja korostuksia hakutermien korostamiseen hakutuloksissa. Tämä auttaa käyttäjiä nopeasti tunnistamaan ne tekstin osat, jotka ovat heidän hakukyselynsä kannalta olennaisia.
/* CSS */
::highlight(search-term) {
background-color: yellow;
color: black;
}
<p>This is a <span style="--highlight: search-term;">search</span> result that contains the <span style="--highlight: search-term;">search</span> term.</p>
3. Pakollisten kenttien osoittaminen lomakkeissa
Voit käyttää mukautettuja korostuksia osoittamaan pakolliset kentät lomakkeissa. Tämä auttaa käyttäjiä nopeasti tunnistamaan ne kentät, jotka heidän on täytettävä ennen lomakkeen lähettämistä.
/* CSS */
::highlight(required) {
background-color: #ffeeee;
border: 1px solid red;
}
<label for="name">Name:</label>
<input type="text" id="name" <span style="--highlight: required;">required</span><br>
Yhteenveto
CSS:n mukautettu korostuskaskadi tarjoaa tehokkaita työkaluja tekstinvalinnan korostusten mukauttamiseen ja visuaalisesti miellyttävän sekä käyttäjäystävällisen kokemuksen luomiseen. Ymmärtämällä CSS-kaskadin, spesifisyyssäännöt sekä ::selection- ja ::highlight-elementtien ominaisuudet, voit tehokkaasti hallita korostustyylejä ja varmistaa, että ne soveltuvat tarkoitetulla tavalla. Muista ottaa huomioon saavutettavuus ja kansainvälistäminen suunnitellessasi mukautettuja korostustyylejä, jotta voit luoda verkkosivuston, joka on osallistava ja saavutettavissa maailmanlaajuiselle yleisölle. Suunnittelemalla huolellisesti ::selection- ja ::highlight-elementtien käytön yhdessä semanttisen HTML:n ja CSS:n mukautettujen ominaisuuksien kanssa, voit saavuttaa juuri haluamasi korostustehosteen, parantaen sekä verkkosivujesi käytettävyyttä että visuaalista ilmettä. Näiden CSS-ominaisuuksien tarjoama joustavuus mahdollistaa räätälöidyn ja intuitiivisen käyttäjäkokemuksen luomisen, tehden sisällöstäsi kiinnostavampaa ja saavutettavampaa.