Bună, toți dezvoltatorii minunați de acolo! În această postare vom explora utilizarea :has()
în următorul tău proiect web. :has()
este relativ nou, dar a câștigat popularitate în comunitatea front end, oferind control asupra diferitelor elemente din interfața dvs. de utilizare. Să aruncăm o privire la ce este pseudo-clasa și cum o putem utiliza.
Sintaxă
:has()
Pseudoclasa CSS ajută la stilarea unui element dacă oricare dintre lucrurile pe care le căutăm în interiorul acestuia este găsit și luat în considerare. E ca și cum ai spune, „Dacă există ceva specific în această cutie, atunci stilați cutia în acest fel ȘI numai în acest fel.”
:has(<direct-selector>) {
/* ... */
}
Problema stilului
În anii trecuți, nu aveam nicio modalitate de a stila un element părinte bazat pe un copil direct al acelui părinte cu CSS sau un element bazat pe alt element. În șansa de a face asta, ar trebui să folosim ceva JavaScript și să comutăm clasele pe/dezactivate pe baza structurii HTML. :has()
rezolvat acea problema.
Să presupunem că aveți un element de nivel 1 de titlu (h1
) acesta este titlul unei postări sau ceva de acest fel pe pagina unei liste de blog, iar apoi aveți un titlu de nivel 2 (h2
) care îl urmează direct. Acest h2 ar putea fi un subtitlu pentru postare. Daca asta h2
este prezent, important și imediat după h1
, ați putea dori să scoateți în evidență acel h1. Înainte ar fi trebuit să scrieți o funcție JS.
Old School Way – JavaScript
const h1Elements = document.querySelectorAll('h1');
h1Elements.forEach((h1) => {
const h2Sibling = h1.nextElementSibling;
if (h2Sibling && h2Sibling.tagName.toLowerCase() === 'h2') {
h1.classList.add('highlight-content');
}
});
Această funcție JS caută toate h1-urile care au a h2
continuându-l și aplicând o clasă de evidențiere-conținut pentru a face h1
iasă în evidență ca un articol important.
Nou și îmbunătățit cu CSS-ul modern care vine în mod fierbinte! Capacitățile a ceea ce putem face în browser au parcurs un drum lung. Acum putem profita de CSS pentru a face lucruri pe care în mod tradițional am avea de-a face cu JavaScript, nu totul, ci unele lucruri.
New School Way – CSS
h1:has(+ h2) {
color: blue;
}
Aruncă niște :has() On It!
Acum puteți utiliza :has()
pentru a realiza același lucru pe care l-a făcut și funcția JS. Acest CSS verifică orice h1 și folosește combinator frate verificând un h2 care îl urmează imediat și adaugă culoarea de albastru textului. Mai jos sunt câteva cazuri de utilizare a când :has()
poate veni la îndemână.
:are Selector Exemplul 1
HTML
<h1>Lorem, ipsum dolor.</h1>
<h2>Lorem ipsum dolor sit amet.</h2>
<p>Lorem, ipsum dolor sit amet consectetur adipisicing elit. Eius, odio voluptatibus est vero iste ad?</p>
<h1>Lorem, ipsum dolor.</h1>
<h2>Lorem ipsum dolor sit amet.</h2>
<p>Lorem, ipsum dolor sit amet consectetur adipisicing elit. Eius, odio voluptatibus est vero iste ad?</p>
<h1>This is a test</h1>
<p>Lorem, ipsum dolor sit amet consectetur adipisicing elit. Eius, odio voluptatibus est vero iste ad?</p>
CSS
h1:has(+ h2) {
color: blue;
}
:are Selector Exemplul 2
De multe ori noi, ca lucrători de pe web, manipulăm sau lucrăm cu imagini. Am putea folosi instrumente care Cloudinar prevede utilizarea diferitelor transformări ale imaginilor noastre, dar de obicei dorim să adăugăm umbre, raze de margine și legende (a nu se confunda cu textul alternativ într-un atribut alt).
Exemplul de mai jos este folosit :has()
pentru a vedea dacă o figură sau o imagine are un element figcaption și dacă are, aplică un fundal și o rază de margine pentru a face imaginea să iasă în evidență.
HTML
<section>
<figure>
<img src="https://placedog.net/500/280" alt="My aunt sally's dog is a golden retreiver." />
<figcaption>My Aunt Sally's Doggo</figcaption>
</figure>
</section>
CSS
figure:has(figcaption) {
background: #c3baba;
padding: 0.6rem;
max-width: 50%;
border-radius: 5px;
}
:has()
care?
Pot sa Puteți vedea asta :has()
are un suport excelent în browserele moderne.
Datele de asistență ale acestui browser provin de la Pot folosi, care are mai multe detalii. Un număr indică faptul că browserul acceptă funcția la versiunea respectivă și mai sus.
Desktop
Chrome | Firefox | IE | Margine | Safari |
---|---|---|---|---|
105 | 121 | Nu | 105 | 15.4 |
Mobil/Tabletă
Android-chrome | Android Firefox | Android | Safari iOS |
---|---|---|---|
122 | 123 | 122 | 15.4 |
:has()
in comunitate!
Am contactat rețeaua mea pe Twitter pentru a vedea cum foloseau colegii mei :has()
în munca lor de zi cu zi și asta au avut de spus despre asta.
svg:has(> #Mail) {
stroke-width: 1;
}
Este grozav să vedem cum membrii comunității folosesc CSS modern pentru a rezolva problemele din lumea reală și, de asemenea, un strigăt pentru Abbey care îl folosește din motive de accesibilitate!
Lucruri de ținut minte
Există câteva puncte cheie de care trebuie să țineți cont atunci când utilizați :has()
Punctele marcante la care se face referire din MDN.
- Pseudo-clasa preia specificitatea celui mai specific selector în argumentul său
- În cazul în care
:has()
pseudo-clasa în sine nu este acceptată într-un browser, întregul bloc selector nu va eșua decât dacă:has()
se află într-o listă de selecție iertatoare, cum ar fi în:is()
și:where()
-
:has()
pseudo-clasa nu poate fi imbricata in alta:has()
- Pseudo-elementele nu sunt, de asemenea, selectoare valide în interior
:has()
iar pseudo-elementele nu sunt ancore valide pentru:has()
Concluzie
Valorificarea puterii CSS, inclusiv funcții avansate precum :has()
pseudo-clasă, ne dă putere să creăm experiențe web excepționale. Punctele forte ale CSS constă în cascada și specificitatea sa... cea mai bună parte, permițându-ne să-și valorificăm întregul potențial. Îmbrățișând capacitățile CSS, putem promova designul și dezvoltarea web, deblocând noi posibilități și creând interfețe de utilizator inovatoare.
Link-uri:
- Distribuție de conținut bazat pe SEO și PR. Amplifică-te astăzi.
- PlatoData.Network Vertical Generative Ai. Împuterniciți-vă. Accesați Aici.
- PlatoAiStream. Web3 Intelligence. Cunoștințe amplificate. Accesați Aici.
- PlatoESG. carbon, CleanTech, Energie, Mediu inconjurator, Solar, Managementul deșeurilor. Accesați Aici.
- PlatoHealth. Biotehnologie și Inteligență pentru studii clinice. Accesați Aici.
- Sursa: https://css-tricks.com/the-power-of-has-in-css/
- :are
- :este
- :nu
- $UP
- 09
- 1
- 11
- 12
- 13
- 16
- 22
- 27
- 31
- 3
- 7
- 8
- 9
- 91
- 98
- a
- Despre Noi
- despre
- accesibilitate
- reprezentat
- Obține
- peste
- Ad
- adăuga
- Adaugă
- avansat
- Avantaj
- După
- împotriva
- TOATE
- Permiterea
- de asemenea
- alternativă
- an
- ancorat
- și
- Android
- O alta
- Orice
- se aplică
- Aplicarea
- SUNT
- argument
- articol
- AS
- At
- fundal
- bazat
- BE
- deoarece
- înainte
- de mai jos
- CEL MAI BUN
- Bloca
- Blog
- Albastru
- frontieră
- Cutie
- browser-ul
- browsere
- Clădire
- dar
- by
- CAN
- nu poti
- capacități
- legende
- cascadă
- cazuri
- șansă
- control
- copil
- Chrome
- clasă
- clase
- culoare
- cum
- venire
- comunitate
- concluzie
- confuz
- Control
- ar putea
- Cuplu
- ambarcaţiunilor
- Crearea
- CSS
- de date
- zi
- zilnic
- livrarea
- Amenajări
- detaliu
- detecta
- Dezvoltatorii
- Dezvoltare
- FĂCUT
- direcționa
- direct
- do
- document
- face
- Câine
- conduce
- Picătură
- Margine
- element
- element
- îmbrățișare
- imputerniceste
- capăt
- Întreg
- tot
- exemplu
- excepțional
- Experiențe
- explicație
- explora
- FAIL
- Caracteristică
- DESCRIERE
- puțini
- Figura
- Găsi
- Firefox
- următor
- urmează
- alimente
- Pentru
- Înainte
- găsit
- din
- faţă
- În față
- Complet
- funcţie
- funcțional
- funcționalitate
- dobândită
- merge
- De aur
- mare
- inovatoare
- HAD
- la indemana
- Avea
- Rubrică
- ajută
- Înalt
- subliniind
- Cum
- HTML
- http
- HTTPS
- i
- ie
- if
- imagine
- imagini
- imediat
- important
- îmbunătățit
- in
- Inclusiv
- indică
- în interiorul
- interfeţe
- în
- iOS
- IT
- ESTE
- în sine
- JavaScript
- A pastra
- Cheie
- Nume
- cel mai puțin
- Nivel
- Pârghie
- minciună
- ca
- Listă
- Lung
- Uite
- cautati
- Lot
- face
- manipulant
- Meci
- max-width
- Membri actuali
- ar putea
- minte
- Modern
- mai mult
- cele mai multe
- Mozilla
- my
- Natură
- Nevoie
- necesar
- reţea
- Nou
- următor
- Nu.
- acum
- număr
- of
- on
- ONE
- afară
- or
- al nostru
- afară
- peste
- pachet
- pagină
- parte
- parte
- Trecut
- trecut
- colegii
- Plato
- Informații despre date Platon
- PlatoData
- puncte
- popularitate
- posibilităţile de
- Post
- potenţial
- putere
- prezenta
- cadouri
- precedent
- Problemă
- probleme
- proiect
- furnizează
- atins
- real
- lumea reală
- referință
- referință
- relativ
- relativ
- reprezintă
- respect
- robust
- s
- Safari
- Siguranţă
- acelaşi
- Spune
- spunând
- Şcoală
- căutare
- vedea
- selectarea
- sta
- So
- soluţie
- REZOLVAREA
- unele
- ceva
- specific
- specificitate
- stand
- Statele
- puncte forte
- structura
- stil
- astfel de
- a sustine
- Suportat
- Sprijină
- SVG
- sintaxă
- Lua
- ia
- luare
- Tehnologii
- a) Sport and Nutrition Awareness Day in Manasia Around XNUMX people from the rural commune Manasia have participated in a sports and healthy nutrition oriented activity in one of the community’s sports ready yards. This activity was meant to gather, mainly, middle-aged people from a Romanian rural community and teach them about the benefits that sports have on both their mental and physical health and on how sporting activities can be used to bring people from a community closer together. Three trainers were made available for this event, so that the participants would get the best possible experience physically and so that they could have the best access possible to correct information and good sports/nutrition practices. b) Sports Awareness Day in Poiana Țapului A group of young participants have taken part in sporting activities meant to teach them about sporting conduct, fairplay, and safe physical activities. The day culminated with a football match.
- acea
- lor
- apoi
- ei
- lucru
- lucruri
- acest
- timp
- ori
- Titlu
- la
- Unelte
- tradiţional
- transformări
- copac
- adevărat
- Cotitură
- stare de nervozitate
- ui
- dacă nu
- deblocare
- us
- utilizare
- utilizat
- Utilizator
- folosind
- obișnuit
- folosi
- valabil
- diverse
- versiune
- Vizualizare
- vs
- vrea
- a fost
- Cale..
- we
- web
- au fost
- Ce
- cand
- care
- voi
- cu
- în
- minunat
- Apartamente
- muncitorii
- de lucru
- lume
- ar
- scrie
- ani
- încă
- Tu
- Ta
- zephyrnet