用 + 可原生实现运费规则折叠,语义化强、无障碍友好; 仅放标题,内容置于外部,加 open 属性默认展开;不参与表单提交,需另用 hidden input 传值。

HTML里怎么用details实现运费规则折叠
直接用 + 就行,不用 JS、不依赖框架,原生语义化支持好,屏幕阅读器也认得。
常见错误是把内容塞进 里(它只该放标题),或者忘了加 open 属性导致默认收着——用户第一眼看不到规则,容易误以为没运费说明。
-
里只放简短提示,比如「查看运费计算规则」,别写长段落 - 想默认展开?加
open属性: - 里面可以嵌任意 HTML,但避免放交互控件(如表单按钮),部分旧浏览器对
内的 focus 行为支持不稳
<details><summary>查看运费计算规则</summary><p>订单满 <code>99</code> 元包邮;不足则按重量计费:<code>0.5</code> 元/公斤,最低 <code>3</code> 元</p> </details>
为什么不用display: none自己手写折叠
手动切 display 状态看着灵活,实则绕开语义、丢掉可访问性,还得多写 JS 绑定点击和 ARIA 属性。
比如用 aria-expanded 和 aria-controls 模拟 ,稍有疏漏就会让读屏软件报错或跳过内容。Chrome、Safari、Firefox 都已稳定支持 (IE 全系不支持,但 IE 已淘汰)。
- 移动端 Safari 对
的 touch 响应比自定义click更顺滑 - 无需监听
click或keydown,浏览器自动处理空格/回车展开 - 如果真要兼容 IE,建议降级为纯静态文本,而不是硬套 JS 折叠——运费规则不是高频操作区,没必要为 IE 增加维护成本
details在表单中能直接提交运费数据吗
不能。 是纯展示容器,不参与表单序列化,里面放 也不会被 form.submit() 收集。
生成可在 deepbi 沙箱 iframe 内运行或作为独立文件运行的交互式 HTML 页面,使用 `window.deepbi` JS SDK 实现数据查询、空间管理、文件浏览及用户操作。当用户提出以下需求时启用该能力: - 创建 KPI 仪表盘、数据表格、文件浏览器、成员列表、管理页面; - 明确要求“转成 dhtml”、“转译成 HTML”、“把 XX 页面转成……”、“控制台页面”、“管理后台”、“DeepBI 页面迁移”; - 提及位于 `apps/console/src/featur
运费规则说明和运费实际计算逻辑必须分开:前者用 折叠展示,后者用隐藏字段或 JS 动态写入 。
- 别把
塞进里指望它提交——它会提交,但和折叠功能无关,纯属巧合 - 如果运费要根据用户选择实时变(如选省份),规则说明保持静态,计算逻辑走 JS + hidden input
- 服务端永远以接收到的字段为准,不能信任前端折叠区域里“看起来被用户看到了”就认为规则已被确认
折叠区域样式微调要注意什么
浏览器默认给 加了小三角,但不同内核渲染位置、旋转方向不一致(比如 Firefox 默认在左,Chrome 在右)。想统一,得重置 list-style 并用伪元素补图标。
另外, 展开时高度是内容撑开的,CSS 动画对 height 不生效(因为是 auto),只能靠 max-height 过渡,但需预估最大高度,否则动画卡顿。
- 去掉默认箭头:
summary { list-style: none; } - 加自定义图标用
::marker(较新)或::before(兼容性更好) - 动画慎用:优先用
transition: padding .2s, opacity .2s配合overflow: hidden,比硬调max-height可靠
规则文本本身别塞太多动态内容,比如实时价格倒计时或接口加载中的占位符——折叠区域该是确定性说明,不是操作面板。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










