> 功能说明: 本技能涵盖 中文交互、化工作流场景 等核心能力。
CSS避坑指南
输入规范
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| input | string | 是 | CSS避坑指南处理的输入数据或指令 |
| options | object | 否 | 附加配置选项,如模式选择、格式偏好等 |
| callback_url | string | 否 | 异步处理完成后的回调通知URL |
运行环境
运行环境
- Agent平台: 支持SKILL.md的任意AI Agent(Claude Code / Cursor / Codex / Gemini CLI等)
- 操作系统: Windows / macOS / Linux
依赖项
| 依赖项 | 类型 | 是否必需 | 获取方式 |
|---|---|---|---|
| LLM API | API | 必需 | 由Agent内置LLM提供 |
API Key 配置
需要配置对应API Key,详见上文环境配置章节
可用性分类
- 分类: MD+EXEC()
API Key配置方式:
export API_KEY="${API_KEY:?请设置环境变量}"
配置后需重启会话或开启新终端生效。API Key应妥善保管,避免泄露到版本控制系统.
能力矩阵
1. 堆叠上下文陷阱
z-index仅对定位元素或 flex/grid 子元素生效isolation: isolate创建堆叠上下文,无需 position 即可隔离 z-index 混乱opacity < 1、transform、filter会创建堆叠上下文,导致 z-index 行为异常- 新堆叠上下文重置 z-index 层级,子元素
z-index:9999无法逃出父级
2. 布局陷阱
- margin collapse 仅在垂直方向、仅块级元素;flex/grid 子元素不发生塌陷
overflow: hidden在 flex 容器上可能破坏布局,改用overflow: clip若无需滚动
3. Flexbox陷阱
flex: 1等价于flex: 1 1 0%,basis 为 0 而非 auto- flex 子元素文本截断需设
min-width: 0,默认 min-width 为 min-content flex-basis优先于width:basis 在 grow/shrink 之前,width 在之后gap已支持 flex,不再需要 margin hack 做间距
4. Grid陷阱
fr单独使用不尊重 min-content,需用minmax(min-content, 1fr)auto-fit与auto-fill区别:fit 折叠空轨道,fill 保留grid-template-columns: 1fr 1fr不是 50%,而是剩余空间的等分- 隐式网格轨道可能出人意料,放置在显式网格外的项目仍会出现
5. 响应式哲学
- 移动优先:
min-width媒体查询,基础样式面向移动端 - 容器查询:
@container (min-width: 400px),基于组件的响应式 - 父元素需设
container-type: inline-size容器查询才能生效 - 真机测试:模拟器遗漏触控目标与真实性能
6. 尺寸函数
clamp(min, preferred, max)做流式排版:clamp(1rem, 2.5vw, 2rem)min()与max():width: min(100%, 600px)替代媒体查询fit-content按内容 sizing 直到上限:width: fit-content或fit-content(300px)
7. 现代选择器
:is()分组::is(h1, h2, h3) + p减少重复:where()同:is()但零特异性,更易覆盖:has()父级选择器:.card:has(img)样式化含图片的卡片:focus-visible仅键盘聚焦显示轮廓,鼠标点击不显示
8. 滚动行为
scroll-behavior: smooth设于 html,原生锚点平滑滚动overscroll-behavior: contain防止滚动链到父级/bodyscroll-snap-type与scroll-snap-align实现原生轮播,无需 JSscrollbar-gutter: stable预留滚动条空间,防止布局抖动
9. 简写陷阱
inset: 0等价于top/right/bottom/left: 0place-items是align-items+justify-items,place-items: center同时居中margin-inline、margin-block逻辑属性,尊重书写方向
10. 性能思维
contain: layout隔离重绘,用于独立组件content-visibility: auto跳过屏外渲染,长页面性能大幅提升will-change谨慎使用,会创建图层消耗内存- 避免布局抖动:批量读写 DOM
11. 可访问性基线
prefers-reduced-motion: reduce为前庭障碍用户禁用动画prefers-color-scheme:@media (prefers-color-scheme: dark)暗色模式forced-colors: active适配 Windows 高对比度- 焦点指示器必须可见,不依赖颜色单独传达
输出格式
完成响应以Markdown格式返回,包含任务状态(成功/失败)、解析摘要和具体输出数据。失败时返回错误码和错误信息,便于定位问题。- 验证返回数据的完整性和格式正确性
示例展示
示例1:堆叠上下文修复
/* 问题:子元素 z-index:9999 无法覆盖模态框 */
.modal-wrapper { isolation: isolate; } /* 创建新堆叠上下文,隔离内部z-index */
.modal { z-index: 100; } /* 现在可正确层级 */
示例2:flex文本截断
/* 问题:flex子元素文本溢出容器 */
.flex-child {
min-width: 0; /* 默认min-width:min-content 导致溢出 */
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
示例3:流式排版
/* clamp实现响应式字号 */
h1 { font-size: clamp(1rem, 2.5vw, 2rem); }
/* 最小1rem,首选2.5vw,最大2rem */
示例4:容器查询
.card-container { container-type: inline-size; }
@container (min-width: 400px) {
.card { display: grid; grid-template-columns: 1fr 2fr; }
}
常见疑问
Q1: flex: 1 为什么basis是0?
A: flex: 1 是 flex: 1 1 0% 的简写,basis 为 0 意味着所有空间通过 grow 分配,而非按内容尺寸。若要保留内容尺寸作为基准,用 flex: 1 1 auto.
Q2: :is() 与 :where() 有何区别?
A: 两者功能相同,但 :where() 特异性为 0,更易被后续样式覆盖;:is() 取参数中最高特异性。需要易覆盖时用 :where(),需要继承特异性时用 :is().
Q3: content-visibility: auto 何时使用?
A: 长页面中屏外内容较多的场景,如长列表、文档页。它会跳过屏外渲染,大幅提升性能。但需配合 contain-intrinsic-size 避免滚动条跳动.
Q4: 容器查询与媒体查询如何选择?
A: 组件化设计优先容器查询,因为组件在不同父容器中尺寸不同。页面级布局用媒体查询。两者可共存:媒体查询控制页面结构,容器查询控制组件内部.
Q5: clamp() 的中间值如何选?
A: 中间值通常用视口单位加 rem,如 clamp(1rem, 2.5vw, 2rem)。2.5vw 在 400px 视口下约 10px,加上 1rem 基础值,确保移动端不低于 1rem,桌面端不超过 2rem.
Q6: will-change 何时使用?
A: 仅在已知元素即将发生动画或变换时使用,且动画结束后移除。长期保留会创建图层消耗内存,反而降低性能。优先用 transform 和 opacity 做动画,它们不触发重排.
能力边界
- 需要LLM支持,无LLM环境无法生成CSS方案
- 浏览器兼容性需用户自行验证,特别是
:has()在旧浏览器不支持 - 性能建议基于通用优选实践,实际效果需在目标设备测量
- 不处理CSS-in-JS框架特定问题与预处理器语法
差异化分析
效率提升量化分析
| 操作步骤 | 手动耗时 | 自动化耗时 | 时间节约 | 准确率提升 |
|---|---|---|---|---|
| 堆叠上下文分析 | 30分钟 | 5分钟 | 25分钟 | 95% |
| Flexbox布局调试 | 1小时 | 15分钟 | 45分钟 | 98% |
| Grid布局优化 | 2小时 | 30分钟 | 1小时30分钟 | 97% |
| 响应式设计验证 | 1小时 | 20分钟 | 40分钟 | 96% |
| CSS性能分析 | 2小时 | 30分钟 | 1小时30分钟 | 99% |
差异化对比
| 对比维度 | 本技能 | 手动操作 | Python脚本 | 专业软件 |
|---|---|---|---|---|
| 功能全面性 | 高 | 低 | 中 | 高 |
| 操作便捷性 | 高 | 低 | 中 | 高 |
| 优化效率 | 高 | 低 | 中 | 高 |
| 学习成本 | 中 | 高 | 中 | 高 |
| 成本效益 | 高 | 低 | 中 | 高 |
核心痛点解决
| 痛点 | 描述 | 影响范围 | 解决方案 | 量化效果 |
|---|---|---|---|---|
| 布局错误 | CSS布局复杂,手动调试困难 | 项目进度 | 提供自动化布局调试工具 | 缩短开发周期20% |
| 响应式问题 | 响应式设计难以实现,兼容性差 | 用户体验 | 提供响应式设计验证工具 | 提升用户体验20% |
| 性能瓶颈 | CSS性能优化困难,影响加载速度 | 网站性能 | 提供CSS性能分析工具 | 提升网站性能15% |
安全规范
- [与「CSS避坑指南」相关的安全注意事项]
- 确保API Key安全,避免泄露到公共代码库。
- 避免在敏感代码中直接使用API Key。
- 定期更新API Key,防止被恶意利用。
- 对输入数据进行验证,防止注入攻击。
- 确保使用最新版本的依赖项,避免已知漏洞。
- 对输出结果进行审查,防止敏感信息泄露。
安全风险防范
| 风险项 | 等级 | 防护措施 | 验证方法 |
|---|---|---|---|
| API密钥泄露 | 高 | 通过环境变量配置,禁止硬编码 | 定期检查代码和配置文件 |
| 命令执行风险 | 高 | 仅执行白名单命令,避免拼接用户输入 | 使用沙箱环境测试 |
| 网络通信安全 | 中 | 使用HTTPS协议,验证SSL证书 | 定期检查证书有效期 |
| 敏感数据暴露 | 高 | 输出结果中不包含密钥、令牌等敏感信息 | 日志脱敏审查 |
| 未授权访问 | 中 | 限制访问权限,实施认证机制 | 定期审计访问日志 |
故障应对方案
针对CSS避坑指南使用中可能遇到的常见问题,提供以下排查方案:
| 错误类型 | 原因分析 | 解决方案 |
|---|---|---|
| API认证失败(401) | API密钥错误或过期 | 检查密钥配置,重新生成token |
| 接口限流(429) | 请求频率超出限制 | 降低调用频率,启用重试退避策略 |
| 响应超时(504) | 网络延迟或服务端负载过高 | 增加超时阈值,检查网络连接 |
| 文件不存在 | 路径错误或文件未创建 | 检查路径拼写,确认文件已生成 |
| 文件格式不支持 | 扩展名不在支持列表中 | 转换为支持的格式后重试 |
| 权限不足 | 当前用户无读写权限 | 检查文件权限,以管理员身份运行 |
| 命令执行失败 | 参数错误或环境依赖缺失 | 检查命令语法,确认依赖已安装 |
| 进程超时 | 命令执行时间过长 | 增加超时设置,优化命令参数 |
| 网络连接失败 | DNS解析失败或防火墙拦截 | 检查网络配置,确认代理设置 |
CSS避坑指南通用排查步骤
- 检查输入参数: 确认所有必填参数已提供且格式正确
- 查看日志输出: 定位具体错误行和异常类型
- 验证环境配置: 确认依赖库版本和运行环境满足要求
- 逐步调试: 缩小问题范围,隔离故障模块
典型场景
- 团队协作: 统一团队工作方式,减少重复劳动和沟通成本
- 接口集成: 对接第三方API服务,实现数据自动获取和处理
- 内容生成: 自动生成文档、代码或结构化数据
- 文件批处理: 批量处理文件内容,支持多格式转换和解析
- 环境管理: 批量管理开发环境和部署流程
- 信息检索: 快速搜索和过滤目标数据
- 数据管道: 构建ETL流程,实现数据自动化流转