fix(single): place the video footer breadcrumb like the reference

Drop the invented .post-breadcrumbs wrapper and echo the breadcrumb
inside the reference's flex jsb at row; split .single-video .breadcrumb
out of the cover-overlay rule (-6px pull and opacity reset belong to
title-over-cover contexts only) and restore the legacy 15px footer
padding. Pin the structure in the cover contract test and rebuild the
homepage aggregates.
This commit is contained in:
2026-09-06 11:26:21 +08:00
parent d3eef19b95
commit 9496db5171
6 changed files with 46 additions and 20 deletions
@@ -123,6 +123,34 @@ test('video cover: play never runs against a sourceless player', () => {
assert.doesNotMatch(player, /querySelectorAll\('\.switch-video, \.switch-iframe'\)/);
});
test('video cover: footer breadcrumb sits in the reference flex row', () => {
const breadcrumbCss = read('assets/css/frontend/breadcrumb.css');
const coverCss = read('assets/css/frontend/single-post/cover.css');
// 对齐 zibll:footer 里面包屑直接位于 flex jsb at 行,无自造包装层。
assert.match(
singleRender,
/single-video-footer dplayer-featured">\s*\n\s*<div class="flex jsb at">\s*\n\s*<\?php echo \$crumbs;/,
'视频 footer 面包屑必须在 flex jsb at 行内直出'
);
assert.doesNotMatch(
singleRender + breadcrumbCss + coverCss,
/post-breadcrumbs/,
'自造的 .post-breadcrumbs 包装层已死,禁止回归'
);
// 视频面包屑只归零 padding、保留基础弱化样式;-6px 左拉仅属封面叠加层。
assert.match(breadcrumbCss, /\.single-video \.breadcrumb \{\s*\n padding: 0;\s*\n\}/);
assert.doesNotMatch(
breadcrumbCss,
/\.single-video \.breadcrumb,[\s\S]{0,200}margin: 5px 0 0 -6px/,
'.single-video 不得并入 -6px 叠加组,否则面包屑贴出左边界'
);
// footer 内边距恢复 legacy 15px 契约,禁止 4px 侧边距覆盖。
assert.doesNotMatch(coverCss, /\.single-video-footer \{ padding:/);
});
test('resource singles get the cover leaf versioned, never via the aggregate @import', () => {
// 聚合文件的 @import 无版本号:浏览器会拿旧缓存(含已废弃的 .single-cover
// padding 规则)把封面高度链挤成 0,资源型文章封面直接空白。