מסננים

The CSS Podcast – 023: מסננים

נניח שצריך לבנות אלמנט עם אפקט אטום במידה מועטה של זכוכית חלבית שנמצא מעל התמונה. הטקסט צריך להיות טקסט פעיל ולא תמונה. איך עושים את זה?

השילוב של מסנני CSS ו-backdrop-filter מאפשר לנו להשתמש באפקטים ולטשטש את מה שצריך בזמן אמת. טשטוש ושקיפות הם שניים מתוך מגוון הפילטרים הזמינים, ולכן בואו נעבור בקצרה על כל מה שהם עושים ונסביר איך להשתמש בהם.

הנכס filter

תמיכה בדפדפן

  • 53
  • 12
  • 35
  • 9.1

מקור

אפשר להחיל אחד או יותר מהמסננים הבאים כערך של filter. אם תחילו מסנן בצורה שגויה, שאר המסננים שהוגדרו ל-filter לא יעבדו.

blur

המערכת מחילה טשטוש גאוסיאני והארגומנט היחיד שאפשר להעביר הוא radius, כלומר רמת הטשטוש. הערך הזה צריך להיות יחידת אורך, כמו 10px. אחוזים לא קבילים.

.my-element {
    filter: blur(0.2em);
}

brightness

תמיכה בדפדפן

  • 18
  • 12
  • 35
  • 6

מקור

כדי להגביר או להפחית את הבהירות של אלמנט מסוים, משתמשים בפונקציית הבהירות. ערך הבהירות מבוטא כאחוז, כאשר התמונה שלא השתנתה מבוטאת כערך של 100%. הערך 0% הופך את התמונה לשחורה לחלוטין, ולכן ערכים שבין 0% ל-100% הופכים את התמונה לפחות בהירה. כדי להגביר את הבהירות, צריך להשתמש בערכים מעל 100%.

.my-element {
    filter: brightness(80%);
}

contrast

תמיכה בדפדפן

  • 18
  • 12
  • 35
  • 6

מקור

מגדירים ערך בין 0% ל-100% כדי להפחית או להגדיל את הניגודיות, בהתאמה.

.my-element {
    filter: contrast(160%);
}

grayscale

תמיכה בדפדפן

  • 18
  • 12
  • 35
  • 6

מקור

אפשר להחיל אפקט לגווני אפור לחלוטין על ידי שימוש ב-1 כערך של grayscale(), או ב-0 כדי לקבל רכיב רוויי לחלוטין. אפשר גם להשתמש בערכים באחוזים או בערכים עשרוניים כדי להחיל רק אפקט חלקי של גווני אפור. אם לא תעבירו ארגומנטים, הרכיב יוצג בגווני אפור לחלוטין. אם מעבירים ערך שגדול מ-100%, הוא יוגבל ל-100%.

.my-element {
    filter: grayscale(80%);
}

invert

תמיכה בדפדפן

  • 18
  • 12
  • 35
  • 6

מקור

בדיוק כמו ב-grayscale, אפשר להעביר את הפונקציה 1 או 0 אל הפונקציה invert() כדי להפעיל או להשבית אותה. כשהרכיב מופעל, הצבעים של הרכיב מתהפכים לחלוטין. אפשר גם להשתמש בערכים באחוזים או בערכים עשרוניים כדי להחיל רק היפוך צבעים חלקי. אם לא מעבירים ארגומנטים כלשהם לפונקציה invert(), הרכיב הפוך לחלוטין.

.my-element {
    filter: invert(1);
}

opacity

תמיכה בדפדפן

  • 18
  • 12
  • 35
  • 6

מקור

המסנן opacity() פועל בדיוק כמו המאפיין opacity, שבו אפשר להעביר מספר או אחוז כדי להגדיל או להקטין את השקיפות. אם לא מעבירים ארגומנטים, הרכיב גלוי במלואו.

.my-element {
    filter: opacity(0.3);
}

saturate

תמיכה בדפדפן

  • 18
  • 12
  • 35
  • 6

מקור

המסנן הרוויה דומה מאוד למסנן brightness ומקבלים את אותו ארגומנט: מספר או אחוז. במקום להגביר או להפחית את אפקט הבהירות, saturate מעלה או מקטין את רווית הצבע.

.my-element {
    filter: saturate(155%);
}

sepia

תמיכה בדפדפן

  • 18
  • 12
  • 35
  • 6

מקור

אפשר להוסיף אפקט של גוון חום-ספיה עם המסנן הזה שפועל כמו grayscale(). גוון חום-ספיה הוא טכניקת הדפסה בתמונות שממירה גוונים שחורים לגוונים חומים כדי לחמם אותם. אפשר להעביר מספר או אחוז כארגומנט של sepia(), כדי להגדיל או להקטין את ההשפעה. העברת ארגומנטים לא מוסיפה אפקט חום-ספיה מלא (מקביל ל-sepia(100%)).

.my-element {
    filter: sepia(70%);
}

hue-rotate

תמיכה בדפדפן

  • 18
  • 12
  • 35
  • 6

מקור

בשיעור הצבעים למדתם איך הגוון ב-hsl מתייחס לסיבוב של גלגל הצבעים, והפילטר הזה פועל בצורה דומה. אם מעבירים זווית, כמו מעלות או פניות, היא משנה את הגוון של כל הצבעים של הרכיב, ומשנה את החלק בגלגל הצבעים שאליו הוא מפנה. אם לא תעבירו ארגומנט, לא יקרה כלום.

.my-element {
    filter: hue-rotate(120deg);
}

drop-shadow

תמיכה בדפדפן

  • 18
  • 12
  • 35
  • 6

מקור

אפשר להשתמש באפקט של הטלת צללית שמתחבקת עקומה כמו בכלי עיצוב, כמו Photoshop, בעזרת drop-shadow. הצללית הזו מוחלת על מסכת אלפא, שמאפשרת להוסיף צללית לתמונה של חיתוך. המסנן drop-shadow משתמש בפרמטר של צללית ומכיל ערכים מופרדים ברווחים - היסט-x, היסט-y, טשטוש וצבע. היא כמעט זהה ל-box-shadow, אבל מילת המפתח inset וערך ההפצה לא נתמכים.

.my-element {
    filter: drop-shadow(5px 5px 10px orange);
}

מידע נוסף על סוגי הצלליות במודול הצלליות

url

תמיכה בדפדפן

  • 5
  • 12
  • 3
  • 6

מקור

המסנן url מאפשר להחיל מסנן SVG מרכיב או קובץ SVG מקושרים. למידע נוסף על מסנני SVG

מסנן רקע

תמיכה בדפדפן

  • 76
  • 79
  • 103
  • 18

מקור

המאפיין backdrop-filter מקבל את כל הערכים של פונקציית המסנן כמו filter. ההבדל בין backdrop-filter ל-filter הוא שהמאפיין backdrop-filter מחיל את המסננים רק על הרקע, כאשר המאפיין filter מחיל אותו על כל הרכיב.

הדוגמה בתחילת השיעור הזה היא הדוגמה המושלמת, כי לא רוצים שהטקסט יטושטש, ורצוי שלא יהיה צורך להוסיף רכיבי HTML נוספים. היכולת להחיל פילטרים רק על הרקע מאפשרת זאת.

בדיקת ההבנה

בוחנים את הידע שלכם לגבי מסננים

אילו מהאפשרויות הבאות הן פונקציות סינון ב-CSS?

grayscale()
🎉
invert()
🎉
flip()
כדאי לנסות שוב.
multiply()
כדאי לנסות שוב.
blur()
🎉
brightness()
🎉

האם שירות CSS יכול להשתמש במסנני SVG?

כן
פונקציית הסינון url() מאפשרת
לא
כדאי לנסות שוב.