היי כל המפתחים הנפלאים שלכם בחוץ! בפוסט זה אנו הולכים לחקור את השימוש ב :has()
בפרויקט האינטרנט הבא שלך. :has()
הוא חדש יחסית אך צבר פופולריות בקהילת הקצה הקדמי על ידי מתן שליטה על אלמנטים שונים בממשק המשתמש שלך. בואו נסתכל מהי מחלקת הפסאודו וכיצד אנו יכולים להשתמש בה.
תחביר
השמיים :has()
Pseudo-class של CSS עוזר לסגנן אלמנט אם משהו מהדברים שאנו מחפשים בתוכו נמצא ומטופל. זה כמו להגיד, "אם יש משהו ספציפי בתוך הקופסה הזו, תעצב את הקופסה כך ורק כך."
:has(<direct-selector>) {
/* ... */
}
בעיית הסטיילינג
בשנים עברו לא הייתה לנו דרך לעצב אלמנט הורה המבוסס על ילד ישיר של אותו הורה עם CSS או אלמנט המבוסס על אלמנט אחר. במקרה שהיינו צריכים לעשות זאת, נצטרך להשתמש בכמה JavaScript ולהפעיל/כיבוי מחלקות על סמך מבנה ה-HTML. :has()
פתר את הבעיה הזו.
נניח שיש לך רכיב כותרת ברמה 1 (h1
) זו הכותרת של פוסט או משהו כזה בדף רשימת בלוגים, ואז יש לך כותרת רמה 2 (h2
) שעוקב ישירות אחריו. h2 זה יכול להיות כותרת משנה לפוסט. אם זה h2
הוא נוכח, חשוב, וישר אחרי ה h1
, אולי תרצה להבליט את ה-h1 הזה. לפני שהיית צריך לכתוב פונקציית 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');
}
});
פונקציית JS זו מחפשת את כל ה-h1 שיש להם a h2
ממשיכים בו, ומחילים מחלקה של תוכן הדגשה כדי ליצור את h1
להתבלט כמאמר חשוב.
חדש ומשופר עם ה-CSS המודרני שהגיע חם! היכולות של מה שאנחנו יכולים לעשות בדפדפן עברו כברת דרך. כעת אנו יכולים לנצל את ה-CSS כדי לעשות דברים שבאופן מסורתי היינו צריכים לעשות עם JavaScript, לא הכל, אלא כמה דברים.
New School Way - CSS
h1:has(+ h2) {
color: blue;
}
תזרוק קצת :has() על זה!
עכשיו אתה יכול להשתמש :has()
להשיג את אותו הדבר שפונקציית JS עשתה. CSS זה בודק עבור כל h1 ומשתמש ב- קומבינטור אחים בודק אם יש h2 שמיד אחריו, ומוסיף את הצבע הכחול לטקסט. להלן כמה מקרי שימוש של מתי :has()
יכול להיות שימושי.
:יש בורר דוגמה 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;
}
:יש בורר דוגמה 2
הרבה פעמים אנחנו כעובדים באינטרנט עושים מניפולציות או עובדים עם תמונות. אנחנו יכולים להשתמש בכלים כאלה ענן מספק לעשות שימוש בטרנספורמציות שונות בתמונות שלנו, אבל בדרך כלל אנחנו רוצים להוסיף צללים, רדיוסים של גבול וכיתובים (לא להתבלבל עם טקסט חלופי בתכונת alt).
הדוגמה להלן משתמשת :has()
כדי לראות אם לדמות או לתמונה יש אלמנט של כיתוב תמונה ואם כן, הוא מחיל קצת רקע ורדיוס גבול כדי להבליט את התמונה.
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()
את זה?
האם אני יכול אתה יכול לראות את זה :has()
יש תמיכה מצוינת בדפדפנים מודרניים.
נתוני התמיכה בדפדפן זה הם מ אני יכול להשתמש, שיש בו יותר פרטים. מספר מציין שהדפדפן תומך בתכונה בגרסה זו ומעלה.
שולחן העבודה
Chrome | Firefox | IE | אדג ' | ספארי |
---|---|---|---|---|
105 | 121 | לא | 105 | 15.4 |
נייד / טאבלט
אנדרואיד כרום | אנדרואיד פיירפוקס | אנדרואיד | iOS ספארי |
---|---|---|---|
122 | 123 | 122 | 15.4 |
:has()
בקהילה!
פניתי לרשת שלי בטוויטר כדי לראות איך עמיתיי משתמשים :has()
בעבודתם היומיומית וזה מה שהיה להם לומר על כך.
svg:has(> #Mail) {
stroke-width: 1;
}
זה נהדר לראות כיצד חברי הקהילה משתמשים ב-CSS מודרני כדי לפתור בעיות בעולם האמיתי, וגם צעקה אל Abbey באמצעותו מטעמי נגישות!
דברים שכדאי לזכור
יש כמה נקודות עיקריות שכדאי לזכור בעת השימוש :has()
נקודות תבליט שהפניה מ MDN.
- המחלקה הפסאודו מקבלת את הספציפיות של הבורר הספציפי ביותר בטיעון שלה
- אם
:has()
Pseudo-class עצמו אינו נתמך בדפדפן, כל בלוק הבורר ייכשל אלא אם כן:has()
נמצא ברשימת בורר סלחנית, כגון ב:is()
ו:where()
- השמיים
:has()
לא ניתן לקנן פסאודו-class בתוך אחר:has()
- פסאודו-אלמנטים גם אינם בוררים חוקיים בתוכם
:has()
ואלמנטים פסאודו אינם עוגנים תקפים עבורם:has()
סיכום
ניצול הכוח של CSS, כולל תכונות מתקדמות כמו :has()
פסאודו-קלאס, מסמיך אותנו ליצור חוויות אינטרנט יוצאות דופן. החוזקות של CSS טמונות במפל ובספציפיות שלה... החלק הטוב ביותר, המאפשר לנו למנף את מלוא הפוטנציאל שלה. על ידי אימוץ היכולות של CSS, אנו יכולים להניע את עיצוב ופיתוח אתרים קדימה, לפתוח אפשרויות חדשות וליצור ממשקי משתמש פורצי דרך.
קישורים:
- הפצת תוכן ויחסי ציבור מופעל על ידי SEO. קבל הגברה היום.
- PlatoData.Network Vertical Generative Ai. העצים את עצמך. גישה כאן.
- PlatoAiStream. Web3 Intelligence. הידע מוגבר. גישה כאן.
- PlatoESG. פחמן, קלינטק, אנרגיה, סביבה, שמש, ניהול פסולת. גישה כאן.
- PlatoHealth. מודיעין ביוטכנולוגיה וניסויים קליניים. גישה כאן.
- מקור: https://css-tricks.com/the-power-of-has-in-css/
- :יש ל
- :הוא
- :לֹא
- $ למעלה
- 09
- 1
- 11
- 12
- 13
- 16
- 22
- 27
- 31
- 3rd
- 7
- 8
- 9
- 91
- 98
- a
- אודות
- בנוגע לזה
- נגישות
- היוו
- להשיג
- לרוחב
- Ad
- להוסיף
- מוסיף
- מתקדם
- יתרון
- לאחר
- נגד
- תעשיות
- מאפשר
- גם
- חלופה
- an
- מעוגן
- ו
- דְמוּי אָדָם
- אחר
- כל
- חל
- מריחה
- ARE
- טענה
- מאמר
- AS
- At
- רקע
- מבוסס
- BE
- כי
- לפני
- להלן
- הטוב ביותר
- לחסום
- בלוג
- כָּחוֹל
- גבול
- אריזה מקורית
- דפדפן
- דפדפנים
- בִּניָן
- אבל
- by
- CAN
- לא יכול
- יכולות
- כיתובים
- מפלה
- מקרים
- סיכוי
- בדיקה
- ילד
- Chrome
- בכיתה
- כיתות
- צֶבַע
- איך
- מגיע
- קהילה
- מסקנה
- מבולבל
- לִשְׁלוֹט
- יכול
- זוג
- לעצב
- יוצרים
- CSS
- נתונים
- יְוֹם
- מיום ליום
- אספקה
- עיצוב
- פרט
- לאתר
- מפתחים
- צעצועי התפתחות
- DID
- ישיר
- ישירות
- do
- מסמך
- עושה
- כֶּלֶב
- נהיגה
- ירידה
- אדג '
- אלמנט
- אלמנטים
- מחבק
- מעצים
- סוף
- שלם
- הכל
- דוגמה
- יוצא דופן
- חוויות
- הסבר
- לחקור
- FAIL
- מאפיין
- תכונות
- מעטים
- תרשים
- Firefox
- הבא
- כדלקמן
- מזון
- בעד
- קדימה
- מצא
- החל מ-
- חזית
- חזיתי
- מלא
- פונקציה
- פונקציונלי
- פונקציונלי
- צבר
- הולך
- זָהוּב
- גדול
- פורץ דרך
- היה
- שימושי
- יש
- כותרת
- עוזר
- גָבוֹהַ
- הדגשה
- איך
- HTML
- http
- HTTPS
- i
- ie
- if
- תמונה
- תמונות
- מיד
- חשוב
- משופר
- in
- כולל
- מצביע על
- בתוך
- ממשקים
- אל תוך
- iOS
- IT
- שֶׁלָה
- עצמו
- JavaScript
- שמור
- מפתח
- אחרון
- הכי פחות
- רמה
- תנופה
- שקר
- כמו
- רשימה
- ארוך
- נראה
- הסתכלות
- מגרש
- לעשות
- מניפולציה
- להתאים
- max-width
- להרשם/להתחבר
- יכול
- אכפת לי
- מודרני
- יותר
- רוב
- מוזילה
- my
- טבע
- צורך
- נחוץ
- רשת
- חדש
- הבא
- לא
- עַכשָׁיו
- מספר
- of
- on
- ONE
- רק
- or
- שלנו
- הַחוּצָה
- יותר
- חבילה
- עמוד
- חלק
- צד
- עבר
- עבר
- עמיתים
- אפלטון
- מודיעין אפלטון
- אפלטון נתונים
- נקודות
- פופולריות
- אפשרויות
- הודעה
- פוטנציאל
- כּוֹחַ
- להציג
- מתנות
- קודם
- בעיה
- בעיות
- פּרוֹיֶקט
- מספק
- הגיע
- ממשי
- עולם אמיתי
- הפניה
- הפניה
- קרוב משפחה
- יחסית
- מייצג
- כבוד
- חָסוֹן
- s
- ספארי
- בְּטִיחוּת
- אותו
- לומר
- אמר
- בית ספר
- חיפוש
- לִרְאוֹת
- בחירה
- לשבת
- So
- פִּתָרוֹן
- לפתור
- כמה
- משהו
- ספציפי
- ספֵּצִיפִיוּת
- לעמוד
- הברית
- חוזק
- מִבְנֶה
- סגנון
- כזה
- תמיכה
- נתמך
- תומך
- SVG
- תחביר
- לקחת
- לוקח
- נטילת
- טכנולוגיות
- טֶקסט
- זֶה
- השמיים
- שֶׁלָהֶם
- אז
- הֵם
- דבר
- דברים
- זֶה
- זמן
- פִּי
- כותרת
- ל
- כלים
- באופן מסורתי
- טרנספורמציות
- עץ
- נָכוֹן
- פנייה
- ui
- אלא אם כן
- נעילה
- us
- להשתמש
- מְשׁוּמָשׁ
- משתמש
- באמצעות
- בְּדֶרֶך כְּלַל
- לנצל
- תקף
- שונים
- גרסה
- לצפיה
- vs
- רוצה
- היה
- דֶרֶך..
- we
- אינטרנט
- היו
- מה
- מתי
- אשר
- יצטרך
- עם
- בתוך
- נִפלָא
- תיק עבודות
- עובדים
- עובד
- עוֹלָם
- היה
- לכתוב
- שנים
- עוד
- אתה
- זפירנט