mister_potatosection transitionWhile scrollingsticky-basedירידת דור במובייללאיזה תוכןמעבר של פעם אחת בעמוד / לוגו או מילה גדולים / סקשן הבא ברקע אחר, בכל גובה
השאלהיש לוגו או מילה גדולים, וסקשן אחרי שמתחיל ברקע אחר?
סקשן שנפתח כמו עין
פס נפתח מאמצע הלוגו, והלוגו החתוך זז לאט ממנו. מתחת כבר הרקע של הסקשן הבא, והתוכן שלו עולה מלמטה. מהפן Hero reveal.
הסקשן הבא עולה מלמטה
הרקע שלו הוא הרקע שנפתח מתחת ללוגו, אז אין קו בין הסקשנים: העין נפתחת, והתוכן עולה בגלילה רגילה.
זה סקשן רגיל בכל גובה: כרטיסים, טקסט ארוך, מה שיש בעמוד. לא תמונת רקע שנגמרת במסך אחד.
יער בעמק
הרים ואגם
יער
חוף
נוף מהחדר
אותו דבר, בצבע לכל חלק
ירוק: הפס העליון. תכלת: הפס התחתון. צהוב: הרקע שמתחת, שהוא גם הרקע של הסקשן הזה. שחור: הלוגו, עותק בכל פס.
איך זה בנוי
שני פסים absolute בתוך ה-pane של הפאזל, ואחרי המסילה סקשן רגיל. בלי סקריפט משלו, הכול data-to על pieces. ה-CSS ב-eye-open.css ליד הדף.
| piece | תנועה | תזוזה ביחס ל-pane |
|---|---|---|
| פס עליון | y:-100% | 50% למעלה |
| הלוגו בתוכו | y:20% | 30% למעלה |
| פס תחתון | y:100% | 50% למטה |
| הלוגו בתוכו | y:-20% | 30% למטה |
החיתוך
אין כאן mask. כל פס הוא חצי pane עם overflow: hidden, ובתוכו עותק של הלוגו ממורכז בגובה 100cqh, פי 2 מהפס. בעליון הוא צמוד למעלה ובתחתון למטה, אז כל פס מראה חצי אחר, והחצאים נפגשים באמצע.
פער המהירויות
הפס נע 100% מהגובה שלו, שהם 50% מה-pane. הלוגו נע 20% מהגובה שלו נגד הפס, אז בפועל הוא זז רק 30%. קצה הפס עובר על האותיות ואוכל אותן, וזו התנועה שנראית כמו מסכה. באותו ease היחס נשמר בכל רגע. בלי התנועה הנגדית הלוגו נדבק לפס, וזו סתם דלת שנפתחת.
המעבר לסקשן הבא
הקושי באפקט כזה הוא הזרימה: לא אפקט של מסך מלא שנגמר, ואז גלילה רגילה לחלל אחר. לכן ל-pane ולסקשן הבא אותו רקע (--eye-ground), והסקשן הבא עולה מעל סוף המסילה (margin-top: -30vh) בזמן שה-pane עוד עומד, בדיוק כשהפס כמעט נפתח. בלי padding עליון (pt-0), כדי שלא תהיה גלילה ריקה בין הפתיחה לתוכן.
מה לשמור
- הלוגו בצבע הרקע שמתחת: הפס שנפתח נבלע באותיות.
- הפסים בצבע של הסקשן שמעל, וכך הלוגו יושב על הדף בלי קצה נראה.
- בלי מלל בתוך ה-pane: רקע שנפתח ואז מלל שכבר עומד שם שוברים את הרצף, והקורא לא מבין מה קרה.
padding-block: 0על ה-pane:cqhנמדד מתוך ה-padding, ובלי זה החצאים לא נפגשים.- חפיפה של 1px באמצע (
bottom: calc(50% - 1px)), כדי שלא יראו קו בין הפסים. data-puzzle-mobileחובה: בלעדיו אין בטלפון תנועה, והפסים נשארים על התוכן. ב-reduced motion אין תנועה, לכן שם ה-pane מוסתר והסקשן הבא מגיע ישר.- קו בהיר דק בקצה הפס: הקצה נופל על חצי פיקסל והדפדפן מערבב אותו עם מה שמתחתיו. עוד לא פתור. גם הפן מטפל באותו דבר, ב-
wholePixels. - בפן הפתיחה היא
clip-path: polygonאחד. כאן שני פסים, כי הפרסר של הפאזל לא מקבל ערך עם רווחים.
<div className="eye-open">
<section data-puzzle-track="" data-puzzle-mobile="">
<div data-puzzle-pane="">
<div data-puzzle-piece="" data-to="y:-100% ease:power4.inOut" className="eye-open__half eye-open__half--top">
<div data-puzzle-piece="" data-to="y:20% ease:power4.inOut" className="eye-open__logo-box"><img src="/logo.svg" alt="Today Web" /></div>
</div>
<div data-puzzle-piece="" data-to="y:100% ease:power4.inOut" className="eye-open__half eye-open__half--bottom">
<div data-puzzle-piece="" data-to="y:-20% ease:power4.inOut" aria-hidden="true" className="eye-open__logo-box"><img src="/logo.svg" alt="" /></div>
</div>
</div>
</section>
<section className="eye-open__next uk-section pt-0">...</section>
</div>אותו דבר עם תמונה: עצור פקח
מתחת לפסים תמונה ולא הסקשן הבא. העין נפתחת יפה, אבל זה נגמר בתמונה בגובה מסך שנגללת החוצה, ורואים את הקו שלה. למה זה ככה.
