Web Design
CSS Custom Highlight API: להדגיש חיפושי AI בלי לרסק את ה-DOM
מדריך פרקטי להדגשת תשובות AI וציטוטים בזמן אמת באתר עם CSS Custom Highlight API. אפס שינויי DOM, ללא פגיעה בביצועים וללא שבירת React.
TL;DR
אם אתם עדיין מדביקים תגיות span או mark בתוך הטקסט כדי להדגיש תוצאות חיפוש או ציטוטים של AI, אתם פוגעים בביצועים ושוברים את ה-DOM. ב-2026, CSS Custom Highlight API מציע דרך נקייה, מהירה ואלגנטית להדגיש טקסט בזמן אמת.
אתמול ישבתי עם מפתח שעבד על ממשק חיפוש AI פנימי. המערכת הריצה שאילתה מול LLM, הביאה את התשובה, וניסתה להדגיש בזמן אמת את הציטוטים מתוך מסמכי המקור.
התוצאה הייתה עגומה. המסך ריצד. ההודעות קפצו. הרכיבים ב-React איבדו את ה-State שלהם כי ה-DOM נחתך ועובד מחדש עם מאות תגיות mark. זה היה סיוט ביצועים.
הבעיה הזו מוכרת לכל מפתח פרונטאנד.
הגישה הישנה: הזרקת תגיות DOM
כשרוצים להדגיש טקסט באופן מסורתי, הטכניקה די ברוטלית. לוקחים את מחרוזת הטקסט, מריצים Regex, ומוסיפים תגיות מעטפת.
איפה זה נשבר? בכול מקום.
- ה-DOM משתנה וגורם ל-Reflow יקר.
- קוראי מסך מתבלבלים מפיצול פסקאות בודדות לעשרות אלמנטים.
- בעת הזרמת טקסט בלייב מ-AI, חישוב ה-Regex קורס או מאט את ה-Main Thread.
- הגדרה · CSS Custom Highlight API
מנגנון דפדפן מודרני המאפשר להגדיר אזורי טקסט ב-JavaScript ולהחיל עליהם עיצוב CSS ייעודי, מבלי לשנות אף אלמנט במבנה ה-DOM.
הגישה המודרנית: העיצוב נפרד מהמבנה
הרעיון מאחורי CSS Custom Highlight API פשוט בטירוף. מפרידים לחלוטין בין הנתונים לבין התצוגה הוויזואלית.
אני מגדיר אובייקט Range ב-JavaScript שמסמן בדיוק מאילו תווים עד אילו תווים לפרוס את ההדגשה. לאחר מכן, אני רושם אותו ב-CSS.highlights. מכאן, הדפדפן מנהל את כל הרינדור בשכבת התצוגה בלבד.
| היבט | הזרקת HTML (הגישה הישנה) | CSS Custom Highlight API (הגישה המודרנית) |
|---|---|---|
| שינוי DOM | כבד מאוד (פיצול צומתי טקסט) | אפס שינויי DOM |
| מהירות רנדור | איטית, גורמת ל-Layout Shifts | מיידית, פועלת בשכבת העירסול של הדפדפן |
| תמיכה ב-Streaming AI | קשה עד בלתי אפשרית לניהול | קלה - עדכון ערכי Offset בלבד |
| אנגולר / ריאקט | שובר Reconciliation ו-State | שקוף לחלוטין לפריים-וורק |
0
שינויי DOM הנדרשים להדגשת 1,000 ציטוטים בדף
מקור: W3C, 2026
איך זה עובד בפועל בחיפוש AI?
כאשר תשובת AI זורמת למסך, המערכת מאתרת את מיקום הטקסט שברצוננו להדגיש. במקום להחליף את הטקסט ב-HTML חדש, אנחנו פשוט בונים טווח.
אני יוצר Range חדש, מגדיר את נקודת ההתחלה והסיום, ומכניס אותו לאובייקט Highlight:
const range = new Range();
range.setStart(textNode, startOffset);
range.setEnd(textNode, endOffset);
const highlight = new Highlight(range);
CSS.highlights.set('ai-citation', highlight);
וב-CSS שלנו, ההגדרה פשוטה ונקייה:
::highlight(ai-citation) {
background-color: #fde047;
color: #0f172a;
border-radius: 2px;
}
זה הכל. אפילו לא שורה אחת של תוכן משתנה ב-DOM.
מריצים חיפוש וקטורי או RAG באתר? אתם יכולים לחבר את ה-Offsets ישירות מתוצאות ה-Embedding ולסמן את המקורות על המסך תוך מילישניות.
השורה התחתונה: להפסיק לעבוד קשה
אם האתר שלכם כולל מנגנוני חיפוש מתקדמים, ממשקי צ'אט או כלי GEO הפונים למשתמשים, הגיע הזמן לנער את שיטות העבודה הישנות.
שימוש ב-CSS Custom Highlight API לא רק הופך את הקוד שלכם לנקי ב-80%, הוא מבטיח שהביצועים שלכם יישארו ירוקים ב-Lighthouse ב-2026.
💡
אל תגעו ב-DOM בשביל מניפולציות עיצוב. תנו לדפדפן לעשות את מה שהוא מתמחה בו בשכבת ה-Rendering.
שאלות נפוצות
כל מה שעוד רצית לדעת
מה היתרון המרכזי של CSS Custom Highlight API מול תגיות mark?
האם הטכנולוגיה הזו נתמכת בכל הדפדפנים ב-2026?
איך קוראי מסך ומנועי חיפוש מתמודדים עם ה-API הזה?
כתב
אדיר בן יעקב · Adir Ben Yaakov
מקים JustBetterSite, סוכנות בניית אתרים ושיווק דיגיטלי בתל אביב. מתמחה ב-GEO (Generative Engine Optimization) — בנייה של אתרים שמופיעים בתשובות של ChatGPT, Claude, Perplexity ו-Gemini, לא רק בגוגל.
עוד עליי →להמשך הקריאה
מאמרים קשורים
Web Design
5 דרכים לעצב חיתוכים ואפקטים מורכבים ב-CSS בלי להכביד על האתר
מדריך פרקטי לשימוש ב-CSS mask ו-clip-path. כך תייצרו אלמנטים ויזואליים מרשימים וחיתוכים יצירתיים בלי קובצי תמונה כבדים ובלי לפגוע במהירות הטעינה.
המשךWeb Design
CSS interpolate-size מול JavaScript: הסוף למעקפים בהנפשת height: auto
הסבר מעשי על המאפיין interpolate-size ב-CSS. איך להנפיש גובה אוטומטי ללא סקריפטים של JavaScript, עם ביצועים מנצחים וקוד נקי.
המשךWeb Design
@starting-style ב-CSS מול ספריות JS: למה הגישה הישנה להנפשת מודאלים מתה
השוואה נוקבת בין הנפשת אלמנטים שנפתחים מ-display: none בעזרת starting-style@ לבין ספריות JS כבדות. גלו למה קוד CSS נקי ב-2026 מנצח כל תוסף.
המשך