feat(首页头图): 换母婴作图 v2 孕25周视频——脐带连囊壁胎盘、镜头固定、暖底 (v26093009)

- 素材 yun25w-loop.mp4 v2:胎盘在囊内壁左下,脐带全程固定,接肚子那头被腿挡住;
  无孕肚;镜头固定;本身正放+倒放首尾同帧,直接 loop。
- 背景 = 视频第 1 帧缩 .93、囊心摆 (1250,375),左/上/下按边缘色补齐并宽羽化(455d2517fafd.jpg)。
- 视频只截羊水囊 660×660 → 400×400(f20175ae1170.mp4,95KB),宽羽化遮罩叠在背景同位置;
  与背景同源同帧,边缘无缝。去掉单独的静态囊图层。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-09-30 10:10:45 +00:00
parent d5ee5c8654
commit 983191a752
8 changed files with 33 additions and 43 deletions

View File

@@ -191,20 +191,19 @@ a.skip:focus{left:16px;top:16px}
hero 橙色区底缘:中部 ≈y420(210) 两侧 ≈y340(170) → 椭圆下沿 44px
⚠️ 上面这些是**设计稿**的数,不是现在的实现值。设计稿里没有 slogan,
加进去之后品牌字以下整列都下移了,实际纵向排布以 .home-hero 里那笔账为准。 */
/* 2026-09-30 背景换成孕 25 周图(底子 assets/img/7bbc5d7192c0.jpg,1560×750 = 3 倍图 520×250;
羊水囊 + 宝宝单独一层 d5060a4a27fe.jpg + 视频 b6476cfce328.mp4,见 .hero-baby):
只抠了原图里的羊水囊 + 宝宝(孕肚太写实,用户要求去掉),缩到原来约 8 成放在右侧,
底子是暖桃橙渐变(取囊内羊水色 ≈#D6724F,用户要求整块头图和羊水同色调顺下来)
+ 囊后一圈淡暖光晕 + 淡金色散景光点。
图高钉死 = 橙区高、右对齐,屏宽 ≤520 都铺得满;再宽就露底色 #c8644c(=图左缘色)。
/* 2026-09-30 头图 = 孕 25 周(母婴作图 v2:无孕肚、镜头固定、脐带连囊壁胎盘、暖桃橙底)。
背景 assets/img/455d2517fafd.jpg(1560×750 = 3 倍图 520×250)= 视频 yun25w-loop.mp4 第 1 帧缩到 .93,
羊水囊中心摆在 (1250,375);视频左/上/下不够的地方按边缘色拉伸补齐并羽化。
图高钉死 = 橙区高、右对齐,屏宽 ≤520 都铺得满;再宽就露底色 #cf6340(=图左缘色)。
会动的宝宝是叠在上面的同源视频,见 .hero-baby。
上面叠一层很淡的暖色左深右透渐变,只为让左边白字(孕周环、天数卡)再稳一点。
形状(高度、底部椭圆弧)不变。 */
.home-hero{
position:relative;color:#fff;overflow:hidden;
background:
linear-gradient(90deg,rgba(150,55,35,.14) 0%,rgba(150,55,35,.05) 38%,rgba(150,55,35,0) 58%),
url(assets/img/7bbc5d7192c0.jpg) right center/auto 100% no-repeat,
#c8644c;
url(assets/img/455d2517fafd.jpg) right center/auto 100% no-repeat,
#cf6340;
padding:env(safe-area-inset-top) 15px 0 16px;
/* 设计稿橙区 210px。但设计稿里气泡下缘是被白卡盖住的,
现在气泡补全成整圆(高 189.5),橙区必须够高才不会被 overflow:hidden 切掉。
@@ -294,35 +293,28 @@ a.skip:focus{left:16px;top:16px}
改 top 前先读 .home-hero 里那笔竖列账。 */
/* 定位和浮动都挂在外壳上,img 只负责铺满 —— 这样嘴边的泡泡是
相对气泡本身定位的,会跟着整幅画一起上下浮,而不是自己飘在原地 */
/* 羊水囊 + 宝宝这一层(2026-09-30)。
底子背景图右对齐、高 = 橙区高 H;这张囊图是从同一张 1560×750 合成图里原样切出来的
(x 940..1560, y 50..710),所以按 H 换算摆回原位就严丝合缝:
宽 620/750 = .8267H,高 660/750 = .88H,顶 50/750 = .0667H,右 0。
方图四角带着底色,用径向渐变遮罩把边缘羽化掉。
2026-09-30 用户要求:「球」(羊水囊)不动,只让里面的宝宝自己动(吸手指、蹬腿)。
所以去掉了整层浮动和整图扭动,改成:
.hero-sac 静态图垫底 = 母婴作图给的 25w.mp4 第 1 帧(囊内 600×600 摆在容器 (10,30))
.hero-kid 同一块 600×600 截成的短视频:原片前 10s 正放 + 倒放 = 20s 无缝循环
(原片镜头在慢慢推近、结尾姿势和开头对不上,直接 loop 会跳;倒放回来首尾就是同一帧)。
只露囊内(遮罩 74%→96% 宽羽化,和静态囊壁柔和叠在一起),囊壁用底下静态图的,镜头推近时囊壁不会跟着胀。
放起来之前 opacity:0,JS 收到 playing 再淡入 —— 放不了就一直是静态图,不会出现黑框/播放按钮。 */
.hero-baby{position:absolute;z-index:2;right:0;
top:calc((250px + env(safe-area-inset-top)) * .0667);
width:calc((250px + env(safe-area-inset-top)) * .8267);
height:calc((250px + env(safe-area-inset-top)) * .88);
/* 会动的宝宝(2026-09-30):视频 assets/video/f20175ae1170.mp4 = 原片以囊心 (667,369) 截 660×660、缩到 400×400。
原片本身是正放 5s + 倒放 5s,首尾同一帧,直接 loop 无缝。
摆位:背景里视频帧缩了 .93,这块 660 → 614 画布像素,左上角落在 (943,68),
换算成橙区高 H:宽高 614/750 = .8187H,顶 68/750 = .0907H,右 (1560−1557)/750 ≈ .004H。
背景就是同一视频的第 1 帧、镜头固定,所以只需一圈宽羽化遮罩(80%→100%)把方块边化掉,
囊外光点冻结在第 1 帧也看不出来。放起来之前 opacity:0,JS 收到 playing 再淡入,
放不了就一直是背景那一帧(静态宝宝),不会出现黑框/播放按钮。
用户要求:囊不动,只让宝宝自己动 —— 所以这一层没有任何 transform 动画。 */
.hero-baby{position:absolute;z-index:2;
top:calc((250px + env(safe-area-inset-top)) * .0907);
right:calc((250px + env(safe-area-inset-top)) * .004);
width:calc((250px + env(safe-area-inset-top)) * .8187);
height:calc((250px + env(safe-area-inset-top)) * .8187);
pointer-events:none;user-select:none}
/* 静态囊图自己就是从底图原位切出来的、边缘已在图里羽化(r 232→300 平滑过渡)+ 底图在囊外垫了一圈柔光,
四角和底图逐像素一致,所以这里**不再加 CSS 遮罩** —— 以前那道 91% 的椭圆遮罩横竖半径不同,
会把囊壁左右削掉一截、上下留着,边缘看着割裂。 */
.hero-sac{display:block;width:100%;height:100%}
.hero-kid{position:absolute;left:1.613%;top:4.545%;width:96.774%;height:90.909%;
.hero-kid{position:absolute;inset:0;width:100%;height:100%;
object-fit:cover;background:transparent;opacity:0;transition:opacity .8s ease;
-webkit-mask-image:radial-gradient(closest-side,#000 74%,transparent 96%);
mask-image:radial-gradient(closest-side,#000 74%,transparent 96%)}
-webkit-mask-image:radial-gradient(closest-side,#000 80%,transparent 100%);
mask-image:radial-gradient(closest-side,#000 80%,transparent 100%)}
.hero-kid.is-on{opacity:1}
/* 嘴边的小气泡。起点定在视频里嘴(拳头)大致的位置(50%/47%),往左上飘 ——
/* 嘴边的小气泡。起点定在视频里嘴(拳头)大致的位置(50.9%/47.6%),往左上飘 ——
宝宝头朝右上侧躺,左上正好是「水面」方向。z-index 压在视频上面。 */
.hb-bub{position:absolute;z-index:1;left:50%;top:47%;width:7px;height:7px;border-radius:50%;
.hb-bub{position:absolute;z-index:1;left:50.9%;top:47.6%;width:7px;height:7px;border-radius:50%;
background:rgba(255,255,255,.5);box-shadow:inset 0 0 0 1px rgba(255,255,255,.8);
opacity:0;animation:bub 4.2s ease-in-out infinite}
@keyframes bub{
@@ -332,8 +324,8 @@ a.skip:focus{left:16px;top:16px}
100%{transform:translate(-16px,-46px) scale(1.15);opacity:0}
}
/* 三颗错开大小、时长和出发点,才不像在同一个节拍上打点 */
.hb-bub.b2{left:47.2%;top:48.8%;width:5px;height:5px;animation-duration:5.1s;animation-delay:1.4s}
.hb-bub.b3{left:51.8%;top:45.6%;width:9px;height:9px;animation-duration:4.7s;animation-delay:2.7s}
.hb-bub.b2{left:48.3%;top:49%;width:5px;height:5px;animation-duration:5.1s;animation-delay:1.4s}
.hb-bub.b3{left:52.8%;top:46.2%;width:9px;height:9px;animation-duration:4.7s;animation-delay:2.7s}
/* 系统开了「减少动态效果」就全部停下:这类装饰性循环动画是前庭不适的常见诱因 */
@media (prefers-reduced-motion:reduce){
.hero-kid{display:none}