txw/txw-mhzc-web/public/docs/page-layout-margin-refactor.md

378 lines
13 KiB
Markdown
Raw 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.

# 门户页面边距统一改造说明
| 属性 | 内容 |
| --- | --- |
| 文档版本 | v1.0 |
| 创建日期 | 2026-05-19 |
| 状态 | 已确认,待开发 |
| 适用项目 | txw-mhzc-web |
| 关联需求 | 首页 / 服务中心 / 共性能力 / 企业出海 / 行业专题 五页边距统一 |
---
## 一、文档说明
### 1.1 目的
统一五个门户页面的版心宽度、左右留白gutter与区块上下间距使各板块四向边距格式一致降低维护成本并保证桌面端与移动端视觉对齐。
### 1.2 读者
- 前端开发(实施改造)
- UI / 设计(验收对齐)
- 测试(回归用例)
### 1.3 飞书阅读说明
- 本文档使用标准 Markdown可直接粘贴至飞书文档或导入。
- 表格、待办清单、引用块在飞书中可正常渲染。
- 代码块为 CSS / Less 片段,便于复制到工程。
---
## 二、已确认的设计决策
> **说明**:以下选项已与产品 / 需求方确认,开发阶段不得擅自变更;若需调整须更新本文档版本号。
| 编号 | 决策项 | 确认结果 |
| --- | --- | --- |
| A | 版心最大宽度 | **1300px**(对标政务站版心,`max-width` 非固定 `width` |
| B | 桌面端左右边距gutter | **25px**(与政务站侧栏留白对齐) |
| C | 大区块上下内边距section 级) | **64px**(原首页为 80px需下调对齐 |
| D | 服务中心原 200px 大留白 | **改为版心 gutter25px**,通过 `page-content-wrap` 实现 |
| E | 首页三屏(核心驱动 / 共性能力 / 企业出海) | **保持 100vh 全屏**;仅统一标题区与内容区相对版心的 gutter |
| F | 改造范围 | **仅 5 个页面**,不含服务中心子市场页 |
| G | 文档与代码路径 | 说明文档:`public/docs/`;公共样式建议:`src/pages/index/styles/` |
| H | 语言 | **仅中文** |
---
## 三、设计 Token 规范
### 3.1 CSS 变量定义(建议)
新建文件:`src/pages/index/styles/page-layout.less`
```less
// 页面级布局 Token门户五页共用
:root {
--page-content-max-width: 1300px;
--page-gutter-x: 25px;
--page-section-padding-y: 64px;
--page-block-gap-y: 48px; // 区块内:标题 ↔ 内容
--page-block-margin-bottom: 64px; // 同级模块间距(锚点页多模块)
--page-banner-height: 350px;
--page-offset-top: 60px; // 固定顶栏下的安全区
}
```
### 3.2 响应式 Token
| 断点 | `--page-gutter-x` | `--page-section-padding-y` | 版心 |
| --- | --- | --- | --- |
| ≥ 1280px | 40px | 64px | `max-width: 1400px` |
| 768px ~ 1279px | 24px | 48px | `width: 100%` |
| < 768px | 16px | 40px | `width: 100%` |
媒体查询建议与首页 `home2` 现有断点协调避免五页断点不一致
### 3.3 内容区容器(标准写法)
**类名建议**`.page-content-wrap`全站门户页根级或 section 级复用
```less
.page-content-wrap {
box-sizing: border-box;
width: 100%;
max-width: var(--page-content-max-width);
margin-left: auto;
margin-right: auto;
padding-left: var(--page-gutter-x);
padding-right: var(--page-gutter-x);
}
.page-section {
box-sizing: border-box;
padding-top: var(--page-section-padding-y);
padding-bottom: var(--page-section-padding-y);
}
```
**板块四向边距统一格式(流式内容区块)**
```
64pxsection-padding-y
64pxsection-padding-y
40pxgutter-x
40pxgutter-x
版心max-width 1400px水平居中
```
### 3.4 全宽 Banner 与内容分离原则
| 类型 | 背景 | 内部文字 / 卡片 |
| --- | --- | --- |
| Banner / Hero 背景 | 宽度 100%高度见 `--page-banner-height` | 文案按钮包在 `.page-content-wrap` |
| 内容板块 | 可选全宽背景色 / | 主体必须使用 `.page-content-wrap` |
### 3.5 首页三屏E1 专项规则)
以下三个 section **保持** `height: 100vh` 与现有绝对定位布局**不改为**普通流式 section
- `#section-core` 核心驱动
- `#section-capability` 共性能力首页区块
- `#section-overseas` 企业出海首页区块
**仅调整**
1. 标题区`.section-title` / `.capability-header` / `.overseas2-header`左右对齐 gutter **40px**移除 `margin-left: 40px` hack
2. 内容网格在版心 **1400px** 内水平居中左右留白 **40px**
3. `--block-title-top` 等内部变量可保留但与 `--page-gutter-x` 对齐避免重复偏移
---
## 四、改造范围清单
### 4.1 纳入改造
| 序号 | 页面 | 路由 | 文件路径 |
| --- | --- | --- | --- |
| 1 | 首页 | `/home`home2 | `src/pages/index/views/home2/index.vue` |
| 2 | 服务中心 | `/fwsc` | `src/pages/index/views/fwsc/index.vue` |
| 3 | 共性能力 | `/gxnlpt` | `src/pages/index/views/gxnlpt/index.vue` |
| 4 | 企业出海 | `/qych` | `src/pages/index/views/qych/index.vue` |
| 5 | 行业专题 | `/hyzt` | `src/pages/index/views/hyzt/index.vue` |
### 4.2 不纳入改造(首轮)
- `/tfwsc`、`/txqsc`、`/tsjsc`、`/tjrsc` 等服务中心子页
- 字体配色圆角动效业务逻辑
- 卡片内部 padding `24px`、`28px`除非与版心冲突
---
## 五、现状与目标对照
### 5.1 版心与 gutter
| 页面 | 现状 | 目标 |
| --- | --- | --- |
| 首页 | `1400px` + `40px`三屏标题有 margin hack | 保持版心section 上下 **80px → 64px**清理 hack |
| 服务中心 | `padding: 60px 200px 80px` | `64px 40px 64px` + `.page-content-wrap` |
| 共性能力 | `1448px`无统一 gutter | `1400px` + 左右 **40px** |
| 企业出海 | `width: 1300px` 固定 | `max-width: 1400px` + **40px** |
| 行业专题 | `width: 1300px` 固定 | `max-width: 1400px` + **40px** |
### 5.2 区块垂直间距
| 页面 | 现状典型 | 目标 |
| --- | --- | --- |
| 首页 section | `80px 0` | `64px 0` |
| 服务中心 | `60px` / `80px` | `64px` 上下 |
| 共性能力 | 模块 `margin-bottom: 70px` | `64px``--page-block-margin-bottom` |
| 企业出海 | `30px` 等零散值 | 模块间距 **64px** |
| 行业专题 | Banner `60px`列表 `20px 0` | Banner 内容走 wrap列表区 section **64px** |
---
## 六、分页面改造要点
### 6.1 首页home2/index.vue
**模板**
- `.container` 下各 `<section>` 内容区统一包裹或复用 `.page-content-wrap`已有 `.section-container` 可重命名或映射为同一套 Token)。
- 新闻合作伙伴底部 CTA 等流式区块与 core 系列共用 gutter
**样式**
| 选择器 / 区域 | 操作 |
| --- | --- |
| `.section-container` | `max-width: 1400px``padding: 0 40px`改为 CSS 变量 |
| `.core-section` | `padding: 80px 0` `padding: 64px 0` |
| `.news-section`、`.partner-section` | 同上 **64px** |
| `.core-section .section-title` | 删除 `margin-left: 40px`使用 `left` + `width: 100%` + `max-width` + `padding: 0 40px` |
| 移动端 `@media` | `16px` gutter 映射变量 |
**注意**Hero`#section-hero`全宽保留搜索区 `6%` / `10%` 可保留百分比或评估是否改为 `40px` UI 确认默认 Hero 不强制改百分比)。
---
### 6.2 服务中心fwsc/index.vue
**模板**
- `.banner-content` 外包 `.page-content-wrap`
- `.services-section` `.services-grid` 已在 `1400px` 改为外层 section 使用统一 padding
**样式**
| 选择器 | 现状 | 目标 |
| --- | --- | --- |
| `.services-section` | `padding: 60px 200px 80px` | `padding: 64px 0`内部 wrap 负责左右 40px |
| `.banner-content` | `padding: 0 40px` | 并入 `.page-content-wrap` |
| 响应式 `@media` | `100px` / `40px` / `16px` 多级 | 统一为 **24px / 16px** 两档 |
**保留**`margin-top: -120px` 卡片上浮效果仅间距体系变化不改视觉层级)。
---
### 6.3 共性能力gxnlpt/index.vue
**模板**
- `.gxnlpt-main` 增加 `portal-page` + `.page-content-wrap` 结构
- 锚点 Tab `#anchor-container` 同级置于 wrap
**样式**
| 选择器 | 操作 |
| --- | --- |
| `.gxnlpt-main` | `max-width: 1448px` `1400px`增加左右 padding **40px** |
| `.gxnlpt-tab` | `margin-bottom: 70px` **64px** |
| `.anchor-container-box` | `margin-bottom: 70px` **64px** |
| `.body-main` | `padding-top: 60px` 使用 `--page-offset-top` |
---
### 6.4 企业出海qych/index.vue
**模板**
- `.header-wrap`、`.top-nav`、 `.module` 容器统一为 `.page-content-wrap`
**样式**
| 选择器 | 操作 |
| --- | --- |
| `.header-wrap` | `width: 1300px` `max-width: 1400px` + gutter |
| `.top-nav` | 同上 |
| `.content-wrapper2` | `max-width: 1300px` **1400px** + **40px** padding |
| `.header` | `padding-top: 120px` 保留或收敛为设计稿一致 Banner 视觉相关不改高度 350px |
| 模块间距 | 零散 `30px` **64px**`--page-block-margin-bottom` |
---
### 6.5 行业专题hyzt/index.vue
**模板**
- Banner `.word` `.hyzt-list` 均使用 `.page-content-wrap`
**样式**
| 选择器 | 操作 |
| --- | --- |
| `.banner .word` | `width: 1300px` wrap + `max-width: 1400px` |
| `.hyzt-list` | `width: 1300px` 100% + wrap |
| `.banner` | `padding: 60px 0` 可保留左右由 wrap 提供 **40px** |
| `.hyzt-list-wrap` | 增加 section 级上下 **64px**按视觉与背景图协调 |
---
## 七、工程实施步骤
### 7.1 阶段划分
| 阶段 | 任务 | 预估工时 |
| --- | --- | --- |
| P0 | 新增 `page-layout.less` 并在入口样式引入 | 0.5h |
| P1 | 改造 fwschyztgxnlpt结构相对简单 | 4h |
| P2 | 改造 qych模块多选择器多 | 4h |
| P3 | 改造 home2三屏 + 响应式 + 清理 hack | 6h |
| P4 | 三端走查 + 修复溢出 | 2h |
### 7.2 开发检查清单
- [ ] 创建 `page-layout.less` 并定义 Token
- [ ] 五页根节点增加 `portal-page` class可选便于 scoped 覆盖
- [ ] 替换所有 `1300px` / `1448px` 固定宽为 `max-width: 1400px`
- [ ] 替换 `200px` / `100px` 等大留白为 Token
- [ ] 首页 section `80px` `64px`
- [ ] 删除首页三屏标题 `margin-left` hack
- [ ] 响应式 gutter 24px / 16px 五页一致
- [ ] 1366px1920px768px375px 无横向滚动条
### 7.3 引入方式示例
`src/pages/index` 入口或各页公共父级引入
```less
@import '@/pages/index/styles/page-layout.less';
```
各页 scoped 样式中仅保留页面特有样式版心相关改为
```less
@import (reference) '@/pages/index/styles/page-layout.less';
// 或直接使用 .page-content-wrap / .page-section
```
---
## 八、测试与验收
### 8.1 验收标准
| 编号 | 标准 | 通过条件 |
| --- | --- | --- |
| AC-01 | 版心对齐 | 五页主内容区在 1920 屏宽下左右边缘对齐 |
| AC-02 | gutter | 桌面端内容距视口边缘均为 **40px**通过 wrap 实现 |
| AC-03 | section 间距 | 流式大区块上下均为 **64px** |
| AC-04 | 首页三屏 | 仍为 100vh标题与网格不贴边无双重偏移 |
| AC-05 | 服务中心 | 200px 留白卡片区域与首页视觉宽度一致 |
| AC-06 | 响应式 | 768px375px gutter 24px / 16px |
| AC-07 | 兼容性 | 1366px 宽度无横向滚动条 |
| AC-08 | 范围 | 子市场页样式无意外改动 |
### 8.2 测试用例(手工)
| 用例 ID | 页面 | 分辨率 | 操作 | 预期 |
| --- | --- | --- | --- | --- |
| TC-01 | 五页 | 1920×1080 | 打开首页并依次进入四入口 | 主内容左右对齐无宽窄不一 |
| TC-02 | fwsc | 1920×1080 | 查看服务卡片区域 | 左右留白约 40px非大留白 |
| TC-03 | home2 | 1920×1080 | 滚动三屏区块 | 每屏标题不漂移不重复缩进 |
| TC-04 | 五页 | 1366×768 | 全页滚动 | 无横向滚动条 |
| TC-05 | 五页 | 768×1024 | 查看边距 | 左右约 24px |
| TC-06 | 五页 | 375×812 | 查看边距 | 左右约 16px |
| TC-07 | gxnlpt | 1920×1080 | 切换锚点模块 | 模块间距 64px版心 1400px |
### 8.3 回归风险
> **警告**:服务中心由 200px 改为 40px 后,主内容视觉变宽,卡片可能更接近屏幕边缘,需在 1920 与 1366 下重点确认。
> **说明**:首页 section 由 80px 改为 64px 后,区块纵向更紧凑,若设计认为过密,需走变更流程调整 C 项决策。
---
## 九、附录
### 9.1 关键文件路径速查
```
txw-mhzc-web/
├── public/docs/page-layout-margin-refactor.md # 本文档
├── src/pages/index/styles/page-layout.less # 待新建
├── src/pages/index/views/home2/index.vue
├── src/pages/index/views/fwsc/index.vue
├── src/pages/index/views/gxnlpt/index.vue
├── src/pages/index/views/qych/index.vue
└── src/pages/index/views/hyzt/index.vue
```
### 9.2 变更记录
| 版本 | 日期 | 变更说明 | 作者 |
| --- | --- | --- | --- |
| v1.0 | 2026-05-19 | 根据需求确认 A1/B1/C2/D1/E1/F1 编写初版 | |
---
## 十、后续行动
1. 开发按第七章 checklist 实施改造
2. 测试按第八章用例验收
3. 验收通过后更新本文档状态为已上线」,并注明实际上线日期
> **待办**:开发启动前由 UI 确认 Hero 区 `6%` / `10%` 是否纳入 gutter 统一(默认保留现状)。