Files
SEONexus/doc/gpt1/item_01~05「继承母型 CSS 协议」(终版规则).md
2025-12-31 00:49:32 +08:00

5.0 KiB
Raw Blame History

下面给你 Aitem_01~05「继承母型 CSS 协议」(终版规则)。 目标是:以后你再加 item_06/07… 或做子变体,只需要“挂 class + 少量覆写”,不再复制粘贴一堆 CSS、也不会互相污染。


1目录与加载顺序协议必须固定

关键:先 base再 type再 item再 behavior可选

推荐文件结构:

/static/css/list/
  item_base.css            (所有 item 的共用基础,必须)
  item_poster.css          poster 母型item_01 / item_04
  item_media.css           media 母型item_02
  item_rank.css            rank/text 母型item_03 / item_05

  item_01.css              (可选:仅做微差异)
  item_02.css              (可选)
  item_03.css              (可选)
  item_04.css              (可选)
  item_05.css              (可选)

  behavior.css             (可选:通用行为兜底)

CSS 合并时顺序建议:

  1. item_base.css
  2. item_poster.css / item_media.css / item_rank.css
  3. item_01~05.css(若存在)
  4. behavior.css(若你还需要通用兜底)

2Class 命名协议(决定“继承关系”)

每个 item 根节点必须同时包含:

  • 通用根类{$TpStyle.dom_prefix}-item
  • 母型类(必须)poster / media / rank
  • 编号类(可选但推荐)item01 / item02
  • 行为类(来自 cfg.classcompact loose emphasis top collapsed grouped

示例poster 强化):

<article class="{$TpStyle.dom_prefix}-item poster item04 {$cfg.class}">

示例(榜单 Top 强化):

<article class="{$TpStyle.dom_prefix}-item rank item05 {$cfg.class}">

3CSS 分层协议(禁止越界)

3.1 item_base.css只做“骨架”不做形态

允许写:

  • link 基础
  • 标题/元信息基础字体
  • cover img 通用 object-fit
  • 通用截断/间距(轻)

禁止写:

  • grid 列数
  • poster/media/rank 的布局(这些归 type
  • 任何写死颜色(只用主题变量)

3.2 type CSS母型决定“形态”

item_poster.css封面型

只负责:

  • .poster 的 cover 比例
  • poster 信息区排布
  • poster 的角标位置规范

item_media.css横向信息流

只负责:

  • .media 使用 flex row
  • media cover 宽度/比例
  • info 区垂直居中

item_rank.css榜单型

只负责:

  • .rank 的序号/标题/meta 横向布局
  • Top 强化钩子(top

3.3 item_0X.css编号层微差异不允许改母型核心

允许:

  • 字体大小微调
  • border-radius 微调
  • meta 显示/隐藏(通过 class
  • badge 形态

禁止:

  • 改 poster/media/rank 的整体布局方式
  • 写通用选择器污染其他 item例如 .poster .__PFX__-item-cover{} 这种应该在 type

3.4 behavior.css行为兜底层可选

如果你已经在 type 里适配了 compact/loose/emphasis/top,这里可以很薄。

允许:

  • .collapsed 隐藏第 N 条后内容
  • .emphasis 容器弱装饰兜底
  • .grouped 兜底边框背景

禁止:

  • 具体 item 的细节样式(那属于 item_0X 或 type

4选择器范围协议避免串样

必须遵守“前缀+组件域”:

  • .__PFX__-item ...
  • .__PFX__-item.poster ...
  • .__PFX__-item.media ...
  • .__PFX__-item.rank ...

禁止:

  • .poster .__PFX__-item-cover(范围太大,可能影响别的模块)
  • img{} / a{} / .title{} 这类全局污染

5主题色协议v1.4 已定,这里重申到 item

item CSS 禁止写死颜色,只能用:

  • var(--primary-color)
  • var(--secondary-color)
  • var(--accent-color)
  • var(--bg-color)
  • var(--bg-soft-color)
  • var(--text-color)
  • var(--text-muted-color)
  • var(--border-color)
  • var(--shadow-color)

例外: 仅允许类似 rgba(0,0,0,.65) 这种“遮罩透明度”,但不允许固定纯色背景块。


6推荐你现在的“继承落地模板”最终写法

posteritem_01 / item_04

<article class="{$TpStyle.dom_prefix}-item poster item04 {$cfg.class}">

mediaitem_02

<article class="{$TpStyle.dom_prefix}-item media item02 {$cfg.class}">

rankitem_03 / item_05

<article class="{$TpStyle.dom_prefix}-item rank item05 {$cfg.class}">

你会发现:item_type 变量可以弱化 直接用母型类 poster/media/rank 做继承入口最稳。


7你接下来要做的两件事落地清单

  1. 把现有 item_01~05.css 中“母型布局”部分迁移到:
  • item_poster.css
  • item_media.css
  • item_rank.css
  1. item_01~05.css 只保留编号差异(可选)

如果你愿意,我可以下一步把你现有的 item_0105你现在项目里的版本按这份协议“自动拆分重构”并给你一套最终文件清单 item_base.css + item_poster.css + item_media.css + item_rank.css + item_01~05.css(只保留微差异)。 你把当前 0105 的 CSS或压缩包路径贴一下即可。