ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

Ant Design Spin 组件尺寸详解:small / default / large 三种加载状态的应用实践

Ant Design Spin 组件尺寸详解:small / default / large 三种加载状态的应用实践 Ant Design Spin 组件尺寸详解small / default / large 三种加载状态的应用实践【免费下载链接】ant-designAn enterprise-class UI design language and React UI library项目地址: https://gitcode.com/gh_mirrors/antde/ant-designSpin是 Ant Designantd中用于表示页面或区块加载中状态的反馈组件通过一个动态旋转的三点动效缓解用户等待异步数据或渲染过程时的焦虑。本篇技术指南以仓库 size.md 演示为核心完整讲解 Spin 的三种尺寸small / default / large语义、正确使用场景并结合 index.jsx 与 spin.less 源码剖析其尺寸控制的底层实现。读完你将掌握如何按加载粒度为文本、卡片容器、页面级加载选择合适的 Spin 尺寸并理解其样式定制原理。一、三种尺寸与使用场景Ant Design 的 Spin 组件提供三档预设尺寸官方演示文档给出了明确的场景划分尺寸取值使用场景small小的用于文本加载适合按钮、表格局部单元格等细粒度区域的加载提示default默认不传size默认用于卡片容器级加载适合卡片、面板、区块内部的整块内容加载large大的用于页面级加载适合整页刷新、路由切换、首屏数据拉取等重量级等待场景size是 Spin 组件公开 API 中的核心参数之一。根据组件文档 index.md 中的 API 表格其完整定义如下参数类型默认值说明sizeenumdefaultspin 组件中点的大小可选值为small、default、largespiningbooleantrue用于内嵌其他组件的模式可以关闭 loading 效果其中size控制的是旋转点dot的物理尺寸三档之间呈倍数关系详见后文样式解析而spining控制的是加载态的显示与否与尺寸相互独立。二、完整演示代码size.md演示了在同一页面内依次渲染三种尺寸的 Spin是最直观的对比示例import { Spin } from antd; ReactDOM.render( div Spin sizesmall / br / Spin / br / Spin sizelarge / /div , mountNode);要点说明Spin sizesmall /文本级加载如行内、按钮中的等待提示Spin /不传size即为默认值default对应卡片容器级加载Spin sizelarge /页面级加载示例通过br /分行展示实际使用时三个尺寸的 Spin 均为行内块级元素可自由布局。该演示与同一目录下的 basic.mdSpin /基础用法、inside.md放入容器中、nested.md内嵌内容实现卡片加载中共同构成 Spin 组件的基础用法族谱建议配合阅读。三、源码实现size 是如何生效的3.1 propTypes 声明与 class 生成在组件实现 index.jsx 中size通过React.PropTypes.oneOf做取值校验propTypes: { className: React.PropTypes.string, size: React.PropTypes.oneOf([small, default, large]) },渲染时根据size值拼接对应的样式前缀类名let spinClassName classNames({ [prefixCls]: true, [${prefixCls}-sm]: size small, [${prefixCls}-lg]: size large, [className]: !!className, [${prefixCls}-spining]: this.props.spining, });可以看到size small时追加ant-spin-smsize large时追加ant-spin-lgdefault不追加任何尺寸类名仅保留基础类ant-spin这也解释了为什么默认尺寸无需显式声明默认属性prefixCls: ant-spin、spining: true在getDefaultProps中定义。从源码结构可以推断Spin 默认渲染三个 span 元素ant-spin-dot-first、ant-spin-dot-second、ant-spin-dot-third通过 CSS 动画形成旋转脉冲效果在不支持 CSS 动画的旧环境下则退化为纯文本加载中...。3.2 尺寸的样式实现尺寸的视觉差异完全由样式层控制。在 spin.less 中三个尺寸共用一个基础 dot 尺寸变量再按比例缩放spin-dot-default : #999; spin-dot-size : 8px; spin-dot-size-sm : spin-dot-size / 2; // 4px spin-dot-size-lg : spin-dot-size * 2; // 16px对应的尺寸规则// small -sm -dot { .square(spin-dot-size-sm); { margin-left: spin-dot-size-sm; } } // large -lg -dot { .square(spin-dot-size-lg); { margin-left: spin-dot-size-lg; } }其中.square(size)来自 size.less 工具混入用于将宽高同时设为同一值。结合基础规则默认 dot 直径为8px点间距同为8pxsmall档 dot 直径为4px8 ÷ 2间距同步缩小为4pxlarge档 dot 直径为16px8 × 2间距同步放大为16px三个 dot 之间通过animation-delay依次延迟0ms / 200ms / 400ms配合antSpinPulse关键帧40%时 opacity 为 1其余为 0形成循环闪烁的加载动效dot 的背景色与 Spin 文字颜色均取自主色变量primary-color。因此如果你需要在主题层面统一调整 Spin 的尺寸基数只需在主题文件中覆盖spin-dot-size变量默认主题入口见 themes/default/index.less三档尺寸会随之等比缩放。四、结合嵌套模式选择正确尺寸Spin 支持内嵌子元素形成容器级加载相关实现同样位于 index.jsx当Spin传入children时进入嵌套模式渲染结构变为ant-spin-nested-loading (ant-spin ant-spin-container)加载中时容器内容通过blur(1px)模糊并降低透明度至0.7同时禁用pointer-events防止用户在加载期间误操作嵌套模式下的 Spin 会被绝对定位到容器垂直居中位置。结合 nested.md 演示典型用法是用spining状态配合 Switch 切换加载import { Spin, Switch, Alert } from antd; const Card React.createClass({ getInitialState() { return { loading: false }; }, toggle(value) { this.setState({ loading: value }); }, render() { const container ( Alert message消息提示的文案 description消息提示的辅助性文字介绍 typeinfo / ); return ( div Spin spining{this.state.loading}{container}/Spin 切换加载状态Switch checked{this.state.loading} onChange{this.toggle} / /div ); } }); ReactDOM.render(Card /, mountNode);实践中可遵循以下组合原则页面级整页加载Spin sizelarge /配合spining控制显示避免页面空白卡片 / 区块内容加载嵌套模式Spin sizelarge spining{loading}卡片内容/Spin用大号点保证在容器中视觉平衡按钮 / 文本行内加载Spin sizesmall /避免挤占行高与布局关闭加载spining{false}时 Spin 处于opacity: 0且visibility: hidden状态仅保留占位不阻塞内容展示。五、使用建议与注意事项尺寸语义优先官方明确给出了小—文本、默认—卡片容器、大—页面级的映射关系不要为视觉效果随意混用保持页面内加载反馈的层级一致性嵌套模式务必结合spining控制嵌套容器加载时需要主动切换spining否则子内容不会进入模糊与禁交互状态自定义尺寸若内置三档无法满足需求可通过覆盖 Less 变量spin-dot-size等比调整基数或在size之外结合className自行追加样式规则className为公开 API浏览器兼容样式层为 IE10 提供了-ms-high-contrast下的白色背景降级方案见 spin.less旧浏览器下动画不可用时组件会自动退化为文字提示无需额外处理。通过合理运用small / default / large三档尺寸与spining状态控制即可在不同粒度的加载场景中提供一致、克制的等待反馈这是 Ant Design 加载体验设计的基本功之一。【免费下载链接】ant-designAn enterprise-class UI design language and React UI library项目地址: https://gitcode.com/gh_mirrors/antde/ant-design创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表