|
@@ -41,8 +41,8 @@
|
|
|
/* width: NSLIDES * 100vw,会在 JS 里动态矫正 */
|
|
/* width: NSLIDES * 100vw,会在 JS 里动态矫正 */
|
|
|
#deck{position:fixed;inset:0;width:10000vw;height:100vh;display:flex;flex-wrap:nowrap;transition:transform .9s cubic-bezier(.77,0,.175,1);z-index:10;will-change:transform}
|
|
#deck{position:fixed;inset:0;width:10000vw;height:100vh;display:flex;flex-wrap:nowrap;transition:transform .9s cubic-bezier(.77,0,.175,1);z-index:10;will-change:transform}
|
|
|
.slide{width:100vw;height:100vh;flex:0 0 100vw;position:relative;padding:6vh 6vw 10vh 6vw;display:flex;flex-direction:column;overflow:hidden}
|
|
.slide{width:100vw;height:100vh;flex:0 0 100vw;position:relative;padding:6vh 6vw 10vh 6vw;display:flex;flex-direction:column;overflow:hidden}
|
|
|
- .slide.light{color:var(--ink)}
|
|
|
|
|
- .slide.dark{color:var(--paper)}
|
|
|
|
|
|
|
+ .slide.light{color:var(--ink);background:var(--paper)}
|
|
|
|
|
+ .slide.dark{color:var(--paper);background:var(--ink)}
|
|
|
|
|
|
|
|
/* 默认页:遮罩较厚,保证文字可读 */
|
|
/* 默认页:遮罩较厚,保证文字可读 */
|
|
|
.slide::before{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;transition:background .7s ease}
|
|
.slide::before{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;transition:background .7s ease}
|
|
@@ -166,6 +166,18 @@
|
|
|
.frame-img{overflow:hidden;position:relative;background:rgba(0,0,0,.04);box-sizing:border-box;width:100%;border-radius:4px}
|
|
.frame-img{overflow:hidden;position:relative;background:rgba(0,0,0,.04);box-sizing:border-box;width:100%;border-radius:4px}
|
|
|
.slide.dark .frame-img{background:rgba(255,255,255,.04);border-color:rgba(255,255,255,.12)}
|
|
.slide.dark .frame-img{background:rgba(255,255,255,.04);border-color:rgba(255,255,255,.12)}
|
|
|
.frame-img > img{width:100%;height:100%;object-fit:cover;object-position:top center;display:block}
|
|
.frame-img > img{width:100%;height:100%;object-fit:cover;object-position:top center;display:block}
|
|
|
|
|
+ .frame-img.fit-contain > img{object-fit:contain;object-position:center center}
|
|
|
|
|
+ .frame-img.r-16x9{aspect-ratio:16/9;max-height:64vh}
|
|
|
|
|
+ .frame-img.r-16x10{aspect-ratio:16/10;max-height:56vh}
|
|
|
|
|
+ .frame-img.r-4x3{aspect-ratio:4/3;max-height:56vh}
|
|
|
|
|
+ .frame-img.r-3x2{aspect-ratio:3/2;max-height:46vh}
|
|
|
|
|
+ .frame-img.r-3x4{aspect-ratio:3/4;max-height:60vh}
|
|
|
|
|
+ .frame-img.r-1x1{aspect-ratio:1/1;max-height:50vh}
|
|
|
|
|
+ .frame-img.h-16{height:16vh}
|
|
|
|
|
+ .frame-img.h-18{height:18vh}
|
|
|
|
|
+ .frame-img.h-22{height:22vh}
|
|
|
|
|
+ .frame-img.h-26{height:26vh}
|
|
|
|
|
+ .frame-img.h-28{height:28vh}
|
|
|
.frame-cap{display:flex;justify-content:space-between;align-items:baseline;gap:1vw;margin-top:.8vh;font-family:var(--mono);font-size:10px;letter-spacing:.22em;text-transform:uppercase;opacity:.72}
|
|
.frame-cap{display:flex;justify-content:space-between;align-items:baseline;gap:1vw;margin-top:.8vh;font-family:var(--mono);font-size:10px;letter-spacing:.22em;text-transform:uppercase;opacity:.72}
|
|
|
.frame-cap .pf{font-family:var(--serif-zh);font-weight:600;font-size:max(13px,1vw);letter-spacing:.04em;text-transform:none;opacity:.94}
|
|
.frame-cap .pf{font-family:var(--serif-zh);font-weight:600;font-size:max(13px,1vw);letter-spacing:.04em;text-transform:none;opacity:.94}
|
|
|
.frame-cap .nb{font-family:var(--serif-en);font-style:italic;font-size:max(15px,1.2vw);letter-spacing:.02em;text-transform:none;opacity:.88}
|
|
.frame-cap .nb{font-family:var(--serif-en);font-style:italic;font-size:max(15px,1.2vw);letter-spacing:.02em;text-transform:none;opacity:.88}
|
|
@@ -405,11 +417,12 @@
|
|
|
- pipeline(data-animate="pipeline"):Space/→ 手动推进
|
|
- pipeline(data-animate="pipeline"):Space/→ 手动推进
|
|
|
Motion One 没加载成功时(CDN 断 + 本地丢),所有 [data-anim] 会兜底显示。
|
|
Motion One 没加载成功时(CDN 断 + 本地丢),所有 [data-anim] 会兜底显示。
|
|
|
*/
|
|
*/
|
|
|
- [data-anim]{opacity:0}
|
|
|
|
|
- [data-anim="left"]{transform:translateX(-24px)}
|
|
|
|
|
- [data-anim="right"]{transform:translateX(24px)}
|
|
|
|
|
- [data-anim="line"]{opacity:0;transform:translateY(10px)}
|
|
|
|
|
- [data-animate="pipeline"] [data-anim]{opacity:.15}
|
|
|
|
|
|
|
+ [data-anim]{opacity:1}
|
|
|
|
|
+ body.motion-ready [data-anim]{opacity:0}
|
|
|
|
|
+ body.motion-ready [data-anim="left"]{transform:translateX(-24px)}
|
|
|
|
|
+ body.motion-ready [data-anim="right"]{transform:translateX(24px)}
|
|
|
|
|
+ body.motion-ready [data-anim="line"]{opacity:0;transform:translateY(10px)}
|
|
|
|
|
+ body.motion-ready [data-animate="pipeline"] [data-anim]{opacity:.15}
|
|
|
|
|
|
|
|
/* ---------- 响应式降级 ---------- */
|
|
/* ---------- 响应式降级 ---------- */
|
|
|
@media (max-width:900px){
|
|
@media (max-width:900px){
|
|
@@ -692,6 +705,7 @@ try {
|
|
|
|
|
|
|
|
if(motion){
|
|
if(motion){
|
|
|
const { animate, stagger } = motion;
|
|
const { animate, stagger } = motion;
|
|
|
|
|
+ document.body.classList.add('motion-ready');
|
|
|
const EASE = [.22, 1, .36, 1];
|
|
const EASE = [.22, 1, .36, 1];
|
|
|
const slides = [...document.querySelectorAll('.slide')];
|
|
const slides = [...document.querySelectorAll('.slide')];
|
|
|
let pipeStep = -1;
|
|
let pipeStep = -1;
|