IDEAS
DESIGN
TECHNOLOGY
PEOPLE
MOTION
FOR A
BRIGHTER WEB
01 / הרעיון
גללו מטה. האור במסילה מתקדם עם הסיפור, והתחנה הפעילה מסמנת באיזה פרק אנחנו נמצאים.
02 / הכיוון
כל תחנה במסילה מחוברת לפרק בעמוד.
האור נע בין התחנות בהתאם להתקדמות הגלילה,
ומחבר את חלקי הסיפור.
03 / התנועה
אפשר לגלול קדימה ואחורה ולראות את האור נע במסילה, או ללחוץ על אחת התחנות כדי לעבור ישירות לפרק הרצוי.
04 / החיבור
האור מגיע לתחנה האחרונה והסיפור נשלם. אפשר לחזור לכל אחד מהפרקים דרך המסילה, או להתחיל שוב מהנקודה הראשונה.
/* קונטיינרים של הפרקים */
.zkl-story-chapter {
position: relative; isolation: isolate; box-sizing: border-box;
overflow: hidden; min-height: 420px;
padding: clamp(36px, 5vw, 64px);
display: flex; flex-direction: row; align-items: center;
justify-content: center; gap: 32px; direction: rtl;
background: #181511 !important;
border: 1px solid rgba(218,182,109,.18); border-radius: 20px;
}
#lab-story-02 { background: #211b15 !important; }
#lab-story-03 { background: #171410 !important; }
#lab-story-04 { background: #241d16 !important; }
.zkl-story-chapter::before {
content: ""; position: absolute; inset: 0; z-index: -1;
pointer-events: none;
background: radial-gradient(ellipse at 18% 50%, rgba(221,165,50,.14), transparent 65%);
}
#lab-story-02::before {
background: radial-gradient(ellipse at 75% 20%, rgba(221,165,50,.1), transparent 65%);
}
#lab-story-04::before {
background: radial-gradient(ellipse at 25% 75%, rgba(229,111,45,.12), transparent 65%);
}
.zkl-story-chapter::after {
position: absolute; left: 7%; bottom: 20px; z-index: -1;
pointer-events: none; font-family: Arial, sans-serif;
font-size: clamp(100px,14vw,180px); font-weight: 400;
line-height: 1; color: rgba(218,182,109,.07);
}
#lab-story-01::after { content: "01"; }
#lab-story-02::after { content: "02"; }
#lab-story-03::after { content: "03"; }
#lab-story-04::after { content: "04"; }
.zkl-story-chapter .zkl-story-art::after,
.zkl-story-chapter .zkl-story-copy::after {
content: none !important; display: none !important;
}
.zkl-story-chapter .zkl-story-copy {
position: relative; z-index: 1; flex: 1 1 0;
min-width: 0; width: 100%; max-width: 620px;
direction: rtl; text-align: right;
}
.zkl-story-chapter .zkl-story-art {
position: relative; flex: 0 1 35%; min-width: 0;
min-height: 220px; display: flex;
align-items: center; justify-content: center;
}
.zkl-story-art .elementor-widget-html { width: 100%; }
.zkl-story-copy .zkl-story-kicker {
margin: 0 0 20px; color: #f0ca83 !important;
font-size: 13px !important; font-weight: 400; line-height: 1.5;
}
.zkl-story-copy .zkl-story-title {
margin: 0 0 24px; color: #fff6e8 !important;
font-size: clamp(32px,3.8vw,52px) !important;
font-weight: 400 !important; line-height: 1.16 !important;
letter-spacing: -.6px;
}
.zkl-story-copy .zkl-story-text {
max-width: 460px; margin: 0 0 28px;
color: #e0d3c1 !important; font-size: 17px !important;
line-height: 1.8 !important;
}
.zkl-story-copy .zkl-story-next {
display: inline-block; padding: 10px 0;
color: #f0ca83 !important; font-size: 14px !important;
line-height: 1.5; text-decoration: none;
border-bottom: 1px solid #a17b40;
transition: color .2s, border-color .2s;
}
.zkl-story-copy .zkl-story-next:hover {
color: #fff6e8 !important; border-bottom-color: #fff6e8;
}
.zkl-story-copy .zkl-story-next:focus-visible {
outline: 2px solid #f0ca83; outline-offset: 5px;
}
/* תגובה עדינה למעבר עכבר על הפרק */
.zkl-story-chapter .zkl-story-art svg {
transform: scale(1) rotate(0deg); transform-origin: center;
filter: drop-shadow(0 0 0 transparent);
transition: transform .7s cubic-bezier(.22,1,.36,1), filter .7s ease;
}
.zkl-story-chapter .zkl-story-art svg > circle:first-of-type {
opacity: .55; transition: opacity .7s ease;
}
@media (hover: hover) and (pointer: fine) {
.zkl-story-chapter:hover .zkl-story-art svg {
transform: scale(1.07) rotate(-5deg);
filter: drop-shadow(0 0 12px rgba(240,202,131,.28));
}
#lab-story-02:hover .zkl-story-art svg { transform: scale(1.07) rotate(7deg); }
#lab-story-03:hover .zkl-story-art svg { transform: scale(1.07) rotate(-9deg); }
#lab-story-04:hover .zkl-story-art svg { transform: scale(1.07) rotate(5deg); }
.zkl-story-chapter:hover .zkl-story-art svg > circle:first-of-type { opacity: 1; }
}
.zkl-story-chapter:focus-within .zkl-story-art svg {
transform: scale(1.07) rotate(-5deg);
filter: drop-shadow(0 0 12px rgba(240,202,131,.28));
}
.zkl-story-chapter:focus-within .zkl-story-art svg > circle:first-of-type { opacity: 1; }
@media (max-width: 767px) {
.zkl-story-chapter {
min-height: 0; padding: 36px 24px;
border-radius: 16px; flex-direction: column; gap: 24px;
}
.zkl-story-chapter .zkl-story-copy,
.zkl-story-chapter .zkl-story-art { flex: 0 1 auto; width: 100%; }
.zkl-story-copy .zkl-story-title { font-size: clamp(28px,7vw,36px) !important; }
.zkl-story-copy .zkl-story-text { font-size: 16px !important; line-height: 1.7 !important; }
.zkl-story-chapter::after { font-size: 100px; left: 18px; bottom: 16px; }
}
@media (prefers-reduced-motion: reduce) {
.zkl-story-chapter .zkl-story-art svg { transform: none !important; transition: none; }
.zkl-story-chapter .zkl-story-art svg > circle:first-of-type { transition: none; }
}
EXPLORE / LEARN / REUSE / CREATE
.Costomize to fit your vision
המסילה נוצרת אוטומטית באמצעות JavaScript. אין צורך להוסיף HTML נפרד למסילה.
באלמנטור אפשר לבנות את ארבעת הפרקים בקונטיינרים רגילים: לכל קונטיינר חיצוני הקלאס zkl-story-chapter ומזהה ייחודי lab-story-01 עד lab-story-04. בתוך כל פרק עורך טקסט עם הקלאס zkl-story-copy וקונטיינר איור עם הקלאס zkl-story-art. האיור מוכנס לווידג׳ט HTML בתוך קונטיינר האיור.
המזהה שייך לקונטיינר החיצוני בלבד. לא לעורך הטקסט ולא לקונטיינר האיור.
קוד ה-HTML מתאר את המבנה המלא. משתמשים בו בשלמותו בווידג׳ט HTML, או מפרקים אותו לרכיבי אלמנטור לפי המבנה המתואר. אין להדביק את המבנה המלא בעורך טקסט.
את ה-CSS מוסיפים פעם אחת. אם מדביקים בווידג׳ט HTML, עוטפים אותו בתגי style. בשדה CSS של אלמנטור מדביקים בלי תגיות.
את ה-JS מוסיפים פעם אחת בווידג׳ט HTML, עם תגי script כפי שסופק. הוא כולל גם את העיצוב של המסילה. מחליפים את הסקריפט הקודם של רכיב זה ולא מריצים שני עותקים.
בנייד המסילה מוגבלת ל-420 פיקסלים או לגובה הזמין במסך, הקטן מביניהם. הפרקים עוברים לפריסה אנכית ללא גובה מינימלי גדול.
התנועה של האור מחוברת לגלילה עם ריכוך. לחיצה על תחנה מעבירה לפרק. משתמשים שמעדיפים הפחתת תנועה מקבלים תנועה ישירה ללא הריכוך.
אנימציית האיורים במעבר עכבר עדינה. בנייד היא אינה מופעלת במגע. זו נקודה לשיפור עיצובי בהמשך.
העכבר הכתום וההילה הם רכיב גלובלי נפרד, ואינם כלולים בדוגמה זו.
ב-HTML; צבעים, ריווח וגדלים ב-CSS;
שמות הפרקים במערך names; מזהי הפרקים במערך ids ובקונטיינרים ובקישורים יחד; ריכוך האור במשתנה softness (160 מילישניות); היסט הגלילה ב–zks-offset לפי גובה ההדר.
המסילה מקובעת לצד המסך לאורך העמוד. בעמוד אמיתי יש להשאיר עבורה שוליים פנויים כדי שלא תכסה תוכן או כפתורים צפים.
הערה חשובה 🚩
הרכיב פועל ללא ספריות חיצוניות. יש להוסיף את ה־CSS ואת הסקריפט פעם אחת בלבד, ולוודא שמזהי הקונטיינרים תואמים למזהי הפרקים בסקריפט.