关注前3条加回6~8个小头像、百宝箱同时滚动1~2条、测试封面改真实风景照+分组柔光遮罩(v26110412)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
deploy
2026-11-04 07:48:30 +00:00
parent 1aece8ee65
commit 6860c73b9b
54 changed files with 107 additions and 66 deletions

View File

@@ -0,0 +1,31 @@
# 测试封面风景照(11-04 换,全部 CC0,来自 Openverse:StockSnap / WordPress Photos)
t01 https://stocksnap.io/photo/sunrise-morning-CD2134E2DD Sunrise Morning
t02 https://stocksnap.io/photo/sunrise-morning-NNEZM4UXE6 Sunrise Morning
t03 https://stocksnap.io/photo/sunrise-morning-ZJE4KHCDWE Sunrise Morning
t04 https://stocksnap.io/photo/sunrise-morning-FIOJB60WHW Sunrise Morning
t05 https://stocksnap.io/photo/sunrise-morning-LS018JTVBT Sunrise Morning
t06 https://stocksnap.io/photo/sunrise-mountains-HLQSR4VMVA Sunrise Mountains
t07 https://stocksnap.io/photo/sunrise-morning-Y3V6KY127X Sunrise Morning
t08 https://stocksnap.io/photo/sunrise-dawn-VSZGUL6UIN Sunrise Dawn
t09 https://stocksnap.io/photo/sunrise-sky-V54OB96DMN Sunrise Sky
t10 https://stocksnap.io/photo/flowers-peach-FJPQF5LY0H Flowers Peach
t11 https://stocksnap.io/photo/lavender-field-G1Z1H18HCQ Lavender Field
t12 https://stocksnap.io/photo/lavender-field-T5J75YI5H0 Lavender Field
t13 https://stocksnap.io/photo/lavender-flower-WGKUOVFTHP Lavender Flower
t14 https://stocksnap.io/photo/lavender-flowers-POJBN5GI7U Lavender Flowers
t15 https://stocksnap.io/photo/lavender-field-MA1RNOBHJ6 Lavender Field
t16 https://stocksnap.io/photo/lavender-field-R642Q1P0QG Lavender Field
t17 https://stocksnap.io/photo/lavender-flower-3502LSPSY6 Lavender Flower
t18 https://wordpress.org/photos/photo/6896636407/ French Lavender Flowers
t19 https://stocksnap.io/photo/purple-sky-51ZSVLMWRO Purple Sky
t20 https://stocksnap.io/photo/purple-sky-8AJACV2YDX Purple Sky
t21 https://wordpress.org/photos/photo/44267d07fb/ A vibrant green meadow under a blue sky dotted with fluffy white clouds in Zug, Switzerland. A line of trees borders the meadow in the mid-ground, and a forested hill rises in the background.
t22 https://wordpress.org/photos/photo/627668d5c9/ A scenic view of a stone path leading towards a hilltop surrounded by lush green meadows, with a backdrop of majestic mountains and a clear blue sky. The horizon is dotted with distant snow-capped peaks under fluffy white clouds.
t23 https://wordpress.org/photos/photo/1156a73ff5/ A peaceful forest clearing framed by towering trees, where sunlight filters through the canopy and opens to a wide green meadow beneath a bright blue sky
t24 https://wordpress.org/photos/photo/84665c508b/ A lush green meadow with a solitary tree in the foreground and a majestic flat-topped mountain under a cloudy sky.
t25 https://stocksnap.io/photo/forest-path-AXOFGKXCSI Forest Path
t26 https://wordpress.org/photos/photo/5536464f83/ Countryside landscape featuring a blue sky, clouds and unworked farm ground
t27 https://stocksnap.io/photo/beautiful-landscape-970HTFRR9U Beautiful Landscape
t28 https://stocksnap.io/photo/dock-lake-MES5X81ZYI Dock Lake
t29 https://stocksnap.io/photo/grass-trees-4OJDSDOEKU Grass Trees
t30 https://stocksnap.io/photo/blue-ocean-GJ7GTXIJZ2 Blue Ocean

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.8 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.2 KiB

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.8 KiB

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.6 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.4 KiB

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.1 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.5 KiB

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.0 KiB

After

Width:  |  Height:  |  Size: 9.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.1 KiB

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.9 KiB

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.6 KiB

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.4 KiB

After

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.3 KiB

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.4 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.9 KiB

After

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.1 KiB

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.7 KiB

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.0 KiB

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.8 KiB

After

Width:  |  Height:  |  Size: 78 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.1 KiB

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.1 KiB

After

Width:  |  Height:  |  Size: 83 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.5 KiB

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.9 KiB

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.7 KiB

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.9 KiB

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.4 KiB

After

Width:  |  Height:  |  Size: 9.2 KiB

View File

@@ -320,9 +320,9 @@ mark{background:linear-gradient(transparent 62%,var(--c20) 0);color:inherit;padd
</div>
<div class="toast" id="toast"></div>
<script src="../../js/share-card.js?v=26110411"></script>
<script src="meta.js?v=26110411"></script>
<script src="tests.js?v=26110411"></script>
<script src="../../js/share-card.js?v=26110412"></script>
<script src="meta.js?v=26110412"></script>
<script src="tests.js?v=26110412"></script>
<script>
(function () {
'use strict';

View File

@@ -285,7 +285,12 @@ button{font:inherit;color:inherit;border:0;background:none;padding:0;cursor:poin
.csr-i{border-radius:13px;transform:rotate(-4deg)}
.csr:nth-child(even) .csr-i{transform:rotate(4deg)}
.ck.has-bg .cv>.cbl,.ck.has-bg .cv>.ck-wm{display:none}
.ck .cv .ck-bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:50% 100%}
.ck .cv .ck-wash{position:absolute;inset:0;pointer-events:none}
.ck.gq .ck-wash{background:linear-gradient(180deg,rgba(255,244,234,.86),rgba(255,236,222,.74) 62%,rgba(255,228,211,.35))}
.ck.gp .ck-wash{background:linear-gradient(180deg,rgba(246,241,255,.86),rgba(238,230,252,.74) 62%,rgba(234,226,251,.35))}
.ck.gg .ck-wash{background:linear-gradient(180deg,rgba(240,250,244,.86),rgba(228,246,236,.74) 62%,rgba(221,243,231,.35))}
.ck.gs .ck-wash{background:linear-gradient(180deg,rgba(240,246,255,.86),rgba(230,240,254,.74) 62%,rgba(223,235,253,.35))}
.ck .cv .ck-bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:50% 50%}
.csr-i.has-bg{background-size:cover!important;background-position:70% 85%!important;box-shadow:inset 0 0 0 1.5px rgba(255,255,255,.7)}
.ck .cv .ck-wm{position:absolute;right:-8px;bottom:-6px;width:62px;height:62px;opacity:.22;transform:rotate(-12deg);pointer-events:none}
.ck .cv .ck-wm svg{width:100%;height:100%}
@@ -862,11 +867,11 @@ button{font:inherit;color:inherit;border:0;background:none;padding:0;cursor:poin
<div id="sheet" role="dialog" aria-modal="true"><i class="sg"></i><div class="sbd" id="sbd"></div></div>
<div class="toast" id="toast"></div>
<script src="topics.js?v=26110411"></script>
<script src="data.js?v=26110411"></script>
<script src="feed.js?v=26110411"></script>
<script src="ceshi/meta.js?v=26110411"></script>
<script src="../js/share-card.js?v=26110411"></script>
<script src="topics.js?v=26110412"></script>
<script src="data.js?v=26110412"></script>
<script src="feed.js?v=26110412"></script>
<script src="ceshi/meta.js?v=26110412"></script>
<script src="../js/share-card.js?v=26110412"></script>
<script>
(function () {
'use strict';
@@ -932,7 +937,7 @@ button{font:inherit;color:inherit;border:0;background:none;padding:0;cursor:poin
var CMD = null, CMERR = false;
/* 头像编码:数字 = av/NNNN.webp(旧代码头像);'av:c012' = av/c012.webp(卡通/可爱卡通);'/…' = 站内绝对路径(内置头像库 /_bridge/avatars/);其余 = assets/img/mom/xxx.jpg */
var avP = function (a) { return typeof a === 'number' ? 'av/' + ('000' + a).slice(-4) + '.webp' : a.indexOf('av:') === 0 ? 'av/' + a.slice(3) + '.webp' : a.charAt(0) === '/' ? a : '../assets/img/mom/' + a + '.jpg'; };
fetch('cm.json?v=26110411').then(function (r) { return r.json(); }).then(function (j) {
fetch('cm.json?v=26110412').then(function (r) { return r.json(); }).then(function (j) {
CMD = j; if (openId && NBY[openId]) { renderComments(NBY[openId]); syncBar(NBY[openId]); }
}).catch(function () { CMERR = true; if (openId && NBY[openId]) renderComments(NBY[openId]); });
function commentsOf(n) {
@@ -1200,7 +1205,7 @@ button{font:inherit;color:inherit;border:0;background:none;padding:0;cursor:poin
var CS_SEC = { quiz: ['', '查漏补缺,温和掌握孕产育儿知识', 2], psy: ['', '看见情绪,也看见关系', 2], game: ['', '挑战一下,看能拿什么称号', 2], shop: ['', '看看你是哪一类育儿采购玩家', 2] };
/* 11-04 用户:「每个测试的背景图要做匹配的图片,不要同样的背景色;按组区分色块、组内统一」→ 每个测试一张插画(ceshi/cv/tNN.webp),
色调跟组走:常识小测暖桃 / 趣味心理薰衣草紫 / 趣味闯关薄荷绿 / 好物配置天蓝;画面上半留白放标题。列表行的小方块也换成同一张图。 */
var CS_CV_V = 1;
var CS_CV_V = 2; /* 同日二改:用户嫌插画乱 → 换真实风景照(按组选色调)+ 同色柔光遮罩 */
function csRowHTML(x, done, i) {
var d = done[x.id], who = (x.sub || '').split('·')[0].trim();
return '<button type="button" class="csr ' + CS_GPAL[x.group] + '" data-test="' + x.id + '"><span class="csr-i s' + (i % 3) + ' has-bg" style="background-image:url(ceshi/cv/' + x.id + '.webp?v=' + CS_CV_V + ')"></span>' +
@@ -1252,7 +1257,7 @@ button{font:inherit;color:inherit;border:0;background:none;padding:0;cursor:poin
function csCardHTML(x, done, i, hl) {
var d = done[x.id], who = (x.sub || '').split('·')[0].trim(), hs = hl ? ckHlLine(x) : '';
var top = byHot(TM).slice(0, 3).map(function (y) { return y.id; }).indexOf(x.id);
return '<button type="button" class="ck ' + CS_GPAL[x.group] + ' has-bg" data-test="' + x.id + '"><span class="cv"><img class="ck-bg" src="ceshi/cv/' + x.id + '.webp?v=' + CS_CV_V + '" alt="" loading="lazy" decoding="async">' +
return '<button type="button" class="ck ' + CS_GPAL[x.group] + ' has-bg" data-test="' + x.id + '"><span class="cv"><img class="ck-bg" src="ceshi/cv/' + x.id + '.webp?v=' + CS_CV_V + '" alt="" loading="lazy" decoding="async"><i class="ck-wash"></i>' +
(top >= 0 ? '<i class="ck-top t' + (top + 1) + '">TOP' + (top + 1) + '</i>' : '') +
'<i class="ck-wm">' + csTI(x) + '</i><b>' + esc(x.title.replace(/^测一测|/, '')) + '</b><small>' + esc(who) + ' · ' + x.n + ' 题</small><em>' + (d ? '再测一次' : '开始测试') + '</em>' + (d ? '<i class="dn">已测</i>' : '') + hs + '</span>' +
'<span class="cnn">' + (hs ? '' : csAvs(3)) + '<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M12.6 2.5c.4 3-1.6 4.6-3 6.2C8 10.4 7 12 7 14.3A5 5 0 0012 19.5a5 5 0 005-5.2c0-2-1-3.6-1.9-4.6-.2 1.3-.9 2.2-1.9 2.6.6-3.4-.2-7-.6-9.8z" fill="currentColor"/></svg>' + gcTestedText(x.id) + '</span></button>';

View File

@@ -105,7 +105,7 @@ main{padding:6px 16px 0}
</div>
<div class="wb"><button type="button" id="write"><svg class="ic" viewBox="0 0 24 24"><path d="M12 20h9M16.5 3.5a2.1 2.1 0 013 3L7 19l-4 1 1-4z"/></svg>写新的故事</button></div>
<script src="../topics.js?v=26110411"></script>
<script src="../topics.js?v=26110412"></script>
<script>
(function () {
'use strict';