# 蜂群UI组件文档 > 适用蜂群业务UI组件库 - [蜂群UI组件文档](https://newtest-fq-ui.ifengqun.com/index.md) ## markdown-page You don't need React to write simple standalone pages. - [Markdown page example](https://newtest-fq-ui.ifengqun.com/markdown-page.md): You don't need React to write simple standalone pages. ## docs ### components-pro - [GoodsCard 组件](https://newtest-fq-ui.ifengqun.com/docs/components-pro/GoodsCard 商品卡片.md): 介绍 - [Price 价格](https://newtest-fq-ui.ifengqun.com/docs/components-pro/Price 价格.md): 介绍 - [Search 组件](https://newtest-fq-ui.ifengqun.com/docs/components-pro/Search 搜索框.md): 介绍 - [VideoPlayer 视频播放器](https://newtest-fq-ui.ifengqun.com/docs/components-pro/VideoPlayer 视频播放器.md): 介绍 ### components - [Button 组件](https://newtest-fq-ui.ifengqun.com/docs/components/basic/Button 按钮.md): 介绍 - [Gird 栅格](https://newtest-fq-ui.ifengqun.com/docs/components/basic/Grid 栅格.md): 介绍 - [Icon 组件](https://newtest-fq-ui.ifengqun.com/docs/components/basic/Icon 图标.md): 介绍 - [SpriteIcon 组件](https://newtest-fq-ui.ifengqun.com/docs/components/basic/SpriteIcon 精灵图.md): 介绍 - [Typo 组件](https://newtest-fq-ui.ifengqun.com/docs/components/basic/Typo 字体.md): 介绍 - [Checkbox 多选框](https://newtest-fq-ui.ifengqun.com/docs/components/form/Checkbox 复选框.md): 介绍 - [FQForm 表单](https://newtest-fq-ui.ifengqun.com/docs/components/form/FQForm 表单.md): 介绍 - [Input 输入框(新版)](https://newtest-fq-ui.ifengqun.com/docs/components/form/Input 输入框.md): 用于接收用户文本、数字等内容输入,支持多种场景和样式扩展。 - [Radio 单选框](https://newtest-fq-ui.ifengqun.com/docs/components/form/Radio 单选框.md): 介绍 - [Stepper 步进器](https://newtest-fq-ui.ifengqun.com/docs/components/form/Stepper 步进器.md): 用于在一定范围内输入、调整数字,支持数量增减、禁用、步长、边框/无边框、Din字体等多种功能。 - [Switch 开关](https://newtest-fq-ui.ifengqun.com/docs/components/form/Switch 开关.md): 介绍 - [TextArea 输入框(新版)](https://newtest-fq-ui.ifengqun.com/docs/components/form/TextArea 输入框.md): 用于多行文本输入,支持字数统计、自动高度、错误提示、无边框等多种场景。 - [Badge 徽标数](https://newtest-fq-ui.ifengqun.com/docs/components/presentation/Badge 徽标数.md): 介绍 - [Card 组件](https://newtest-fq-ui.ifengqun.com/docs/components/presentation/Card 卡片.md): 介绍 - [Tag 标签](https://newtest-fq-ui.ifengqun.com/docs/components/presentation/Tag 标签.md): 介绍 - [FQWaterMark 水印组件](https://newtest-fq-ui.ifengqun.com/docs/components/reaction/FQWaterMark 水印.md): 介绍 - [Modal 组件](https://newtest-fq-ui.ifengqun.com/docs/components/reaction/Modal 对话框.md): 介绍 - [NoticeBar 组件](https://newtest-fq-ui.ifengqun.com/docs/components/reaction/NoticeBar 信息通知栏.md): 介绍 ### guide - [主题定制](https://newtest-fq-ui.ifengqun.com/docs/guide/主题定制.md): 介绍 - [快速上手](https://newtest-fq-ui.ifengqun.com/docs/guide/快速上手.md): 使用前准备 - [色彩](https://newtest-fq-ui.ifengqun.com/docs/guide/色彩.md): 色彩体系主要定义了设计中的基础色板。 --- # Full Documentation Content # Markdown page example You don't need React to write simple standalone pages. --- # GoodsCard 组件 ## 介绍[​](#介绍 "介绍的直接链接") 商品卡片,常见于首页、搜索页,用于展示单个商品信息,包括商品图片、商品价格等。 > 👉🏻 [项目组件使用备注](https://txckvfwee45.feishu.cn/sheets/Fz7ss7dmwhPliNt9ygycQxp7nYb) ## 用法[​](#用法 "用法的直接链接") ### 基本引入[​](#基本引入 "基本引入的直接链接") ``` import { FQGoodsCard } from '@fq/fq-weapp-ui-pro'; ``` 组件依赖的样式文件(仅按需引用时需要) ``` import '@fq/fq-weapp-ui-pro/dist/styles/components/goods-card.scss'; ``` ### 基础用法[​](#基础用法 "基础用法的直接链接") ``` } /> ``` ``` } /> ``` ``` } /> ``` ### 自定义排行榜标签 & 促销标签[​](#自定义排行榜标签--促销标签 "自定义排行榜标签 & 促销标签的直接链接") ``` { console.log('排行榜点击'); }} /> ``` ### 自定义促销相关描述[​](#自定义促销相关描述 "自定义促销相关描述的直接链接") ``` ``` ### 自定义营销标签[​](#自定义营销标签 "自定义营销标签的直接链接") ``` } /> ``` ### 自定义营销标签-会员价[​](#自定义营销标签-会员价 "自定义营销标签-会员价的直接链接") #### 非会员[​](#非会员 "非会员的直接链接") ``` } /> #### 会员 } /> ``` ### 售罄卡片[​](#售罄卡片 "售罄卡片的直接链接") ``` ``` ## API[​](#api "API的直接链接") ### 属性[​](#属性 "属性的直接链接") | 参数 | 说明 | 类型 | 默认值 | 版本 | | ------------------- | ----------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | ---------------- | -------------------------------------------------------- | | badgeNum | 左上角序号 | number | - | | | coupon | 优惠券 | `FQCardCoupon[]` | - | `v0.6.0` 旧 `string[]` / `[string, string][]` 格式已移除 | | formatOriginalPrice | 格式化原价(仅在垂直布局大卡片时生效) | `(originalPrice: string \| number) => string \| number` | `最低到手¥xxx起` | `v0.2.7` | | goodsBadge | 商品徽章 | ReactNode | - | `v0.2.7` | | goodsName | 商品名称 | string | - | | | goodsNameLine | 商品名称行数,默认2,即2行省略 | `number` / `string` | 2 | | | goodsNameOverflow | 商品名称溢出方式 | `ellipsis` / `clip` | `clip` | | | isMember | 是否会员,只有设置了showMemberLabel才生效 | boolean | `false` | | | isNoStock | 是否无库存 | boolean | `false` | | | isNoStock | 是否无库存 | boolean | `false` | | | marketingLabel | 营销标签 | `{ labelText?: string, labelImage?: string, dateText?: string, salesVolume?: string }` | - | | | marketingLabelProps | 营销标签配置 | `{ bgUrl?: string }` | - | | | niceRate | 惊艳度 | `number` / `string` | - | | | originalPrice | 原价 | `number` / `string` | - | | | price | 价格 | `number` / `string` | - | | | priceAfterText | 价格后的文案 | string | - | `v0.2.7` 中已移除 | | priceProps | 价格配置,[price]() props | `Omit` | - | `v0.2.7` | | promoLabelProps | 促销标签配置 | `{ bgColor?: string; color?: string; icon?: string }` | - | | | promoLabelText | 促销标签文案 | string | - | | | rankingLabelText | 排名信息 | string | - | | | reviewCount | 评价数量 | `number` / `string` | - | | | salesVolume | 销量 | `number` / `string` | - | | | sellingPoint | 卖点 | string | - | | | customMarketingText | 自定义营销文案(如果已有的销量那一行不满足样式,可使用当前参数) | string | - | | | showMarketingLabel | 是否显示营销标签 | boolean | `false` | | | showPromoLabel | 是否显示促销标签 | boolean | `false` | | | showRankingLabel | 是否显示排名 | boolean | `false` | | | showMemberLabel | 是否显示会员标签 | boolean | `false` | | | onRankingLabelClick | rankingLabel 点击事件 | `() => void` | - | | | vipPrice | 会员价文案, 只有设置了showMemberLabel,并且isMember=false才展示 | `string` | - | | 更多配置参考\[FQCard]\(../components/presentation/Card 卡片.mdx)。 ### FQCardCoupon[​](#fqcardcoupon "FQCardCoupon的直接链接") 优惠券类型,`v0.3.0` 新增。 | 参数 | 说明 | 类型 | 默认值 | 版本 | | ----------- | -------------- | ------------- | ------ | ---- | | prefix | 优惠券前缀 | string | - | | | prefixStyle | 优惠券前缀样式 | CSSProperties | - | | | text | 优惠券文案 | string | - | | | style | 优惠券样式 | CSSProperties | - | | > 从使用者角度,传入的方式相比之前的复杂了;但因业务扩展,这种方式可以更好扩展卡片优惠券标签的样式。如:直播间小绿车-直播间专享优惠券。 ### 插槽[​](#插槽 "插槽的直接链接") | 参数 | 说明 | 类型 | 默认值 | 版本 | | ---------- | ---------------------- | --------- | ------ | -------- | | goodsBadge | 商品徽章 | ReactNode | - | `v0.2.7` | | priceSlot | 原有 FQCard price 插槽 | ReactNode | - | `v0.5.1` | 其余与\[FQCard]\(../components/presentation/Card 卡片.mdx)插槽一致,传入时将覆盖原位置预插入的元素。 ### GoodsCard.ComposeButton[​](#goodscardcomposebutton "GoodsCard.ComposeButton的直接链接") 卡片组合购物按钮组件,常用于商品大卡片。 | 参数 | 说明 | 类型 | 默认值 | 版本 | | ------------ | ---------------------------------------------------------------------------------------------------- | ------------------------------ | ----------- | ---- | | buyBtnProps | 购买按钮 [button]() props | object | - | | | buyText | 购买按钮文本 | ReactNode | '购买' | | | cartBtnProps | 购物车按钮 [button]() props | object | - | | | cartText | 购物车按钮文本 | ReactNode | `` | | | disabled | 按钮禁用 | boolean | false | | | onAddCart | 点击购物车按钮时回调 | `(event: ITouchEvent) => void` | - | | | onBuy | 点击购买按钮时回调 | `(event: ITouchEvent) => void` | - | | | onClick | 点击按钮时回调 | `(event: ITouchEvent) => void` | - | | ### GoodsCard.PlusButton[​](#goodscardplusbutton "GoodsCard.PlusButton的直接链接") 卡片按钮组件,常用于商品小卡片。 属性和事件和 `FQButton` 一致,更多配置参考 [Button 组件]()。 ## FAQ[​](#faq "FAQ的直接链接") **如果卡片右下方的按钮,预设的两种按键 `GoodsCard.ComposeButton`、 `GoodsCard.PlusButton` 满足不了业务场景时,如何自定义按钮?** 你可以通过 `actionArea` 传入自定义组件来定义。 **假设营销标签模块、或促销相关描述的布局已经和 `FQGoodsCard` 差异比较大时?** 你可以通过传入 `FQCard` 相关的插槽,进行覆盖 `FQGoodsCard` 预插入内容,因为 `FQGoodsCard` 继承至 `FQCard`。 **假设 `salesVolume` 销量、 `niceRate` 惊艳度的文案样式已经不能满足业务场景,如何自定义文案和样式?** 你可以通过 `customMarketingText` 传入自定义组件来定义。 --- # Price 价格 ## 介绍[​](#介绍 "介绍的直接链接") 价格组件,用于展示商品价格信息。 ## 用法[​](#用法 "用法的直接链接") ### 基本引入[​](#基本引入 "基本引入的直接链接") ``` import { FQPrice } from '@fq/fq-weapp-ui-pro'; ``` 组件依赖的样式文件(仅按需引用时需要) ``` import '@fq/fq-weapp-ui-pro/dist/styles/components/price.scss'; ``` ### 基础用法[​](#基础用法 "基础用法的直接链接") ``` ``` ### 修改symbol符号 & 位置[​](#修改symbol符号--位置 "修改symbol符号 & 位置的直接链接") ``` ``` ### 设置原价[​](#设置原价 "设置原价的直接链接") ``` ``` ### 显示后缀文案[​](#显示后缀文案 "显示后缀文案的直接链接") ``` ``` ### 设置价格颜色[​](#设置价格颜色 "设置价格颜色的直接链接") ``` ``` ### 设置价格字重[​](#设置价格字重 "设置价格字重的直接链接") ``` ``` ### 价格后缀-文案[​](#价格后缀-文案 "价格后缀-文案的直接链接") ``` ``` ### 价格后缀-图片[​](#价格后缀-图片 "价格后缀-图片的直接链接") ``` ``` ### 完整价格展示[​](#完整价格展示 "完整价格展示的直接链接") ``` ``` ## API[​](#api "API的直接链接") ### 属性[​](#属性 "属性的直接链接") | 参数 | 说明 | 类型 | 默认值 | 版本 | | -------------- | ------------------------------ | ------------------------------------------------------------------------------ | ---------- | -------- | | classNames | 配置价格内置模块的 className | `Record` | - | `v0.6.0` | | colors | 配置价格内置模块的 color | `Record` | - | `v0.6.0` | | originalPrice | 设置原始价格 | `number` / `string` | - | | | price | 设置价格 | `number` / `string` | - | | | priceAfter | 设置价格后文案 | string | - | | | priceBefore | 设置价格前文案 | string | - | | | size | 设置价格大小,以主价格大小为准 | `28` / `32` / `36` / `40` / `48` / `56` / `64` / `80` | `36` | | | showSuffixText | 是否显示后缀文案(起) | boolean | `false` | | | symbol | 符号类型 | string | `¥` | | | symbolPosition | 设置符号显示在价格前或者后 | `'before'` / `'after'` | `'before'` | | | styles | 配置价格内置模块的 style | `Record` | - | `v0.6.0` | | weight | 设置价格字重 | `'light'` / `'normal'` / `'medium'` / `'bold'` / `300` / `400` / `500` / `700` | `500` | `v0.6.0` | ### SemanticDOM[​](#semanticdom "SemanticDOM的直接链接") | 参数 | 说明 | | ------------- | ---------- | | originalPrice | 原价 | | priceBefore | 价格前文案 | | priceAfter | 价格后文案 | | price | 价格 | | suffixText | 后缀文案 | --- # Search 组件 ## 介绍[​](#介绍 "介绍的直接链接") 通用业务搜索栏组件,常用于页面的顶部搜索,也可以与导航栏组合使用. ## 用法[​](#用法 "用法的直接链接") ### 基本引入[​](#基本引入 "基本引入的直接链接") ``` import { FQSearch } from '@fq/fq-weapp-ui-pro'; ``` 组件依赖的样式文件(仅按需引用时需要) ``` import '@fq/fq-weapp-ui-pro/dist/styles/components/search.scss'; ``` ### 基础用法[​](#基础用法 "基础用法的直接链接") ``` ``` ### 小号搜索框[​](#小号搜索框 "小号搜索框的直接链接") ``` ``` ### 固定宽度[​](#固定宽度 "固定宽度的直接链接") ``` ``` ### 受控组件[​](#受控组件 "受控组件的直接链接") ``` ``` ### 带图标组合使用[​](#带图标组合使用 "带图标组合使用的直接链接") ``` ``` ### 搜索按钮颜色[​](#搜索按钮颜色 "搜索按钮颜色的直接链接") ``` ``` ### 不带搜索按钮和清除按钮[​](#不带搜索按钮和清除按钮 "不带搜索按钮和清除按钮的直接链接") ``` ``` ### 禁用[​](#禁用 "禁用的直接链接") ``` ``` ## API[​](#api "API的直接链接") ### 属性[​](#属性 "属性的直接链接") | 参数名 | 类型 | 默认值 | 说明 | | ------------------ | ------------------------- | ----------- | ------------------------------------------------------------- | | `value` | `string` | - | 当前值 | | `ref` | `Ref` | - | 当前input的ref实例 | | `size` | `SizeType` | `'default'` | 搜索栏大小 \['default', 'small'],如果有width,height,则失效 | | `width` | \`string | number\` | `'default'` | | `height` | \`string | number\` | `'default'` | | `onSearch` | `(value: string) => void` | - | 搜索回调 | | `onInput` | `(value: string) => void` | - | 输入回调 | | `onConfirm` | `(value: string) => void` | - | 回车/键盘搜索后的回调 | | `showSearchButton` | `boolean` | `true` | 是否展示右侧搜索按钮 | | `autoFocus` | `boolean` | `false` | 自动聚焦 | | `allowClear` | `boolean` | `true` | 展示清除按钮 | | `loading` | `boolean` | `false` | 加载中状态 | | `confirmText` | `string` | `'搜索'` | 搜索按钮文本 | | `disabled` | `boolean` | `false` | 禁用 | | `bordered` | `boolean` | `true` | 边框 | | `enterButton` | `React.ReactNode` | - | 搜索按钮 | | `enterButtonType` | `string` | `'default'` | 搜索按钮类型 'default' | | `defaultPrefixCls` | `string` | - | 默认前缀类名 | | `focusPrefixCls` | `string` | - | 焦点前缀类名 | | `placeholder` | `string` | - | 占位符 | | `searchButtonText` | `string` | - | 搜索按钮文案 | | `addonBeforeIcon` | `React.ReactNode` | - | 展示左侧放大镜搜索图标 | | `inputProps` | `Object` | `{}` | Input 扩展方法, 参考微信Input文档 | --- # VideoPlayer 视频播放器 ### 介绍[​](#介绍 "介绍的直接链接") * 支持横竖屏布局与组件级全屏(不打断播放进度) * 长按倍速播放以及长按下拉倍速锁定 (长按触发倍速播放,长按下拉触发倍速锁) * 沉浸式模式(双指捏合进入/退出,隐藏控件/进度条/弹幕) * 自定义控制条(按钮显隐、插槽扩展、自定义渲染) * 进度条预览(分片小窗、时间范围提示、实时时间) * 拖拽小窗分片预览能力 (拖拽进度条能实时显示当前视频的切片) * 上次观看记录(10%\~90% 区间节流存储,自动恢复并气泡提示) * 弹幕能力(顶/中/底三栏,密度/速度可配,随倍速/播放状态同步,可动态发送) * 震动反馈(捏合/长按倍速进入与恢复的轻/重震) ### 安装与引入[​](#安装与引入 "安装与引入的直接链接") ``` import FQVideoPlayer from '@fq/fq-weapp-ui-pro'; ``` 按需样式(按需引入时需要): ``` import '@fq/fq-weapp-ui-pro/dist/styles/components/video-player.scss'; ``` ### 基础用法[​](#基础用法 "基础用法的直接链接") ``` ``` ### 横屏模式 + 组件级全屏[​](#横屏模式--组件级全屏 "横屏模式 + 组件级全屏的直接链接") ``` ``` ### 进度条预览(小窗 + 时间范围)[​](#进度条预览小窗--时间范围 "进度条预览(小窗 + 时间范围)的直接链接") ``` ``` ### 自定义控制条(扩展按钮 / 完全自定义)[​](#自定义控制条扩展按钮--完全自定义 "自定义控制条(扩展按钮 / 完全自定义)的直接链接") ``` const extraButtons = [ console.log('collect')}>收藏, console.log('download')}>下载, ]; (...) }} /> ``` ### 上次观看(自动记录/恢复)[​](#上次观看自动记录恢复 "上次观看(自动记录/恢复)的直接链接") ``` ``` ### 手势与沉浸式[​](#手势与沉浸式 "手势与沉浸式的直接链接") ``` ``` ### 弹幕(静态 + 动态发送)[​](#弹幕静态--动态发送 "弹幕(静态 + 动态发送)的直接链接") ``` const ref = useRef(null); // 运行时发送 ref.current?.sendBarrage?.({ text: '这是一条新弹幕' }); ``` ## API[​](#api "API的直接链接") ### FQVideoPlayer Props[​](#fqvideoplayer-props "FQVideoPlayer Props的直接链接") | 参数名 | 类型 | 默认值 | 说明 | | ------------------------ | --------------------------------------------------- | --------- | ------------------------------------------------------------------- | | `width` | `number` | - | 组件宽(用于方向预判,可选) | | `height` | `number` | - | 组件高(用于方向预判,可选) | | `src` | `string` | 必填 | 视频地址 | | `cover` | `string` | - | 自定义封面(组件层渲染,支持 `coverFit`) | | `coverFit` | `'cover' \| 'contain'` | `contain` | 封面适配方式 | | `muted` | `boolean` | `false` | 静音 | | `controls` | `boolean \| ControlsOptions` | `true` | 控制条:`false` 隐藏;对象启用自定义按钮与插槽 | | `autoplay` | `boolean` | `false` | 自动播放 | | `loop` | `boolean` | `false` | 循环播放;同时驱动弹幕循环 | | `initialTime` | `number` | `0` | 初始起播秒数(不自动播放时仅 seek,不播放) | | `objectFit` | `'contain' \| 'fill' \| 'cover'` | `contain` | 视频铺放模式 | | `className` | `string` | - | 容器类名 | | `styles` | `FQVideoPlayerStyles` | - | 统一样式(`root/movableArea/movableView/video/bar/controls/cover`) | | `barrage` | `boolean \| BarrageOptions` | `false` | 弹幕开关/配置(`true` 使用默认) | | `showSliderRealtimeInfo` | `boolean` | `true` | 进度条两侧实时时间(左:当前,右:剩余) | | `slider` | `boolean \| SliderOptions` | `true` | 进度条开关与配置(对象时需提供 `size`) | | `orientation` | `Orientation` | `auto` | `auto/portrait/landscape`(内部自动/强制方向) | | `layoutPreset` | `'default' \| 'compact' \| 'spacious'` | `default` | 预留布局预设 | | `enableProgressGesture` | `boolean` | `false` | 是否开启进度滑动手势(保留) | | `enablePinchGesture` | `boolean` | `true` | 是否开启双指捏合沉浸式切换 | | `lastWatch` | `boolean \| LastWatchOptions` | `false` | 上次观看:开关/配置 | | `onClose` | `Function: void` | - | 关闭按钮回调:竖屏全屏视频场景向外层触发 | | `onPlay` | `Function: void` | - | 播放事件 | | `onPause` | `Function: void` | - | 暂停事件 | | `onEnded` | `Function: void` | - | 结束事件(会清理 lastWatch 缓存) | | `onError` | `(err: ErrorMsg) => void` | - | 统一错误(结构化 `ErrorMsg`) | | `onTimeUpdate` | `Function: void` | - | 进度更新 | | `onWaiting` | `Function: void` | - | 缓冲中 | | `onLoadedMetadata` | `Function: void` | - | 元数据就绪(内部会做方向与初始进度同步) | | `onOrientationChange` | `(o: Orientation) => void` | - | 布局方向变化回调 | | `onPreloadNextVideo` | `(id: string) => void` | - | 缓冲>10% 时触发预加载下一段 | | `onPlayBackRate` | `(rate: number, type: 'manual' \| 'touch') => void` | - | 倍速变更回调 | | `onScaleChange` | `(isScale: boolean) => void` | - | 缩放进入/退出状态(沉浸式手势) | | `onDoubleTap` | `(e) => void` | - | 双击事件 | | `videoId` | `string` | - | 自定义视频实例标识(选择器) | | `pageId` | `string \| number` | - | 页面标识(事件总线隔离) | ### ControlsOptions[​](#controlsoptions "ControlsOptions的直接链接") | 属性 | 类型 | 默认值 | 说明 | | ------------------ | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------- | | `renderLeft` | `React.ReactNode` | `默认关闭按钮` | 左侧区域插槽(竖屏时展示,横屏隐藏)。返回节点替换默认关闭按钮。 | | `renderExtraRight` | `React.ReactNode` | `-` | 最右侧额外区域插槽。 | | `buttons` | `{ menu?: boolean; play?: boolean; mute?: boolean; rate?: boolean; fullScreen?: boolean; }` | `{ menu:true, play:true, mute:true, rate:true, fullScreen:false }` | 基础按钮显隐配置。全屏按钮需显式开启。 | | `extraButtons` | `React.ReactNode[]` | `[]` | 自定义按钮数组,插入在内置按钮之后,支持直接传节点。非法子类型(对象/函数/布尔)会被安全忽略。 | | `renderButtons` | \`React.ReactNode | (ctx) => React.ReactNode\` | `-` | 子项:`buttons` | 键 | 类型 | 默认值 | 说明 | | ------------ | --------- | ------- | -------------------------------------------- | | `menu` | `boolean` | `true` | 显示“更多/菜单”按钮 | | `play` | `boolean` | `true` | 显示“播放/暂停”按钮 | | `mute` | `boolean` | `true` | 显示“静音/取消静音”按钮 | | `rate` | `boolean` | `true` | 显示“倍速”按钮(循环 0.5x→1x→1.25x→1.5x→2x) | | `fullScreen` | `boolean` | `false` | 显示“全屏”按钮(仅横屏布局生效) | 提示:全屏按钮仅在横屏布局下展示有效(内部已有 `isLandscape` 判断),且需 `fullScreen: true`。 ### SliderOptions[​](#slideroptions "SliderOptions的直接链接") | 属性 | 类型 | 默认值 | 说明 | | ---------------------- | --------------------------------------------------- | ------- | ------------------------------------------------------------------------------ | | `size` | `'large' \| 'middle' \| 'small'` | 必填 | 进度条尺寸。 | | `showRealtimeTimeInfo` | `boolean` | `true` | 是否在进度条两侧显示实时时间(左:当前,右:剩余)。 | | `showTimeRange` | `boolean` | `true` | 拖拽中是否在顶部显示 `time-range` 提示文本。 | | `enablePreview` | `boolean` | `false` | 是否启用拖拽预览小窗(若同时使用旧 props `enablePreviewSnapshots` 也会启用)。 | | `previewOptions` | `{ snapshot: string; time: number }[]` | `-` | 预览分片配置,time 为该切片代表的出现秒数。 | | `previewThrottleMs` | `number` | `200` | 预览小窗图片更新的节流间隔(毫秒)。 | | `styles` | `{ wrapper?; track?; buffer?; handle?; realtime? }` | `-` | 进度条各部件的内联样式定制。 | 说明:横屏时预览小窗按 16:9 呈现,竖屏按 9:16 呈现。 ### LastWatchOptions[​](#lastwatchoptions "LastWatchOptions的直接链接") | 属性 | 类型 | 默认值 | 说明 | | --------------- | -------- | ------ | -------------------------------------- | | `throttleMs` | `number` | `4000` | 节流写入本地缓存的最小间隔(毫秒)。 | | `minResumeSec` | `number` | `5` | 最小可恢复的播放秒数(不足不记录)。 | | `ignoreTailSec` | `number` | `2` | 距离视频结尾的忽略秒数(过近不恢复)。 | | `startPercent` | `number` | `10` | 参与记录/恢复的起始百分比(含)。 | | `endPercent` | `number` | `90` | 参与记录/恢复的结束百分比(含)。 | 策略:仅在区间内(10%\~90%)且间隔到达节流阈值时写入;超出区间或播放结束会清理缓存。 ### BarrageOptions(弹幕)[​](#barrageoptions弹幕 "BarrageOptions(弹幕)的直接链接") | 属性 | 类型 | 默认值 | 说明 | | --------------- | ---------------------------------------------------- | ------- | ----------------------------------------------------------------------------------------------- | | `enabled` | `boolean` | `false` | 是否启用弹幕显示。 | | `density` | `{ top?: number; middle?: number; bottom?: number }` | `-` | 顶/中/底三区各自的行数(密度)。 | | `speedPxPerSec` | `number` | `-` | 基础速度(px/s),会随 `playbackRate` 同步变更。 | | `data` | `BarrageItem[]` | `-` | 静态数据源,`BarrageItem` 包含 `id/text/avatar?/zone?/time`。未提供 zone 时内部会稳定分配车道。 | | `styles` | `React.CSSProperties` | `-` | 弹幕容器样式。 | | `className` | `string` | `-` | 弹幕容器自定义类名。 | `BarrageItem` 结构:`{ id: string|number; text: string; avatar?: string; zone?: 'top'|'middle'|'bottom'; time: number }` ### Ref 能力(FQVideoPlayerRef)[​](#ref-能力fqvideoplayerref "Ref 能力(FQVideoPlayerRef)的直接链接") | 方法 | 签名 | 说明 | | ------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------- | | `play` | `(): Promise` | 播放。 | | `pause` | `(): Promise` | 暂停。 | | `seek` | `(time: number): Promise` | 跳转到指定秒。 | | `setPlaybackRate` | `(rate: number): Promise` | 设置倍速,手动来源会重置锁条与锁定态。 | | `mute` | `(): void` | 静音。 | | `unmute` | `(): void` | 取消静音。 | | `setMuted` | `(muted: boolean): void` | 显式设置静音开关。 | | `enterFullscreen` | `(): void` | 组件级全屏(仅横屏布局下进入;已全屏则无效)。 | | `exitFullscreen` | `(): void` | 退出组件级全屏。 | | `toggleFullscreen` | `(): void` | 切换组件级全屏(横屏进入/退出)。 | | `sendBarrage` | BarrageItem | 发送一条新弹幕,立即出现在当前时间窗口。 | | `getState` | `(): { playing; loading; muted; playbackRate; immersive; currentTimeSeconds; totalDurationSeconds; bufferPercent; orientation; isFullscreen; }` | 获取当前内部状态快照。 | ## 常见问题[​](#常见问题 "常见问题的直接链接") * 全屏按钮为什么不显示? * 需设置 `controls.buttons.fullScreen = true`,且仅在横屏布局下显示。 * 预览小窗横屏显示有白边? * 已在横屏使用 16:9 尺寸,竖屏 9:16;请确保传入的切片图本身也是对应比例。 * 上次观看为何未恢复? * 小于 `startPercent` 或超过 `endPercent`(或接近结尾 `ignoreTailSec`)不会恢复;首次播放不足 `minResumeSec` 也不会记录。 --- # Button 组件 ## 介绍[​](#介绍 "介绍的直接链接") 按钮用于开始一个即时操作。 ## 用法[​](#用法 "用法的直接链接") ### 基本引入[​](#基本引入 "基本引入的直接链接") ``` import { FQButton } from '@fq/fq-weapp-ui'; ``` 组件依赖的样式文件(仅按需引用时需要) ``` import '@fq/fq-weapp-ui/dist/styles/components/button.scss'; ``` ### 基础用法[​](#基础用法 "基础用法的直接链接") ``` 按钮 ``` ### 颜色和变体、禁用、加载中状态[​](#颜色和变体禁用加载中状态 "颜色和变体、禁用、加载中状态的直接链接") ``` Solid Solid Outlined Filled Solid Outlined Filled ``` ### 按钮形状[​](#按钮形状 "按钮形状的直接链接") ``` default A round ``` ### 按钮文本加粗[​](#按钮文本加粗 "按钮文本加粗的直接链接") ``` 加粗 true = 600 加粗 100 加粗 200 加粗 300 加粗 400 加粗 500 加粗 600 加粗 700 加粗 800 加粗 900 ``` ### Block按钮[​](#block按钮 "Block按钮的直接链接") ``` Solid Outlined Filled ``` ## API[​](#api "API的直接链接") 支持小程序原生 [Button](https://developers.weixin.qq.com/miniprogram/dev/component/button.html) 组件的所有属性,并额外扩展以下属性 | 参数 | 说明 | 类型 | 默认值 | 版本 | | ------------ | ------------------------------------------------------ | ---------------------------------------------------------------------------------------- | --------- | ------- | | block | 将按钮宽度调整为其父宽度的选项 | boolean | `false` | | | bold | 设置按钮文本加粗,默认 false。也可传入数字表示加粗程度 | boolean \| `100` \| `200` \| `300` \| `400` \| `500` \| `600` \| `700` \| `800` \| `900` | `false` | v0.15.0 | | color | 设置按钮的颜色 | `default` \| `primary` \| `primary-gradient` | `primary` | | | disabled | 设置按钮失效状态 | boolean | `false` | | | icon | 设置按钮的图标组件 | React.ReactNode | - | | | iconPosition | 设置按钮图标组件的位置 | `start` \| `end` | `start` | | | disabled | 设置按钮失效状态 | boolean | `false` | | | loading | 设置按钮的载入状态 | boolean | `false` | | | size | 设置按钮的大小 | `xl` \| `lg` \| `md` \| `sm` \| `xs` \| `xxs` | `md` | | | shape | 设置按钮的形状 | `default` \| `circle` \| `round` | `default` | | | variant | 设置按钮的变体 | `outlined` \| `solid` \| `filled` | `solid` | | ## FAQ[​](#faq "FAQ的直接链接") ### 在 FQButton 组件传递 `Show` 组件时,可能存在于期望结果不一致的情况?[​](#在-fqbutton-组件传递-show-组件时可能存在于期望结果不一致的情况 "在-fqbutton-组件传递-show-组件时可能存在于期望结果不一致的情况的直接链接") 假设有这样一段代码 ``` fallback} style={{ flexDirection: 'column' }}> <> show show2 ``` 期望的渲染结果是: ``` ``` 因为在 `FQButton` 组件中,会判断 `children` 是否为 `string` 或 `React.Fragment`,如果是,则会包裹多一层 ``,主要是为了处理 iconPosition 的对 `children` 的影响。 但实际渲染结果是: ``` ``` 原因在于 `Show` 组件的 `type` 是函数,而不是 `string` 或 `React.Fragment`,因此没有进行额外的包裹。 虽然结果是你想要的,是按上下排列的,但间距会变大,因为是 `FQButton` 组件的 `gap` 属性影响了(主要是为了处理 icon 与 `children` 的间距)。 不建议通过修改 `gap` 来达到预期, 正确处理方式如下: ``` fallback}> show show2 ``` --- # Gird 栅格 ## 介绍[​](#介绍 "介绍的直接链接") 24 栅格系统。 ## 用法[​](#用法 "用法的直接链接") ### 基本引入[​](#基本引入 "基本引入的直接链接") ``` import { FQCol, FQRow } from '@fq/fq-weapp-ui'; ``` 组件依赖的样式文件(仅按需引用时需要) ``` import '@fq/fq-weapp-ui/dist/styles/components/row.scss'; import '@fq/fq-weapp-ui/dist/styles/components/col.scss'; ``` ### 基础栅格[​](#基础栅格 "基础栅格的直接链接") ``` col col col col col col col col col col ``` ### 区块间隔[​](#区块间隔 "区块间隔的直接链接") ``` col col col col col col col col col col col col ``` ### 左右偏移[​](#左右偏移 "左右偏移的直接链接") ``` col-8 col-8 col-6 col-offset-6 col-6 col-offset-6 col-12 col-offset-6 ``` ### 排版[​](#排版 "排版的直接链接") ``` col-4 col-4 col-4 col-4 col-4 col-4 col-4 col-4 col-4 col-4 col-4 col-4 col-4 col-4 col-4 col-4 col-4 col-4 col-4 col-4 col-4 col-4 col-4 col-4 ``` ### 对齐[​](#对齐 "对齐的直接链接") ``` col-4 col-4 col-4 col-4 col-4 col-4 col-4 col-4 col-4 col-4 col-4 col-4 ``` ### Flex填充[​](#flex填充 "Flex填充的直接链接") ``` 2 / 5 3 / 5 100rpx Fill Rest 1 1 200rpx 0 1 300rpx none auto with no-wrap ``` ## API[​](#api "API的直接链接") ### Row[​](#row "Row的直接链接") | 参数 | 说明 | 类型 | 默认值 | 版本 | | ------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ------- | ---- | | align | 垂直对齐方式 | `top` \| `middle` \| `bottom` \| `stretch` | `top` | | | gutter | 栅格间隔,可以写成像素值或者使用数组形式同时设置 `[水平间距, 垂直间距]` | number \| array | 0 | | | justify | 水平排列方式 | `start` \| `end` \| `center` \| `space-around` \| `space-between` \| `space-evenly` | `start` | | | wrap | 是否自动换行 | `boolean` / `number` | `true` | | ### Col[​](#col "Col的直接链接") | 参数 | 说明 | 类型 | 默认值 | 版本 | | ------ | ------------------------------------------- | ---------------- | ------ | ---- | | flex | flex 布局属性 | string \| number | - | | | offset | 栅格左侧的间隔格数,间隔内不可以有栅格 | number | 0 | | | order | 栅格顺序 | number | 0 | | | pull | 栅格向左移动格数 | number | 0 | | | push | 栅格向右移动格数 | number | 0 | | | span | 栅格占位格数,为 0 时相当于 `display: none` | number | 0 | | --- # Icon 组件 ## 介绍[​](#介绍 "介绍的直接链接") Icon小图标组件 ## 用法[​](#用法 "用法的直接链接") ### 基本引入[​](#基本引入 "基本引入的直接链接") ``` // 1. 引入 import { Icon } from 'fq-mall-taro-components'; // 2. 设置icon对应的定义 public static IconTypes = { } ``` ### 基础用法[​](#基础用法 "基础用法的直接链接") ``` ``` ### 修改颜色与大小用法[​](#修改颜色与大小用法 "修改颜色与大小用法的直接链接") ``` ``` ### 修改样式名[​](#修改样式名 "修改样式名的直接链接") ``` ``` ### 增加点击事件[​](#增加点击事件 "增加点击事件的直接链接") ``` {}} className='xxx' value={Icon.IconTypes.back1} size='20' color={'#cccccc'} /> ``` ## API[​](#api "API的直接链接") ### 属性[​](#属性 "属性的直接链接") | 参数 | 说明 | 类型 | 默认值 | | ----------- | ----------------- | ------------------------------------------ | --------- | | value | 对应iconfont的值 | string | - | | customStyle | 自定义style, 可选 | string \| React.CSSProperties \| undefined | - | | className | class样式, 可选 | string | - | | prefixClass | 样式, 可选 | string | 'fq-icon' | ### 方法[​](#方法 "方法的直接链接") | 函数名 | 说明 | 参数 | | ------- | ---------- | ---- | | onClick | 点击时触发 | - | --- # SpriteIcon 组件 ## 介绍[​](#介绍 "介绍的直接链接") 精灵图图标组件 ## 用法[​](#用法 "用法的直接链接") ### 基本引入[​](#基本引入 "基本引入的直接链接") ``` // 1. 引入 import { FQSpriteIcon, FQSpriteIconProps, SpriteIconProps, } from "@fq/fq-weapp-ui"; ``` ### 基础封装[​](#基础封装 "基础封装的直接链接") ``` // 1. 引入精灵图配置 import { coordinates } from '../../../sprites/outputs/icons/coordinates'; const coordinatesFilesData = { icons: coordinates, }; // 2. 结合精灵图使用 const SpriteIconContainer = ({ coordinatesFiles, module, name, size = 0, width, height, className, style, onClick, }: FQSpriteIconProps) => ( ); const SpriteIcon = ({ module = "icons", name, size = 0, width, height, className, style, onClick, }: SpriteIconProps) => ( ); ``` ### 基础用法[​](#基础用法 "基础用法的直接链接") ``` import { SpriteIcon } from "@/component/SpriteIcon"; ``` ### 项目调取[​](#项目调取 "项目调取的直接链接") width、height宽高不等 ``` ``` ### 项目调取,size[​](#项目调取size "项目调取,size的直接链接") 宽高相等 ``` ``` ## API[​](#api "API的直接链接") ### 属性[​](#属性 "属性的直接链接") | 参数 | 说明 | 类型 | 默认值 | | ---------------- | ---------------- | ------------------------------------------ | ------- | | coordinatesFiles | 图标坐标文件 | Record\ | - | | module | 图标模块名 | string | 'icons' | | name | 要显示的图标名称 | string | - | | size | 图标的大小 | number | 0 | | width | 图标的宽度 | number \| undefined | - | | height | 图标的高度 | number \| undefined | - | | className | 自定义类名 | string | - | | style | 自定义样式 | string \| React.CSSProperties \| undefined | - | ### 方法[​](#方法 "方法的直接链接") | 函数名 | 说明 | 参数 | | ------- | ---------- | ---- | | onClick | 点击时触发 | - | --- # Typo 组件 ## 介绍[​](#介绍 "介绍的直接链接") 字体组件用于展示文本内容。分别有 `FQText`、`FQTitle`、`FQNumeral` 组件。 ## Title 组件[​](#title-组件 "Title 组件的直接链接") ### 介绍[​](#介绍-1 "介绍的直接链接") 标题组件用于展示页面标题。 ### 用法[​](#用法 "用法的直接链接") #### 基本引入[​](#基本引入 "基本引入的直接链接") ``` import { FQTitle } from '@fq/fq-weapp-ui'; ``` 组件依赖的样式文件(仅按需引用时需要) ``` import '@fq/fq-weapp-ui/dist/styles/components/title.scss'; ``` #### 基础用法[​](#基础用法 "基础用法的直接链接") ``` 加粗 ``` ## Text 组件[​](#text-组件 "Text 组件的直接链接") ### 介绍[​](#介绍-2 "介绍的直接链接") 文本组件用于展示文本内容。 ### 用法[​](#用法-1 "用法的直接链接") #### 基本引入[​](#基本引入-1 "基本引入的直接链接") ``` import { FQText } from '@fq/fq-weapp-ui'; ``` 组件依赖的样式文件(仅按需引用时需要) ``` import '@fq/fq-weapp-ui/dist/styles/components/text.scss'; ``` #### 基础用法[​](#基础用法-1 "基础用法的直接链接") ``` 加粗 ``` ## Numberal 组件[​](#numberal-组件 "Numberal 组件的直接链接") ### 介绍[​](#介绍-3 "介绍的直接链接") 数字组件用于展示数字内容。 ### 用法[​](#用法-2 "用法的直接链接") #### 基本引入[​](#基本引入-2 "基本引入的直接链接") ``` import { FQNumeral } from '@fq/fq-weapp-ui'; ``` 组件依赖的样式文件(仅按需引用时需要) ``` import '@fq/fq-weapp-ui/dist/styles/components/numberal.scss'; ``` #### 基础用法[​](#基础用法-2 "基础用法的直接链接") ``` ``` ## API[​](#api "API的直接链接") ### Title 属性[​](#title-属性 "Title 属性的直接链接") | 参数 | 说明 | 类型 | 可选值 | 默认值 | | --------- | -------------- | ------------------- | ------------------------------------------------------------------ | ------- | | level | 标题级别 | number | `1` / `2` / `3` / `4` / `5` / `6` / `7` | `1` | | bold | 是否加粗 | boolean | - | `false` | | ellipsis | 是否显示省略号 | boolean / number | `true`: 1行溢出省略 / `false`: 不溢出省略 / `number`: 溢出省略行数 | `false` | | className | 标题样式类名 | string | - | - | | style | 标题样式 | React.CSSProperties | - | - | ### Text 属性[​](#text-属性 "Text 属性的直接链接") | 参数 | 说明 | 类型 | 可选值 | 默认值 | | ---------- | -------------------- | --------------------- | ---------------------------------------------------------------------------------------- | ------- | | size | 字体大小 | number | `20` / `22` / `24` / `26` / `28` | `24` | | bold | 是否加粗 | boolean | - | `false` | | userSelect | 用户是否可以选中文本 | boolean | - | `false` | | space | 显示连续空格 | Taro.TextProps.TSpace | `ensp(中文字符空格一半大小)` / `emsp(中文字符空格大小)` / `nbsp(根据字体设置的空格大小)` | - | | decode | 是否解码 | boolean | - | `false` | | className | 文本样式类名 | string | - | - | | style | 文本样式 | React.CSSProperties | - | - | ### Numberal 属性[​](#numberal-属性 "Numberal 属性的直接链接") | 参数 | 说明 | 类型 | 可选值 | 默认值 | | ----------- | -------------- | ------------------- | ------------------------------------------------------------------- | -------- | | value | 数字内容 | string / number | - | - | | type | 数字类型 | string | `delete` / `normal` | `normal` | | size | 字体大小 | number | `24` / `28` / `32` / `36` / `40` / `44` / `48` / `56` / `64` / `80` | `24` | | bold | 是否加粗 | boolean | - | `false` | | prefix | 前缀插槽 | ReactNode | - | - | | suffix | 后缀插槽 | ReactNode | - | - | | thousands | 是否显示千分位 | boolean | - | `false` | | showDecimal | 是否显示小数点 | boolean | - | `false` | | decimal | 小数点位数 | number | - | `2` | | className | 文本样式类名 | string | - | - | | style | 文本样式 | React.CSSProperties | - | - | --- # Checkbox 多选框 ## 介绍[​](#介绍 "介绍的直接链接") 收集用户的多项选择。 ## 用法[​](#用法 "用法的直接链接") ### 基本引入[​](#基本引入 "基本引入的直接链接") ``` import { FQCheckbox } from '@fq/fq-weapp-ui'; ``` 组件依赖的样式文件(仅按需引用时需要) ``` import '@fq/fq-weapp-ui/dist/styles/components/checkbox.scss'; ``` ### 基础用法[​](#基础用法 "基础用法的直接链接") ``` Checkbox ``` ### 不可用[​](#不可用 "不可用的直接链接") ``` ``` ### 受控的 Checkbox[​](#受控的-checkbox "受控的 Checkbox的直接链接") ``` const [checked, setChecked] = useState(false); const [disabled, setDisabled] = useState(false); { `${checked ? 'Checked' : 'Unchecked'}-${disabled ? 'Disabled' : 'Enabled'}` } ``` ### Checkbox 组[​](#checkbox-组 "Checkbox 组的直接链接") ``` const plainOptions = ['Apple', 'Pear', 'Orange']; const options = [ { label: 'Apple', value: 'Apple', disabled: true, className: 'label-1', onChange: (val, e) => console.log(val, e), }, { label: 'Pear', value: 'Pear', className: 'label-2', onChange: (val, e) => console.log(val, e), }, { label: 'Orange', value: 'Orange', className: 'label-3', onChange: (val, e) => console.log(val, e), }, ]; ``` ### 自定义布局[​](#自定义布局 "自定义布局的直接链接") ``` A B C D E ``` ## API[​](#api "API的直接链接") ### 属性[​](#属性 "属性的直接链接") | 参数 | 说明 | 类型 | 默认值 | 版本 | | -------------- | ---------------- | ---------------------------------------------- | ------ | ---- | | checked | 指定当前是否选中 | boolean | false | | | defaultChecked | 初始是否选中 | boolean | false | | | disabled | 是否禁用 | boolean | false | | | onChange | 变化时回调函数 | function(val: boolean, e: CheckboxChangeEvent) | - | | ### Checkbox.Group[​](#checkboxgroup "Checkbox.Group的直接链接") | 参数 | 说明 | 类型 | 默认值 | 版本 | | ------------ | -------------------- | ---------------------------------------------------------------------------- | ------ | ---- | | defaultValue | 默认选中的选项 | (string \| number)\[] | \[] | | | disabled | 整组失效 | boolean | false | | | options | 以配置形式设置子元素 | `string[]` \| `number[]` \| Array<[CheckboxOptionType](#checkboxoptiontype)> | - | | | value | 指定选中的选项 | (string \| number \| boolean)\[] | \[] | | | onChange | 选项变化时的回调函数 | function(checkedValue: any\[]) | - | | ### CheckboxOptionType[​](#checkboxoptiontype "CheckboxOptionType的直接链接") | 参数 | 说明 | 类型 | 默认值 | 版本 | | --------- | -------------- | ---------------------------------------------- | ------ | ---- | | label | 选项的 label | ReactNode | - | | | value | 选项的值 | any | - | | | style | 选项的样式 | `React.CSSProperties` | - | | | className | 选项的类名 | string | - | | | disabled | 选项失效状态 | boolean | false | | | onChange | 变化时回调函数 | function(val: boolean, e: CheckboxChangeEvent) | - | | --- # FQForm 表单 ## 介绍[​](#介绍 "介绍的直接链接") 高性能表单控件,自带数据域管理。包含数据录入、校验以及对应样式。 ## 用法[​](#用法 "用法的直接链接") ### 基本引入[​](#基本引入 "基本引入的直接链接") ``` import { FQForm } from '@fq/fq-weapp-ui'; ``` 组件依赖的样式文件(仅按需引用时需要) ``` import '@fq/fq-weapp-ui/dist/styles/components/form.scss'; ``` ### 基础用法[​](#基础用法 "基础用法的直接链接") ``` // 输入控件 ``` ### 基础使用[​](#基础使用 "基础使用的直接链接") ``` 提交 ``` ### 表单布局[​](#表单布局 "表单布局的直接链接") ``` 提交 ``` ### 表单混合布局[​](#表单混合布局 "表单混合布局的直接链接") ``` ``` ### 表单变体[​](#表单变体 "表单变体的直接链接") ``` 提交 ``` ## API[​](#api "API的直接链接") ### `Form`[​](#form "form的直接链接") | 参数 | 说明 | 类型 | 默认值 | 版本 | | -------------- | ---------------------------------------------------------- | ------------------------------------------------------------------------------------- | -------------- | ---- | | initialValues | 表单默认值,只有初始化以及重置时生效 | object | - | | | bordered | 是否显示表单项边框 | boolean | true | | | form | 经 Form.useForm() 创建的 form 控制实例,不提供时会自动创建 | [FormInstance](#forminstance) | - | | | disabled | 设置表单组件禁用 | boolean | false | | | layout | 表单布局 | `'horizontal'` \| `'vertical'` | `'horizontal'` | | | labelAlign | label 标签的文本对齐方式 | `'left'` \| `'right'` | `'left'` | | | labelWrap | 标签是否换行 | boolean | false | | | labelCol | label 标签布局 | [object]() | - | | | variant | 表单内控件变体 | `'outlined'` \| `'borderless'` | `'borderless'` | | | wrapperCol | 需要为输入控件设置布局样式时,使用该属性,用法同 labelCol | [object]() | - | | | wrapperAlign | 输入控件方式 | `'left'` \| `'right'` | `'left'` | | | onValuesChange | 字段值更新时触发回调事件 | `function(changedValues, allValues)` | - | | | onFieldsChange | 字段更新时触发回调事件,暂未实现 | `function(changedFields, allFields)` | - | | | onFinish | 提交表单且数据验证成功后回调事件 | `function(values)` | - | | | onFinishFailed | 提交表单且数据验证失败后回调事件 | `function({ values, errorFields, outOfDate })` | - | | ### `Form.Item`[​](#formitem "formitem的直接链接") 表单字段组件,用于数据双向绑定、校验、布局等。 | 参数 | 说明 | 类型 | 默认值 | 版本 | | ------------- | -------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------- | ---- | | bordered | 是否显示表单项边框,默认 `true` | boolean | `true` | | | extra | 额外的提示信息,和 help 类似,当需要错误信息和提示文案同时出现时,可以使用这个。 | ReactNode | - | | | help | 提示信息,如不设置,则会根据校验规则自动生成 | ReactNode | - | | | label | label 标签的文本 | ReactNode | - | | | labelAlign | label 标签的文本对齐方式, 默认值为 `left` | `left` \| `right` | `left` | | | labelWrap | 标签是否换行,默认 `false` | boolean | `false` | | | labelCol | label 标签布局,同 `` 组件 | [object]() | - | | | name | 字段路径数组 | [NamePath](#namepath) | - | | | noStyle | 为 true 时不带样式,作为纯字段控件使用。 | boolean | `false` | | | required | 必填样式设置。 | boolean | `false` | | | rules | 校验规则,设置字段的校验逻辑 | [Rule](#rule)\[] | - | | | valuePropName | 子节点的值的属性。注意:Switch、Checkbox 的 valuePropName 应该是 checked,否则无法获取这个两个组件的值。 | string | `value` | | | wrapperCol | 需要为输入控件设置布局样式时,使用该属性,用法同 labelCol | [object]() | - | | | wrapperAlign | 输入控件方式,默认值为 `left` | `left` \| `right` | `left` | | | layout | 表单项布局 | `horizontal` \| `vertical` | - | | ### FormInstance[​](#forminstance "FormInstance的直接链接") | 名称 | 说明 | 类型 | 版本 | | -------------- | ------------------------------------------------------------------------------------------------------ | -------------------------------------- | ---- | | getFieldValue | 获取对应字段名的值 | `(name: NamePath) => any` | | | getFieldsValue | 获取一组字段名对应的值,会按照对应结构返回。默认返回现存字段值,当调用 `getFieldsValue()` 时返回所有值 | `(nameList?: NamePath[]) => any` | | | resetFields | 重置一组字段到 `initialValues` | `() => void` | | | setFieldValue | 设置表单的值(该值将直接传入 form store 中并且重置错误信息) | `(name: NamePath, value: any) => void` | | | setFieldsValue | 设置表单的值(该值将直接传入 form store 中并且重置错误信息) | `(values) => void` | | | validateFields | 触发表单验证 | `(nameList?: NamePath[]) => Promise` | | ### Interface[​](#interface "Interface的直接链接") #### NamePath[​](#namepath "NamePath的直接链接") `string | number | (string | number)[]` #### Rule[​](#rule "Rule的直接链接") | 参数 | 说明 | 类型 | 版本 | | --------- | --------------------------------------------------------------------------------------------- | -------------------------- | ---- | | len | string 类型时为字符串长度;number 类型时为确定数字; array 类型时为数组长度 | number | | | max | 必须设置 type:string 类型为字符串最大长度;number 类型时为最大值;array 类型时为数组最大长度 | number | | | message | 错误信息,不设置时会通过模板自动生成 | string | | | min | 必须设置 type:string 类型为字符串最小长度;number 类型时为最小值;array 类型时为数组最小长度 | number | | | required | 是否为必选字段 | - | | | transform | 将字段值转换成目标值后进行校验 | - | | | type | 类型,常见有 `string` \| `number` \| `boolean`。 | string | | | validator | 自定义校验,接收 Promise 作为返回值。 | `(rule, value) => Promise` | | --- # Input 输入框(新版) 用于接收用户文本、数字等内容输入,支持多种场景和样式扩展。 ## 用法[​](#用法 "用法的直接链接") ### 基本引入[​](#基本引入 "基本引入的直接链接") ``` import { FQInputNew } from '@fq/fq-weapp-ui'; ``` ### 基础用法[​](#基础用法 "基础用法的直接链接") ``` ``` ### 非受控默认值[​](#非受控默认值 "非受控默认值的直接链接") ``` ``` ### 非受控数字输入(失焦自动校正)[​](#非受控数字输入失焦自动校正 "非受控数字输入(失焦自动校正)的直接链接") ``` ``` ### 禁用状态[​](#禁用状态 "禁用状态的直接链接") ``` ``` ### 带清除按钮[​](#带清除按钮 "带清除按钮的直接链接") ``` ``` ### 前置/后置标签[​](#前置后置标签 "前置/后置标签的直接链接") ``` ``` ### 错误提示[​](#错误提示 "错误提示的直接链接") ``` ``` ### 注释说明[​](#注释说明 "注释说明的直接链接") ``` ``` ### 非全屏宽度[​](#非全屏宽度 "非全屏宽度的直接链接") ``` ``` ### 错误提示、注释居右展示[​](#错误提示注释居右展示 "错误提示、注释居右展示的直接链接") ``` ``` ### 无边框样式[​](#无边框样式 "无边框样式的直接链接") ``` ``` *** ## 属性说明[​](#属性说明 "属性说明的直接链接") FQInputNew 继承了 [Taro InputProps](https://docs.taro.zone/docs/components/forms/input) 的全部属性,以下为 **FQInputNewProps** 对 InputProps 的补充或修改,按功能分类: ### 基础属性[​](#基础属性 "基础属性的直接链接") | 属性 | 说明 | 类型 | 默认值 | | ------------ | ------------------------ | ------- | ------ | | defaultValue | 输入框默认值 | string | '' | | value | 输入框当前值 | string | - | | placeholder | 占位符 | string | - | | type | 输入框类型 | string | 'text' | | maxLength | 输入内容最大长度 | number | - | | disabled | 是否禁用 | boolean | false | | status | 自定义状态,可选 'error' | string | - | ### 内容与交互[​](#内容与交互 "内容与交互的直接链接") | 属性 | 说明 | 类型 | 默认值 | | ---------------------- | -------------------------------------- | ---------- | ------ | | allowClear | 是否显示清除按钮 | boolean | false | | onlyShowClearWhenFocus | 仅输入框聚焦时显示清除按钮 | boolean | false | | onClear | 清除按钮点击时的回调 | () => void | - | | onChange | 输入内容变化时的回调(等价于 onInput) | function | - | ### 前后缀与标签[​](#前后缀与标签 "前后缀与标签的直接链接") | 属性 | 说明 | 类型 | 默认值 | | ----------- | ------------------------------------------ | --------- | ------ | | prefix | 输入框前缀内容(自定义节点) | ReactNode | - | | suffix | 输入框后缀内容(自定义节点) | ReactNode | - | | addonBefore | 前置标签(variant 不为 borderless 时显示) | ReactNode | - | | addonAfter | 后置标签(variant 不为 borderless 时显示) | ReactNode | - | ### 状态与样式[​](#状态与样式 "状态与样式的直接链接") | 属性 | 说明 | 类型 | 默认值 | | ----------- | ---------------------------- | ------------------------------------------------------------------------------------------------- | ---------- | | error | 错误提示内容,输入框下方展示 | string | - | | description | 注释说明,输入框下方展示 | string | - | | variant | 边框样式 | 'outlined' \| 'borderless' | 'outlined' | | width | 输入框宽度 | number \| string | 100%/111px | | size | 输入框尺寸 | 'default' \| 'small' | 'default' | | align | 输入框内容对齐方式 | 'left' \| 'right' (有边框时,文本固定左对齐,此时align参数传值无效;无边框时,文本根据配置对齐) | 'left' | | className | 自定义样式类名 | string | - | | style | 自定义样式 | CSSProperties | - | ### 数值限制(仅 type 为 number 时生效)[​](#数值限制仅-type-为-number-时生效 "数值限制(仅 type 为 number 时生效)的直接链接") | 属性 | 说明 | 类型 | 默认值 | | ---- | ------ | ------ | ------ | | max | 最大值 | number | - | | min | 最小值 | number | - | *** **未修改的 InputProps 属性**(如 value、placeholder、disabled、type、name、onFocus、onBlur 等),请参考 [TaroInput 组件文档](https://docs.taro.zone/docs/components/forms/input)。 补充说明: * `value` + `onChange` 为受控模式。 * 不传 `value` 时为非受控模式,可通过 `defaultValue` 指定初始值。 *** --- # Radio 单选框 ## 介绍[​](#介绍 "介绍的直接链接") 用于在多个备选项中选中单个状态。 ## 用法[​](#用法 "用法的直接链接") ### 基本引入[​](#基本引入 "基本引入的直接链接") ``` import { FQRadio } from '@fq/fq-weapp-ui'; ``` 组件依赖的样式文件(仅按需引用时需要) ``` import '@fq/fq-weapp-ui/dist/styles/components/radio.scss'; ``` ### 基础用法[​](#基础用法 "基础用法的直接链接") ``` Radio ``` ### 不可用[​](#不可用 "不可用的直接链接") ``` ``` ### Radio.Group 组[​](#radiogroup-组 "Radio.Group 组的直接链接") ``` const plainOptions = ['Apple', 'Pear', 'Orange']; const options = [ { label: 'Apple', value: 'Apple', disabled: true, className: 'label-1', onChange: (val, e) => console.log(val, e), }, { label: 'Pear', value: 'Pear', className: 'label-2', onChange: (val, e) => console.log(val, e), }, { label: 'Orange', value: 'Orange', className: 'label-3', onChange: (val, e) => console.log(val, e), }, ]; ``` ### Radio.Group 垂直[​](#radiogroup-垂直 "Radio.Group 垂直的直接链接") ``` const options = ['Apple', 'Pear', 'Orange']; ``` ## API[​](#api "API的直接链接") ### 属性[​](#属性 "属性的直接链接") | 参数 | 说明 | 类型 | 默认值 | 版本 | | -------------- | ---------------- | ------------------------------------------- | ------ | ---- | | checked | 指定当前是否选中 | boolean | false | | | defaultChecked | 初始是否选中 | boolean | false | | | disabled | 是否禁用 | boolean | false | | | onChange | 变化时回调函数 | function(val: boolean, e: RadioChangeEvent) | - | | ### Radio.Group[​](#radiogroup "Radio.Group的直接链接") | 参数 | 说明 | 类型 | 默认值 | 版本 | | ------------ | -------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- | ------ | ---- | | defaultValue | 默认选中的值 | any | - | | | disabled | 禁选所有子单选器 | boolean | false | | | options | 以配置形式设置子元素 | `string[]` \| `number[]` \| Array<[RadioOptionType]()> | - | | | value | 用于设置当前选中的值 | any | - | | | onChange | 选项变化时的回调函数 | function(checkedValue: any) | - | | ### RadioOptionType[​](#radiooptiontype "RadioOptionType的直接链接") | 参数 | 说明 | 类型 | 默认值 | 版本 | | --------- | ------------------ | ------------------------------------------- | ------ | ---- | | label | 选项的 label | ReactNode | - | | | value | 选项的值 | any | - | | | style | 选项的样式 | `React.CSSProperties` | - | | | className | 选项的类名 | string | - | | | disabled | 选项失效状态 | boolean | false | | | onChange | 选项变化时回调函数 | function(val: boolean, e: RadioChangeEvent) | - | | --- # Stepper 步进器 用于在一定范围内输入、调整数字,支持数量增减、禁用、步长、边框/无边框、Din字体等多种功能。 ## 用法[​](#用法 "用法的直接链接") ### 基本引入[​](#基本引入 "基本引入的直接链接") ``` import { FQStepper } from '@fq/fq-weapp-ui'; ``` ### 基础用法[​](#基础用法 "基础用法的直接链接") ``` console.log(val)} /> ``` ### 非受控用法[​](#非受控用法 "非受控用法的直接链接") ``` console.log(val)} /> ``` ### 展开形态[​](#展开形态 "展开形态的直接链接") ``` console.log(val)} /> ``` ### 禁用状态[​](#禁用状态 "禁用状态的直接链接") ``` ``` ### 边界限制[​](#边界限制 "边界限制的直接链接") ``` ``` ### 步长设置[​](#步长设置 "步长设置的直接链接") ``` ``` ### 无边框样式[​](#无边框样式 "无边框样式的直接链接") ``` ``` ### 自定义尺寸[​](#自定义尺寸 "自定义尺寸的直接链接") ``` ``` ### 自定义占位符[​](#自定义占位符 "自定义占位符的直接链接") ``` ``` ### 事件监听[​](#事件监听 "事件监听的直接链接") ``` const max = 5; const min = -2; console.log(value)} max={max} min={min} onBlur={e => { console.log('onBlur event:', e); setValue(false); }} onFocus={e => { console.log('onFocus event:', e); setValue(true); }} onIncrement={(_, val) => { console.log('onIncrement new value', val) if (val > max) { alert('超过最大值提示文案'); return false; } return true; }} onDecrement={(_, val) => { console.log('onDecrement new value', val) if (val < min) { alert('超过最小值提示文案'); return false; } return true; }} onInputMax={val => { console.log('onInputMax event:', val); }} /> ``` *** ## 属性说明[​](#属性说明 "属性说明的直接链接") ### 基础属性[​](#基础属性 "基础属性的直接链接") | 属性 | 说明 | 类型 | 默认值 | | ------------ | -------------------------------- | -------------------------- | -------- | | value | 当前数值(受控) | number | - | | defaultValue | 默认数值(非受控) | number | min(1) | | min | 最小值 | number | 1 | | max | 最大值 | number | +∞ | | step | 步长 | number | 1 | | disabled | 是否禁用 | boolean | false | | expanded | 是否展开(增减形态) | boolean | false | | expandable | 是否允许从数量显示切换为增减形态 | boolean | true | | buttonSize | 按钮大小 | string \| number | 26px | | fontSize | 字体大小 | string \| number | 13px | | inputWidth | 输入框宽度 | string \| number | 36px | | variant | 形态变体 | 'outlined' \| 'borderless' | outlined | | placeholder | 输入框占位符 | string | - | | style | 自定义样式 | CSSProperties | - | | className | 自定义样式类名 | string | - | 说明: * 尺寸类属性支持 `number` 和带单位字符串。`number` 会按 `px` 处理;字符串支持 `px/rpx` 等常见单位。 * `variant` 为 `outlined` 时,组件使用边框效果;`borderless` 时按钮为独立浅灰块,中央数字无边框。 ### 事件属性[​](#事件属性 "事件属性的直接链接") | 属性 | 说明 | 类型 | 默认值 | | ----------- | ----------------------------------------- | -------------------------------------------------- | ------ | | onChange | 数值变化时回调(确认/失焦/按钮) | (value: number) => void | - | | onFocus | 输入框获得焦点时回调 | InputProps\['onFocus'] | - | | onBlur | 输入框失去焦点时回调 | InputProps\['onBlur'] | - | | onInput | 输入框值改变时的回调 | (value: number) => void | - | | onInputMax | 输入框输入到达最大值时触发 | (value: number) => void | - | | onDecrement | 点击减小按钮时触发,返回 false 阻止值变化 | (e: ITouchEvent, value: number) => boolean \| void | - | | onIncrement | 点击增加按钮时触发,返回 false 阻止值变化 | (e: ITouchEvent, value: number) => boolean \| void | - | *** ## 交互说明[​](#交互说明 "交互说明的直接链接") * 受控模式:传入 `value`,组件值由外部状态驱动。 * 非受控模式:不传 `value`,可通过 `defaultValue` 指定初始值,后续由组件内部维护。 * 输入阶段:仅在点击键盘的确认按钮/失焦或点击按钮时提交并触发 `onChange`。 * `onDecrement`/`onIncrement` 支持返回 `false`,可阻止步进器数值变化。 *** --- # Switch 开关 ## 介绍[​](#介绍 "介绍的直接链接") 使用开关切换两种状态之间。 ## 用法[​](#用法 "用法的直接链接") ### 基本引入[​](#基本引入 "基本引入的直接链接") ``` import { FQSwitch } from '@fq/fq-weapp-ui'; ``` 组件依赖的样式文件(仅按需引用时需要) ``` import '@fq/fq-weapp-ui/dist/styles/components/switch.scss'; ``` ### 基础用法[​](#基础用法 "基础用法的直接链接") ``` ``` ### 不可用[​](#不可用 "不可用的直接链接") ``` ``` ### 文字和图标[​](#文字和图标 "文字和图标的直接链接") ``` ``` ### 大小[​](#大小 "大小的直接链接") ``` ``` ## API[​](#api "API的直接链接") ### 属性[​](#属性 "属性的直接链接") | 参数 | 说明 | 类型 | 默认值 | 版本 | | ----------------- | -------------------------------------------- | ---------------------------------------------- | --------- | ---- | | checked | 指定当前是否选中 | boolean | false | | | checkedChildren | 选中时的内容 | ReactNode | - | | | defaultChecked | 初始是否选中 | boolean | false | | | defaultValue | defaultChecked 的别名 | boolean | - | | | disabled | 是否禁用 | boolean | false | | | size | 开关大小,可选值 `large`, `default`, `small` | string | `default` | | | unCheckedChildren | 非选中时的内容 | ReactNode | - | | | value | checked 的别名 | boolean | - | | | onChange | 变化时回调函数 | function(checked: boolean, event: ITouchEvent) | - | | | onClick | 点击时的回调函数 | function(checked: boolean, event: ITouchEvent) | - | | --- # TextArea 输入框(新版) 用于多行文本输入,支持字数统计、自动高度、错误提示、无边框等多种场景。 ## 用法[​](#用法 "用法的直接链接") ### 基本引入[​](#基本引入 "基本引入的直接链接") ``` import { FQTextareaNew } from '@fq/fq-weapp-ui'; ``` ### 基础用法[​](#基础用法 "基础用法的直接链接") ``` ``` ### 非受控用法[​](#非受控用法 "非受控用法的直接链接") ``` console.log(e.detail?.value)} /> ``` ### 受控用法[​](#受控用法 "受控用法的直接链接") ``` ``` ### 显示字数[​](#显示字数 "显示字数的直接链接") ``` ``` ### 字数长度限制[​](#字数长度限制 "字数长度限制的直接链接") ``` ``` ### 字数长度限制并截断[​](#字数长度限制并截断 "字数长度限制并截断的直接链接") ``` ``` ### 禁用[​](#禁用 "禁用的直接链接") ``` ``` ### 错误信息[​](#错误信息 "错误信息的直接链接") ``` ``` ### 无边框样式[​](#无边框样式 "无边框样式的直接链接") ``` ``` ### 根据内容自动增高[​](#根据内容自动增高 "根据内容自动增高的直接链接") ``` ``` ### 指定显示行数[​](#指定显示行数 "指定显示行数的直接链接") ``` ``` *** ## 属性说明[​](#属性说明 "属性说明的直接链接") FQTextareaNew 继承了 [Taro TextareaNewProps](https://docs.taro.zone/docs/components/forms/textarea) 的全部属性,以下为 **FQTextareaNewProps** 对 TextareaProps 的补充或修改,按功能分类: ### 基础属性[​](#基础属性 "基础属性的直接链接") | 属性 | 说明 | 类型 | 默认值 | | ----------------- | ------------------------------------------------------------------ | ------- | ------ | | value | 输入框当前值(受控) | string | - | | defaultValue | 输入框默认值 | string | '' | | maxLength | 最大输入长度,超出后不再允许输入(覆盖 TaroTextarea 的 maxlength) | number | - | | truncateMaxLength | 达到最大长度后是否禁止继续输入 | boolean | false | | status | 自定义状态,可选 'error' | string | - | ### 内容与交互[​](#内容与交互 "内容与交互的直接链接") | 属性 | 说明 | 类型 | 默认值 | | --------- | ------------------------------------------------------ | ------------------------------------------- | ------ | | showCount | 是否显示字数统计,或自定义渲染字数统计 | boolean \| (length, maxLength) => ReactNode | false | | onChange | 输入内容变化时的回调(等价于 TaroTextarea 的 onInput) | function | - | ### 状态与样式[​](#状态与样式 "状态与样式的直接链接") | 属性 | 说明 | 类型 | 默认值 | | --------- | ---------------------------- | -------------------------- | ---------- | | error | 错误提示内容,输入框下方展示 | string | - | | variant | 边框样式 | 'outlined' \| 'borderless' | 'outlined' | | className | 自定义样式类名 | string | - | | style | 自定义样式 | CSSProperties | - | ### 行数与高度[​](#行数与高度 "行数与高度的直接链接") | 属性 | 说明 | 类型 | 默认值 | | ---------- | ------------------------------------------------ | ------- | ------ | | rows | 指定显示行数,固定高度为 rows \* 行高 | number | - | | autoHeight | 内容变化时自动增高(TaroTextarea 的 autoHeight) | boolean | false | *** **未修改的 TextareaProps 属性**(如 value、placeholder、disabled、name、onFocus、onBlur 等),请参考 [TaroTextarea 组件文档](https://docs.taro.zone/docs/components/forms/textarea)。 补充说明: * 受控模式:传入 `value`,由外部状态驱动展示值。 * 非受控模式:不传 `value`,通过 `defaultValue` 指定初始值,后续由组件内部维护。 --- # Badge 徽标数 ## 介绍[​](#介绍 "介绍的直接链接") 图标右上角的圆形徽标数字。 ## 用法[​](#用法 "用法的直接链接") ### 基本引入[​](#基本引入 "基本引入的直接链接") ``` import { FQBadge } from '@fq/fq-weapp-ui'; ``` 组件依赖的样式文件(仅按需引用时需要) ``` import '@fq/fq-weapp-ui/dist/styles/components/badge.scss'; ``` ### 基础用法[​](#基础用法 "基础用法的直接链接") ``` } > ``` ### 独立使用[​](#独立使用 "独立使用的直接链接") ``` ``` ### 封顶数字[​](#封顶数字 "封顶数字的直接链接") ``` ``` ### 自定义位置偏移[​](#自定义位置偏移 "自定义位置偏移的直接链接") ``` ``` ### 变体[​](#变体 "变体的直接链接") ``` ``` ### 自定义颜色[​](#自定义颜色 "自定义颜色的直接链接") ``` ``` ## API[​](#api "API的直接链接") ### 基础属性[​](#基础属性 "基础属性的直接链接") | 参数 | 说明 | 类型 | 默认值 | 版本 | | ------------- | ------------------------------------------------------------------------------------ | ------------------------------------ | ------- | ---- | | color | 自定义颜色 | string | - | | | count | 展示的数字 | ReactNode | - | | | dot | 不展示数字,只有一个小红点 | boolean | `false` | | | offset | 设置状态点的位置偏移,格式为 `[left, top]`,表示状态点距默认位置左侧、上方的偏移量。 | `[number, number]` | - | | | overflowCount | 展示封顶的数字值 | number | 99 | | | showZero | 当数值为 0 时,是否展示 Badge | boolean | false | | | styles | 语义化结构 style | `Record` | - | | | type | 徽标类型 | `solid` / `outlined` | `solid` | | ### SemanticDOM[​](#semanticdom "SemanticDOM的直接链接") | 参数 | 说明 | | --------- | ---------- | | root | 根节点 | | indicator | 指示器节点 | --- # Card 组件 ## 介绍[​](#介绍 "介绍的直接链接") 基础卡片,一般利用基础卡片框架构造更为复杂、符合多场景的卡片等。 ## 用法[​](#用法 "用法的直接链接") ### 基本引入[​](#基本引入 "基本引入的直接链接") ``` import { FQCard } from '@fq/fq-weapp-ui'; ``` 组件依赖的样式文件(仅按需引用时需要) ``` import '@fq/fq-weapp-ui/dist/styles/components/card.scss'; ``` ### 基础用法[​](#基础用法 "基础用法的直接链接") ``` ``` ### 卡片圆角 & 图片圆角[​](#卡片圆角--图片圆角 "卡片圆角 & 图片圆角的直接链接") ``` ``` ``` ``` ``` ``` ### 标题显示行数 & 溢出方式[​](#标题显示行数--溢出方式 "标题显示行数 & 溢出方式的直接链接") ``` ``` ### 布局插槽展示[​](#布局插槽展示 "布局插槽展示的直接链接") ``` imageBadge} imageUrl='https://stantic.ifengqun.com/front/fq-oms-extsys/upload/1d0dc847a0cd20135a65f50e4949a3c4.jpg?x-oss-process=image/format,webp/interlace,1' title='4袋减61元【通过远方120项检测 升级版卤大猪耳朵(熟食)】短期不含防腐剂 配料表干净 鲜果现摘榨 10袋/盒' titleLine={2} header={header} promoHeader={promoHeader} promoDescription={promoDescription} infoFooter={infoFooter} price={price} actionArea={actionArea} footer={footer} /> ``` ## API[​](#api "API的直接链接") ### 属性[​](#属性 "属性的直接链接") | 参数 | 说明 | 类型 | 默认值 | 版本 | | ------------- | -------------------------------------------------------------------------------------------------------------------- | ------------------------------------------ | -------- | -------- | | classNames | 配置卡片内置模块的 className | `Record` | - | | | imageUrl | 封面地址 | string | `''` | | | imageProps | 设置 `Image` props,可选值参考[微信image文档](https://developers.weixin.qq.com/miniprogram/dev/component/image.html) | ImageProps | - | | | imageRound | 封面是否为圆角 | `boolean` / `number` | `true` | `v0.2.7` | | label | 标题左侧标签,目前为标签图片的 Url 数组 | `string[]` | - | | | layout | 卡片布局方式 | `column` / `row` | `row` | | | round | 是否为圆角卡片 | `boolean` / `number` | `true` | `v0.2.7` | | size | 卡片大小,仅 layout 为 `column` 时生效 | `large` / `middle` / `small` | `middle` | | | styles | 配置卡片内置模块的 style | `Record` | - | | | title | 标题 | string | - | | | titleLine | 标题行数,默认2,即2行省略 | `number` / `string` | 2 | | | titleOverflow | 标题超出省略方式 | `ellipsis` / `clip` | `clip` | | ### 插槽[​](#插槽 "插槽的直接链接") | 参数 | 说明 | 类型 | 默认值 | 版本 | | ---------------- | -------------------- | --------- | ------ | -------- | | actionArea | 自定义右下角操作区域 | ReactNode | - | | | footer | 自定义脚部内容 | ReactNode | - | | | header | 自定义头部内容 | ReactNode | - | | | imageBadge | 自定义图片徽章 | ReactNode | - | | | infoFooter | 自定义内容区脚部内容 | ReactNode | - | | | price | 自定义价格 | ReactNode | - | | | promoDescription | 自定义促销描述内容 | ReactNode | - | | | promoHeader | 自定义促销头部内容 | ReactNode | - | | | shopDescription | 自定义店铺介绍内容 | ReactNode | - | `v0.6.0` | ### SemanticDOM[​](#semanticdom "SemanticDOM的直接链接") | 参数 | 说明 | | --------- | ---------------- | | body | 设置卡片内容区域 | | cover | 设置封面 | | container | 设置容器区域 | | header | 设置头部区域 | | footer | 设置脚部区域 | | title | 设置卡片标题 | --- # Tag 标签 ## 介绍[​](#介绍 "介绍的直接链接") 用于标记和分类的标签。 ## 用法[​](#用法 "用法的直接链接") ### 基本引入[​](#基本引入 "基本引入的直接链接") ``` import { FQTag } from '@fq/fq-weapp-ui'; ``` 组件依赖的样式文件(仅按需引用时需要) ``` import '@fq/fq-weapp-ui/dist/styles/components/tag.scss'; ``` ### 基础用法[​](#基础用法 "基础用法的直接链接") ``` 标签内容 标签内容 标签内容 ``` ### 边框模式[​](#边框模式 "边框模式的直接链接") ``` 标签内容 标签内容 ``` ### 圆角模式&自定义圆角[​](#圆角模式自定义圆角 "圆角模式&自定义圆角的直接链接") ``` 标签内容 标签内容 标签内容 标签内容 ``` ### 自定义图标[​](#自定义图标 "自定义图标的直接链接") ``` }>标签内容 ``` ### 多彩标签[​](#多彩标签 "多彩标签的直接链接") ``` green red orange green red orange 自定义颜色 ``` ### 图片模式[​](#图片模式 "图片模式的直接链接") ``` ``` ## API[​](#api "API的直接链接") ### 基础属性[​](#基础属性 "基础属性的直接链接") | 参数 | 说明 | 类型 | 默认值 | 版本 | | ------- | --------------------------------------------------- | ------------------------------ | -------- | ---- | | size | 设置标签大小 | `large` / `middle` / `small` | `middle` | | | type | 设置标签类型,`text` 为文本标签,`image` 为图片标签 | `text` / `image` | `text` | | | onClick | 点击事件 | `(event: ITouchEvent) => void` | - | | ### `type='text'`属性[​](#typetext属性 "typetext属性的直接链接") | 参数 | 说明 | 类型 | 默认值 | 版本 | | --------------- | ---------------------- | -------------------- | ------- | ---- | | backgroundColor | 设置背景颜色 | string | - | | | borderColor | 设置边框颜色 | string | - | | | bordered | 是否显示边框 | boolean | `false` | | | color | 设置文字颜色 | string | - | | | icon | 设置图标 | ReactNode | - | | | round | 是否为圆角或自定义圆角 | `boolean` / `number` | `false` | | ### `type='image'`属性[​](#typeimage属性 "typeimage属性的直接链接") | 参数 | 说明 | 类型 | 默认值 | 版本 | | ---- | ------------ | ------ | ------ | ---- | | url | 设置图片地址 | string | - | | --- # FQWaterMark 水印组件 ## 介绍[​](#介绍 "介绍的直接链接") ‌水印的主要作用包括版权保护、防伪鉴别、品牌宣传和安全隐私保护。 ## 用法[​](#用法 "用法的直接链接") ### 基本引入[​](#基本引入 "基本引入的直接链接") ``` import { FQWaterMark } from '@fq/fq-weapp-ui'; ``` ### 基础用法[​](#基础用法 "基础用法的直接链接") #### 单行水印[​](#单行水印 "单行水印的直接链接") ``` ``` #### 多行水印[​](#多行水印 "多行水印的直接链接") ``` ``` #### 水印颜色[​](#水印颜色 "水印颜色的直接链接") ``` ``` ## API[​](#api "API的直接链接") ### 属性[​](#属性 "属性的直接链接") | 参数 | 说明 | 类型 | 可选值 | 默认值 | | ------- | ------------------------ | ------------------ | ------ | ---------------- | | content | 水印内容,传数组表示多行 | string / string\[] | | | | color | 水印颜色 | string | | rgba(0,0,0,0.06) | --- # Modal 组件 ## 介绍[​](#介绍 "介绍的直接链接") 提供一个简单的 `Modal` 框,用于展示弹窗内容。 ## 用法[​](#用法 "用法的直接链接") ### 基本引入[​](#基本引入 "基本引入的直接链接") ``` // 1. 引入 import { FQModal } from "@fq/fq-weapp-ui"; ``` 组件依赖的样式文件(仅按需引用时需要) ``` import "@fq/fq-weapp-ui/dist/styles/components/modal.scss"; ``` ### 基础用法[​](#基础用法 "基础用法的直接链接") ``` xxx ``` ## API[​](#api "API的直接链接") ### 属性[​](#属性 "属性的直接链接") | 参数 | 说明 | 类型 | 可选值 | 默认值 | | -------------- | -------------------------------------------- | ------------------- | ------ | ------ | | visible | 是否显示模态框 | boolean | - | - | | canCloseByMask | 点击蒙层是否允许关闭 | boolean | - | false | | unCoverNavBar | 是否覆盖导航栏 | boolean | - | false | | innerClassName | 内部容器类名 | string | - | - | | className | 模态框样式类名 | string | - | - | | maskClassName | 蒙层样式类名 | string | - | - | | style | 模态框样式 | React.CSSProperties | - | - | | childrenStyle | 模态框内容样式 | React.CSSProperties | - | - | | addTop | 顶部偏移量 | number | - | 0 | | catchMove | 是否阻止滑动穿透 | boolean | - | false | | noRendering | 是否执行预渲染,用于提前渲染模态框内部的内容 | boolean | - | false | ### 方法[​](#方法 "方法的直接链接") | 函数名 | 说明 | 参数 | | ------- | -------------- | ---- | | onClose | 模态框关闭事件 | - | --- # NoticeBar 组件 ## 介绍[​](#介绍 "介绍的直接链接") 提供一个简单的 `NoticeBar` 框,用于展示信息通知栏。 ## 用法[​](#用法 "用法的直接链接") ### 基本引入[​](#基本引入 "基本引入的直接链接") ``` // 1. 引入 import { FQNoticeBar } from "@fq/fq-weapp-ui"; ``` 组件依赖的样式文件(仅按需引用时需要) ``` import "@fq/fq-weapp-ui/dist/styles/components/notice-bar.scss"; ``` ### 基础用法[​](#基础用法 "基础用法的直接链接") ``` ``` ### 支持跳转[​](#支持跳转 "支持跳转的直接链接") ``` ``` ### 支持关闭[​](#支持关闭 "支持关闭的直接链接") ``` ``` ### 有按钮[​](#有按钮 "有按钮的直接链接") ``` ``` ### 按钮+关闭[​](#按钮关闭 "按钮+关闭的直接链接") ``` ``` ### 跑马灯[​](#跑马灯 "跑马灯的直接链接") ``` ``` ### 信息通知栏-多行文本[​](#信息通知栏-多行文本 "信息通知栏-多行文本的直接链接") ``` // 换行 // 有标题 // 有标题+按钮 ``` ## API[​](#api "API的直接链接") ### 属性[​](#属性 "属性的直接链接") | 参数 | 说明 | 类型 | 可选值 | 默认值 | | --------------- | --------------------------------------------------- | ------------------- | ----------------------- | ------- | | content | 通知文本内容 | string | - | - | | type | 基本样式类型 | string | error、success、warning | warning | | basicStyles | 基础类型样式 | React.CSSProperties | - | - | | leftIcon | 左侧图标名称 | ReactNode | - | - | | showLink | 显示连接箭头icon | boolean | - | false | | buttonProps | 传入的按钮属性 | FQButtonProps | - | - | | closeable | 是否显示关闭按钮 | boolean | - | false | | wrapable | 是否开启文本换行 | boolean | - | false | | scrollable | 是否开启滚动播放,null 表示根据内容是否溢出自动判断 | boolean \| null | - | null | | delay | 滚动延迟时间(秒) | number | - | 1 | | speed | 滚动速度 | number | - | 50 | | loop | 循环滚动次数 0 表示无限循环 | number | - | 0 | | headerTitle | 标题文案 | string | - | - | | className | 自定义样式类名 | string | - | - | | parentClassName | 小程序查询节点的父级类名(复杂嵌套场景使用) | string | - | - | ### 方法[​](#方法 "方法的直接链接") | 函数名 | 说明 | 参数 | | ----------- | -------------------- | ---- | | onClick | 点击整个栏目回调事件 | - | | onLinkClick | 链接回调事件 | - | | onClose | 关闭回调闭事件 | - | --- # 主题定制 ## 介绍[​](#介绍 "介绍的直接链接") `@fq/fq-weapp-ui` 只有一套默认的颜色氛围,主要分为主题色、中性色、家族色3类,其中主题色是整个产品的主色调,中性色是辅助色调,家族色是一些特殊的色调,比如警告色、危险色、价格色、省钱卡专用色等。目前支持自定义主题的方式是 `SCSS 变量覆盖` 的方式,后续会支持更多的自定义方式。 ### SCSS 变量覆盖[​](#scss-变量覆盖 "SCSS 变量覆盖的直接链接") `@fq/fq-weapp-ui` 的样式是基于 `SCSS` 编写的,所以可以直接在项目中改变样式变量。 新建一个主题样式文件,例如 `custom-variables.scss`,并写入以下内容: ``` // 主题色 $color-primary: #ff0000; // 中性色 $bg-color-base: #666666; // 家族色 $color-family-green: #52C41B; @import '~@fq/fq-weapp-ui/dist/styles/components/sprite-icon/index.scss'; ``` > 覆写的变量,需要在引入 `@fq/fq-weapp-ui` 默认样式之前引入,[默认主题变量命名](https://git.ifengqun.com/fq-front/fq-weapp-ui/-/tree/master/packages/fq-weapp-ui/src/styles/variables/default.scss) 之后在项目的入口文件中引入以上的样式文件即可(无需重复引入组件的默认样式) ``` /* app.ts */ import './custom-variables.scss' ``` ### SCSS MIXINS[​](#scss-mixins "SCSS MIXINS的直接链接") `@fq/fq-weapp-ui` 提供一些常用的样式MIXIN,方便开发者使用,具体可以查看 [MIXINS](https://git.ifengqun.com/fq-front/fq-weapp-ui/-/blob/master/packages/fq-weapp-ui/src/styles/mixins/index.scss) --- # 快速上手 ## 使用前准备[​](#使用前准备 "使用前准备的直接链接") 在使用 `@fq/fq-weapp-ui` 之前,你需要先安装 `@fq/fq-weapp-ui`,并引入样式。 ### 配置npm私有源[​](#配置npm私有源 "配置npm私有源的直接链接") ``` npm config set registry http://npm.ifengqun.com:4873/ ``` 这里推荐使用 nrm 来管理 npm 源,可以通过以下命令安装 nrm: ``` npm install -g nrm ``` 然后通过以下命令添加私有源: ``` nrm add fengqun http://npm.ifengqun.com:4873/ ``` 最后使用私有源: ``` nrm use fengqun ``` ### 安装[​](#安装 "安装的直接链接") ``` # 使用 npm 安装 npm install -S @fq/fq-weapp-ui # 使用 yarn 安装 yarn add @fq/fq-weapp-ui # 使用 pnpm 安装 pnpm install -S @fq/fq-weapp-ui ``` ## 基础用法[​](#基础用法 "基础用法的直接链接") ### 引入所需组件[​](#引入所需组件 "引入所需组件的直接链接") 在代码中`import`需要的组件 ``` // page.tsx import { FQSpriteIcon, FQSpriteIconProps, SpriteIconProps, } from "@fq/fq-weapp-ui"; // 除了引入所需的组件,还需要手动引入组件样式 // app.ts import '@fq/fq-weapp-ui/dist/styles/index.scss'; ``` ### 引入组件样式的三种方式[​](#引入组件样式的三种方式 "引入组件样式的三种方式的直接链接") 1. 全局引入(TS中):在入口文件引入`@fq/fq-weapp-ui`样式文件 ``` // app.ts import '@fq/fq-weapp-ui/dist/styles/index.scss'; ``` 2. 全局引入(SCSS中):在需要使用组件的文件中引入`@fq/fq-weapp-ui`样式文件 ``` // app.scss @import '~@fq/fq-weapp-ui/dist/styles/index.scss'; ``` 3. 按需引入:在页面样式或全局样式中 `import` 需要的组件样式 ``` // page.scss @import '~@fq/fq-weapp-ui/dist/styles/components/sprite-icon/index.scss'; ``` > 具体的组件样式文件请查看 [组件样式列表](https://git.ifengqun.com/fq-front/fq-weapp-ui/-/tree/master/packages/fq-weapp-ui/src/styles/components) ## 体验[​](#体验 "体验的直接链接") 使用微信扫一扫体验 `小程序` 组件示例 ![小程序二维码](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAdgAAAHYCAYAAADu2fmZAAAOaElEQVR4nO3dQW7sOmBE0Th4+9+ys4PPAXNR7PY5U8NNiaJU4KDAn9/f39//AQD+X/3v+gIA4BsJWAAICFgACAhYAAgIWAAICFgACAhYAAgIWAAICFgACAhYAAgIWAAICFgACAhYAAgIWAAICFgACAhYAAgIWAAICFgACAhYAAgIWAAICFgACAhYAAgIWAAI/KsH+Pn5qYeY+v39/c+/1/dfj3/6/ZPT+Le/X1uv33r+b62f3/r+6vW9fn/W679Wz58dLAAEBCwABAQsAAQELAAEBCwABAQsAAQELAAE8h7sybpHd1L3SG97bt/eU1vP/+3vr617kuse73r8+vfXPdnX1//6+2gHCwABAQsAAQELAAEBCwABAQsAAQELAAEBCwCBeQ/2ZH3e4+vW51XWbu/v0+//5PWe8LqHeFL30F/vCdf++vfbDhYAAgIWAAICFgACAhYAAgIWAAICFgACAhYAAs/3YL/d6+c1Oo/zv63P6319ftc9xdfvb73+1s/n29nBAkBAwAJAQMACQEDAAkBAwAJAQMACQEDAAkBADzb2eo/09Puvnxda9wC//bzNT7//k3XPcz1/6/v/6+xgASAgYAEgIGABICBgASAgYAEgIGABICBgASDwfA/2r/e49Bxb655svb5P17d+/t++vl+/vtpf/37bwQJAQMACQEDAAkBAwAJAQMACQEDAAkBAwAJAYN6D/fYe2Mn6PNNP//9br1//7fgn6/v/68//09fPX/9+n9jBAkBAwAJAQMACQEDAAkBAwAJAQMACQEDAAkAg78H+9fMAP72neFL37Nbjr9fvev4+3fr9W/v09f/p7GABICBgASAgYAEgIGABICBgASAgYAEgIGABIPDzOy46vd4ju1Wft1j39F7vwTnv8m2f3uNdr//X7+/178u6p28HCwABAQsAAQELAAEBCwABAQsAAQELAAEBCwCB/DzYdU9q3YOq7//1+1v37G6tr//184BPXj+vd33/t9Y93bX19+HEDhYAAgIWAAICFgACAhYAAgIWAAICFgACAhYAAnkP9mTd81z31E7jr3uuJ+ue8rfP3/r619e37jn+9R7vrfX6XLODBYCAgAWAgIAFgICABYCAgAWAgIAFgICABYDAz+/jRaJ1z2t9nurr1j3JtXWP+uT1nmp9Xu36PN1PX9+19fqsn48dLAAEBCwABAQsAAQELAAEBCwABAQsAAQELAAE5ufBvt6Dqnt4tXUP8OTbe4iffp7t+v28te4pr9+vv3596/ffDhYAAgIWAAICFgACAhYAAgIWAAICFgACAhYAAvMe7Lpndfv/tz3Gevxb6/Nq1z3Qk/Xz+XSvv/8n6+f7+vpf//76+2EHCwABAQsAAQELAAEBCwABAQsAAQELAAEBCwCBvAf7eo/tZN2jWp9nWXv9vNG6R33r9fXxeg98fX2ffh7yev6cBwsAf5CABYCAgAWAgIAFgICABYCAgAWAgIAFgMDPb1wUer2nd2vdY/v0+V2fp1l7vUd66/Ue5K31+7W+/5P19+91drAAEBCwABAQsAAQELAAEBCwABAQsAAQELAAEMh7sMcLeLxntv79W+ue4Hr+b63X58l6/k/W4598es9y/fxOPn193rKDBYCAgAWAgIAFgICABYCAgAWAgIAFgICABYDAv/UFrM8LrHtQenZbn379J5++vk7qnmT9fVn3QF9fH+v5qdnBAkBAwAJAQMACQEDAAkBAwAJAQMACQEDAAkDg48+DrXu0r1/fSf37t+OfrK9v3cN7/f7r8Wvr9/+W79Pb7GABICBgASAgYAEgIGABICBgASAgYAEgIGABIPB8D/b1HtS6J/d6j7P213t89fOv5+fk9Z7q+v1Zr6+T17/fNTtYAAgIWAAICFgACAhYAAgIWAAICFgACAhYAAj8qwf49p7mukf57T2zen3U62vdkz2px1+/H6f/r5/Pume7Pq94Pf6aHSwABAQsAAQELAAEBCwABAQsAAQELAAEBCwABPIe7Nrr5yWuf//k9Z7ZuodXW/cg1+exrsev1c93fR7wSd1jvh3/lh0sAAQELAAEBCwABAQsAAQELAAEBCwABAQsAAR+fuMi0Kf38F7vWZ2sz2Ncj3+y7gHW47/ek/z09/f178PrPfD197FmBwsAAQELAAEBCwABAQsAAQELAAEBCwABAQsAgbwHe+v1Ht+tdU/v23uWJ5/eY3y9p/n6+ni9J1p7/fv3+vo+sYMFgICABYCAgAWAgIAFgICABYCAgAWAgIAFgMD8PNj1eaJr6/tf9xxvf5+3rdfXt78/3o//tu752sECQEDAAkBAwAJAQMACQEDAAkBAwAJAQMACQOD582BvvX7eqB5da728X19/J+v1s+5R1+fVrt+/v77+nAcLAB9IwAJAQMACQEDAAkBAwAJAQMACQEDAAkDgXz3Augd6a339p9+ve3q31j249fi36uf3es9w3RN9ved7cnv96+/HyXr8EztYAAgIWAAICFgACAhYAAgIWAAICFgACAhYAAjkPdiTdQ/0pO5Zvd7j+vYe4uvjr9fHt4+/7jGffPv833p9fu1gASAgYAEgIGABICBgASAgYAEgIGABICBgASAw78G+ft5m7bYHvD6v8dN7iuvzStfr79ann7d7a90T/fT1V3/f1vdnBwsAAQELAAEBCwABAQsAAQELAAEBCwABAQsAgZ/fdZHr0roH+vp5hOse2K11T27dQ173ANc94fX78dfXz+3vn6x7rM6DBYAPJGABICBgASAgYAEgIGABICBgASAgYAEgkJ8H+3pP7GTd81r/f+3157d+PmvrHqLx314/6x726/NjBwsAAQELAAEBCwABAQsAAQELAAEBCwABAQsAAefBPj7+uqd64v7+2+s9ytvfP/n0HuTrPej1/NbWz++WHSwABAQsAAQELAAEBCwABAQsAAQELAAEBCwABD6+B3uy7nGdrHu6J+ue5es9xFuv92Rf//+TdQ947dufz8n6+dnBAkBAwAJAQMACQEDAAkBAwAJAQMACQEDAAkDgXz3At/eoXu/Z3qp7dOv5W/dk1z3o9fpe9xRvffr37UQP/o4dLAAEBCwABAQsAAQELAAEBCwABAQsAAQELAAE8h7suqdU9zTrnti6B3ey7pndev36Tl5/f07qHuW391BP1td/a50ft+xgASAgYAEgIGABICBgASAgYAEgIGABICBgASDw8xsXhdbnJX76eZvr+Vn36NbXt57/2qef53myfv9PXl/fr3+fXmcHCwABAQsAAQELAAEBCwABAQsAAQELAAEBCwCBvAd7vIBxz+rWuqe17pGt53fdQ1z3AF9//q8/v9vfv7W+vvX7e7Je37fsYAEgIGABICBgASAgYAEgIGABICBgASAgYAEg8G99ASe3Pah1T2rdczup5/f2/tc9uHUPdX0eb31/6/l5ffz187+9vtefT/39sIMFgICABYCAgAWAgIAFgICABYCAgAWAgIAFgMDz58HeWp8Xue5h3Vr38E7Wz/dkPX7t28+Drcdfr6+T9fW9vv5P7GABICBgASAgYAEgIGABICBgASAgYAEgIGABIDDvwZ58e4/0r/cET17vEb5+Xu/6/fnr83vy+vu57sG/vr5P7GABICBgASAgYAEgIGABICBgASAgYAEgIGABIJD3YNc9qpN1z6227ul9+/yerHu86+f36T3Lk/X9r3vgJ+vnv/4+2MECQEDAAkBAwAJAQMACQEDAAkBAwAJAQMACQODf+gLWPaWT2x7Xt/e81j69h3jrdvxPv/5bt+tn3fNcr9/b7189f+vzYu1gASAgYAEgIGABICBgASAgYAEgIGABICBgASAw78Gue1K31udJnrw+fyfr+a17fifrHt/6/m7VPdZ6/r/9/V3Pb80OFgACAhYAAgIWAAICFgACAhYAAgIWAAICFgACP7/jotH6PMO1dY9t3VNbP//Xe9jffn8nn/5+115/Pp/+ft+ygwWAgIAFgICABYCAgAWAgIAFgICABYCAgAWAwPw82Nd7Tuse1611z/H1318/n5P1/L0+PyfrHvCn//7J+vpfX592sAAQELAAEBCwABAQsAAQELAAEBCwABAQsAAQmPdgb9U9qHWP9uT1Htnr17ce//X7+/bzRl9//uvvx611T3bNDhYAAgIWAAICFgACAhYAAgIWAAICFgACAhYAAnkP9vWe0q1v78mdrM+bXM/Pp/c01z3Q2rrn+XoP/GS9/k7W83NiBwsAAQELAAEBCwABAQsAAQELAAEBCwABAQsAgfl5sK/3mD69R3my7tHW97/uQd5a96xvfXtP9OT1HvTJp//+mh0sAAQELAAEBCwABAQsAAQELAAEBCwABAQsAATmPdiTT+8Znqx7brdeP6/106+vtu6p1j3RW6frf/39PHl9/Z28Pv92sAAQELAAEBCwABAQsAAQELAAEBCwABAQsAAQeL4HS+u2x7g+z7XuEa/v72Q9vyfrnve653lSP796fb3eQ11fvx0sAAQELAAEBCwABAQsAAQELAAEBCwABAQsAAT0YMde73merHtmr/dU6+e77tHW1utrPf76vOL1+7V+P27ZwQJAQMACQEDAAkBAwAJAQMACQEDAAkBAwAJA4Pke7LrHtLbuyZ683pNb/379fNY96dd7tGvr9fN6T7a+v3V+2MECQEDAAkBAwAJAQMACQEDAAkBAwAJAQMACQODnNy4KfXtP7tvP41z3UGvrnuCtv75+bsc/WfeYv936/a/ZwQJAQMACQEDAAkBAwAJAQMACQEDAAkBAwAJAIO/BAsBfZAcLAAEBCwABAQsAAQELAAEBCwABAQsAAQELAAEBCwABAQsAAQELAAEBCwABAQsAAQELAAEBCwABAQsAAQELAAEBCwABAQsAAQELAAEBCwABAQsAAQELAAEBCwCB/wN3k+HZTOsIkAAAAABJRU5ErkJggg==) --- # 色彩 色彩体系主要定义了设计中的基础色板。 ## 使用[​](#使用 "使用的直接链接") ``` /* fq-mall 项目中已在 app.scss 全局引入,无需手动引入此文件 */ @import '~@fq/fq-weapp-ui/dist/styles/variables/default'; .xxx { color: $color-primary; } ``` ## 基础色板[​](#基础色板 "基础色板的直接链接") 主色系 $color-primary#00B68F $color-primary-border#CCF0E9 $color-primary-disabled#78CDBA $color-primary-bg#EBFAF6 $color-primary-gradientlinear-gradient(90deg, #38DA7D 3%, #02B0AA 100%) 绿色系 $color-family-green#52C41A $color-family-green-bg#F6FFED $color-family-green-border#D9F7BE $color-family-green-hover#73D13D $color-family-green-active#389E0D 蓝色系 $color-family-blue#1677FF $color-family-blue-bg#E6F7FF $color-family-blue-border#BAE7FF $color-family-blue-hover#4096FF $color-family-blue-active#096DD9 红色系 $color-family-red#FF4D4F $color-family-red-bg#FFF1F0 $color-family-red-border#FFCCC7 $color-family-red-hover#FF7875 $color-family-red-active#D92D33 $color-family-red-gradientlinear-gradient(135deg, #FD4A39 0%, #FD397E 100%) $color-family-red-price#FA2B19 $color-family-red-savings#FE3659 橙色系 $color-family-orange#FF8F16 $color-family-orange-light#FF6A00 $color-family-orange-dark#AC5300 $color-family-orange-price#64380B $color-family-orange-bg#FFF7E6 $color-family-orange-border#FFE7BA $color-family-orange-hover#FFA940 $color-family-orange-active#D46B08 $color-family-orange-gradientlinear-gradient(180deg, #FFDB66 0%, #FF6040 100%) $color-family-orange-diagonal-gradientlinear-gradient(141deg, #FC0 -1%, #FF4D00 117%) 黄色系 $color-family-yellow#FFD321 $color-family-yellow-bg#FFF6D3 $color-family-yellow-gradientlinear-gradient(180deg, #FFE56F 0%, #FFD300 100%) 紫色系 $color-family-purple#722ED1 $color-family-purple-bg#F9F0FF $color-family-purple-border#EFDBFF $color-family-purple-gradientlinear-gradient(138deg, #9067F4 0%, #6328F3 100%) ## 功能色板[​](#功能色板 "功能色板的直接链接") 文本色系 $text-color-base#333 $text-color-base-weak#666 $text-color-secondary#999 $text-color-disabled#BFBFBF $text-color-white#fff 背景色系 $bg-color#FFF $bg-color-base#F7F8F9 $bg-color-light#F5F5F5 $bg-color-lighter#EEE 边框色系 $border-color#E6E6E6 $border-color-dark#DDD ---