Junior
რა იცით CSS-ის სელექტორების სპეციფიკობაზე?
sobes.tech AI
პასუხი AI-სგან
სპეციფიკაობა განსაზღვრავს CSS-ის წესების პრიორიტეტს მათი კონფლიქტის დროს, როდესაც ერთ ელემენტზე სხვადასხვა სტილები ვრცელდება. ის გამოითვლება თითოეულ სელექტორზე წესში.
სპეციფიკაობა არის რიცხვითი შეფასება, რომელიც შედგება ოთხ კატეგორიად (A, B, C, D), დაწერილი როგორც 0,0,0,0. რაც უფრო დიდი რიცხვია, მით უფრო მაღალია სპეციფიკაცია.
კატეგორიები:
- A (inline სტილი): სტილები, რომლებიც მითითებულია
styleატრიბუტით HTML ელემენტში. აქვთ უმაღლესი სპეციფიკაცია (მაგალითად,1,0,0,0). - B (ID): ID-ის მიხედვით სელექტორები (მაგალითად,
#my-id). ზრდიან მეორე ციფრს (მაგალითად,0,1,0,0). - C (კლასი, ატრიბუტი, პსევდოკლასი): კლასი (მაგალითად,
.my-class), ატრიბუტი (მაგალითად,[type="text"]), პსევდოკლასი (მაგალითად,:hover,:first-child). ზრდიან მესამე ციფრს (მაგალითად,0,0,1,0). - D (ელემენტი, პსევდოელემენტი): HTML ტეგის სელექტორები (მაგალითად,
div,p) და პსევდოელემენტები (მაგალითად,::before,::after). ზრდიან მეოთხე ციფრს (მაგალითად,0,0,0,1).
სათაური გამოთვლა:
p-0,0,0,1.my-class-0,0,1,0#my-id-0,1,0,0div p-0,0,0,2(ორივე ტეგის ჯამური სპეციფიკაცია)#my-id .my-class-0,1,1,0(ID და კლასი ჯამში)div#my-id.my-class:hover-0,1,2,1(ტეგი, ID, კლასი და პსევდოკლასი ჯამში)
წესები:
inline styleსპეციფიკაცია ყოველთვის მაღალია ნებისმიერი სხვა სელექტორის კომბინაციაზე, გარდა!importantნიშნით მითითებული წესების.- წესები
!importantნიშნით უმაღლეს პრიორიტეტს ფლობენ, მათ eveninline-საც გადააწყვეტენ. გამოყენება!importantარ არის რეკომენდებული, რადგან რთულდება დათვალიერება. - ერთნაირი სპეციფიკაციით, გამოიყენება ბოლო დადგენილი წესის პრიორიტეტი.
- უნივერსალური სელექტორი (
*) და:where()პსევდოკლასი არ ზრდიან სპეციფიკაციას და არ ახდენენ გავლენას საერთო სპეციფიკაციაზე.
/*
სპეციფიკაცია: 0,0,0,1
გამოიყენება, თუ უფრო სპეციფიკური წესები არ არსებობს
*/
p {
color: blue;
}
/*
სპეციფიკაცია: 0,0,1,0
შეცვლის p-ის წესს
*/
.text {
color: green;
}
/*
სპეციფიკაცია: 0,1,0,0
შეცვლის `.text` კლასის წესს
*/
#main-text {
color: red;
}
/*
სპეციფიკაცია: 1,0,0,0
გამოიყენება, თუ ელემენტს აქვს ატრიბუტი style="color: purple;"
*/
/* <p style="color: purple;">ტექსტი</p> */
/*
ძალიან მაღალი სპეციფიკაცია, შეცვლის ყველა წესს
გამოყენება არ არის რეკომენდებული, თუ ეს არ არის აუცილებელი
*/
.override-text {
color: black !important;
}