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

213 lines
5.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
下面给你 **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.class**`compact loose emphasis top collapsed grouped`
示例poster 强化):
```html
<article class="{$TpStyle.dom_prefix}-item poster item04 {$cfg.class}">
```
示例(榜单 Top 强化):
```html
<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
```html
<article class="{$TpStyle.dom_prefix}-item poster item04 {$cfg.class}">
```
## mediaitem_02
```html
<article class="{$TpStyle.dom_prefix}-item media item02 {$cfg.class}">
```
## rankitem_03 / item_05
```html
<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
2. `item_01~05.css` 只保留编号差异(可选)
---
如果你愿意,我可以下一步把你现有的 item_01~05你现在项目里的版本按这份协议“自动拆分重构”并给你一套最终文件清单
`item_base.css + item_poster.css + item_media.css + item_rank.css + item_01~05.css`(只保留微差异)。
你把当前 01~05 的 CSS或压缩包路径贴一下即可。