ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

rsuite Cascader 尺寸(size)属性全解析:lg / md / sm / xs 四档尺寸的实现与实战用法

rsuite Cascader 尺寸(size)属性全解析:lg / md / sm / xs 四档尺寸的实现与实战用法 前端UI组件【免费下载链接】rsuite A suite of React components .项目地址https://gitcode.com/gh_mirrors/rs/rsuite点击查看免费下载Cascader级联选择器是 rsuite 中用于对层级结构数据做单选的核心组件。本指南以 尺寸演示片段 为骨架完整讲解size属性的四种取值lg | md | sm | xs、默认行为、与其它布局属性的配合方式并结合 Picker 触发按钮实现 与 尺寸样式变量 的源码证据说明尺寸参数在底层是如何生效的。一、size属性是什么size是 Cascader 组件对外暴露的一个尺寸配置属性取值与默认值定义在 Cascader 官方属性表 中属性名称类型默认值描述sizelg \| md \| sm \| xs(md)设置组件尺寸要点默认值为md即不显式设置size时组件以中等尺寸渲染四档取值与 rsuite 全局 Button/Input 体系的尺寸档位保持一致便于在表单中与其它控件对齐该属性只作用于选择器触发按钮toggle及其内部文字、图标、清除按钮等不改变弹出层中树形选项列的内容密度。二、尺寸演示与完整可运行示例官方尺寸演示片段 用同一份树形数据渲染四个不同尺寸的 Cascader是理解size用法最直接的入口。其完整代码如下import { Cascader, VStack } from rsuite; import { mockTreeData } from ./mock; const data mockTreeData({ limits: [3, 3, 4], labels: (layer, value, faker) { const methodName [jobArea, jobType, firstName]; return faker.person[methodName[layer]](); } }); const App () ( VStack Cascader sizelg placeholderLarge data{data} w{224} / Cascader sizemd placeholderMedium data{data} w{224} / Cascader sizesm placeholderSmall data{data} w{224} / Cascader sizexs placeholderXsmall data{data} w{224} / /VStack ); ReactDOM.render(App /, document.getElementById(root));对示例的逐段拆解数据源mockTreeData是 rsuite 文档站点提供的数据生成工具其实现位于 docs/utils/mock.ts。limits: [3, 3, 4]表示按“3 个一级节点、每个一级节点 3 个二级节点、每个二级节点 4 个三级节点”的深度递归生成树labels为按层级返回标签的回调函数此处逐层使用jobArea职位区域、jobType职位类型、firstName人名三类 faker 数据。布局容器VStack是 rsuite 提供的纵向弹性布局组件用于把四个选择器自上而下排列方便肉眼对比各档位的高度差异。宽度约束示例给每个 Cascader 传了w{224}。w属于 rsuite 对style的便捷封装等价于style{{ width: 224 }}用于固定各档位宽度、保证对比时变量单一只差尺寸。占位符placeholder分别设置为Large / Medium / Small / Xsmall与size一一对应便于直观识别当前是哪一档。数据字段说明Cascader 默认从data中读取label显示文本、value选项值、children子节点数组三个字段三者均可通过 官方属性表 中的labelKey、valueKey、childrenKey重新指定。上述 mock 数据生成的每个节点形如{ label: Product Manager, // 或其它由 faker 生成的职位/人名文本 value: 1-1-2, // 由父级 value 拼接序号生成 children: [...] // 仅非叶子节点存在 }三、size在组件内部如何生效size并不是 Cascader 自己消费的属性而是沿“Cascader → PickerToggleTrigger → PickerToggle → ToggleButton”这条链路向下传递的。从源码看Cascader.tsx 在propsWithDefaults中解构出appearance、block、classPrefix等属性并将剩余属性通过{...rest}透传给PickerTogglePickerToggleTrigger.tsx 在PickerToggleTriggerProps接口中声明了size?: SizeSize即lg | md | sm | xs联合类型说明该属性属于所有 Picker 系组件的通用能力PickerToggle.tsx 解构出size后将其同时写入三处传给底层ToggleButton组件决定按钮实体的高度、内边距、字号写入 DOM 属性data-size{size}PickerToggle.tsx供样式表按尺寸做细粒度微调传给PickerIndicator控制右侧清除图标/加载指示器的大小。也就是说size对尺寸的影响由两层样式协作完成基础尺寸来自按钮尺寸体系细节微调来自 Picker 自己的data-size规则。四、四档尺寸的底层样式变量Cascader 的触发按钮在视觉上等价于一个按钮其尺寸全部来自 rsuite 的 CSS 变量体系定义在 src/Button/styles/_variables.scss尺寸档位高度字号内边距inline图标大小xs24px--rs-btn-size-xs--rs-font-size-xs--rs-spacing * 212pxsm30px--rs-btn-size-sm--rs-font-size-sm--rs-spacing * 2.516pxmd默认36px--rs-btn-size-md--rs-font-size-sm--rs-spacing * 316pxlg42px--rs-btn-size-lg--rs-font-size-md--rs-spacing * 3.520px在 Button/styles/_mixin.scss 中button-size-lg / button-size-md / button-size-sm / button-size-xs四个 mixin 会把上述变量批量注入到当前元素Button/styles/index.scss 则通过[data-sizelg]、[data-sizemd]等属性选择器把 mixin 与 DOM 上的data-size关联起来——这正是PickerToggle写入data-size的目的。此外Picker 样式 还会针对data-size做补充微调例如lg档下清除按钮图标放大到 16pxsm档下清除按钮高度收窄为 18pxxs档下清除按钮图标缩小到 12px文本输入区-textbox的左内边距随尺寸微调lg为 14px、sm为 8px、xs为 6px默认md为 10px。由此可见size的每一档都同时影响触发按钮的整体高度、字号、水平内边距以及内部指示器的细节四个档位在表单中从紧凑到宽松依次递增。五、与其它属性的组合实践1. 与block搭配实现整行撑满官方属性表中block的语义是“堵塞整行”占据容器整行宽度。当表单布局需要选择器与输入框等宽时可将size与block组合使用Cascader sizelg block placeholderLarge full-width data{data} /从 PickerToggleTrigger.tsx 可知block同样属于 Picker 通用属性样式层面.rs-picker-toggle.rs-btn在[data-blocktrue]下切换为display: flex见 Picker 样式从而占满父容器宽度。2. 与appearance搭配调整视觉风格appearance支持default | subtle默认default。size只改变尺寸、appearance只改变外观两者正交可自由组合例如紧凑的subtle风格工具栏选择器Cascader sizesm appearancesubtle placeholderCompact data{data} /3. 与cleanable搭配cleanable默认为true当已有选中值时触发按钮右侧会出现清除按钮。不同size档位下清除按钮会自动按上文所述的data-size规则缩放无需额外处理。4. 与w/style搭配官方演示统一使用w{224}固定宽度。实际项目中也可直接使用style{{ width: 100% }}或结合栅格系统分配宽度需要注意的是size只控制高度维度宽度需另行指定。六、实用建议与注意事项与输入类组件对齐Cascader 的size档位与 rsuite 的Input、SelectPicker、DatePicker等控件使用同一套按钮尺寸变量因此在同一表单行中为它们配置相同的size即可获得视觉上对齐的高度如统一使用md或统一使用lg。默认档位md在大多数表单场景中无需显式传sizelg适合触屏设备或需要突出主操作的场景xs适合表格筛选行、工具栏等紧凑区域sm介于两者之间。弹出层不受size影响size只作用于触发按钮。树形选项列表的高度、宽度由columnHeight、columnWidth控制二者均可在 官方属性表 中查到若要整体缩放弹出面板需另行设置这两个属性。响应式场景在超小屏幕上 Cascader 的弹出层默认显示为全宽 Drawer若 Cascader 位于 Modal/Drawer 内部可通过responsive{false}关闭该行为参见 Cascader 文档的响应式说明size与此行为相互独立。键盘与无障碍不受影响size只改变视觉尺寸不改变 键盘交互 与 ARIA 语义可放心在无障碍要求较高的场景使用任意档位。七、快速上手最小完整示例如果不使用文档站点的 mock 工具可直接用内联数据快速验证四档尺寸import { Cascader, VStack } from rsuite; const data [ { label: 技术, value: tech, children: [ { label: 前端, value: frontend }, { label: 后端, value: backend } ] }, { label: 产品, value: product, children: [{ label: 交互设计, value: design }] } ]; const App () ( VStack Cascader sizelg placeholderLarge data{data} w{224} / Cascader sizemd placeholderMedium data{data} w{224} / Cascader sizesm placeholderSmall data{data} w{224} / Cascader sizexs placeholderXsmall data{data} w{224} / /VStack ); export default App;将上述代码放入由 rsuite 驱动的前端工程如 create-react-app 示例 或 with-vite 示例即可运行完整的组件文档与其余演示片段外观、撑满、父节点可选等可继续阅读 Cascader 官方文档。赞分享前端UI组件【免费下载链接】rsuite A suite of React components .项目地址https://gitcode.com/gh_mirrors/rs/rsuite点击查看免费下载相关推荐RSUITE DateRangePicker 尺寸设置详解size 属性的 lg/md/sm/xs 用法与底层实现RSUITE DateRangePicker 尺寸设置详解size 属性的 lg/md/sm/xs 用法与底层实现 DateRangePicker 是 rsu前端UI组件如何使用 Duix.Avatar 上传 10 秒视频创建定制模特并完成声音克隆如何使用 Duix.Avatar 上传 10 秒视频创建定制模特并完成声音克隆 Duix.Avatar 是一个开源数字人项目官方说明的核心用法是提交一段前端UI组件RSUITE AutoComplete 尺寸size配置实战lg/md/sm/xs 四种规格的完整用法RSUITE AutoComplete 尺寸size配置实战lg/md/sm/xs 四种规格的完整用法 AutoComplete 是 rsuite 组件库前端UI组件创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表