前端UI组件设计系统【免费下载链接】semi-designA modern, comprehensive, flexible design system and React UI library, AI-friendly built-in.Provide 3000 Design Tokens, easy to build your design system. Make Semi Design to Any Design. Design to Code in one click项目地址https://gitcode.com/gh_mirrors/se/semi-design点击查看免费下载Semi Design 的 FloatButton悬浮按钮自 2.85.0 版本起提供是一种可悬浮在页面上方的可操作按钮适合承载快捷操作、回到顶部、AI 助手入口等高频动作。本文将以 content/basic/floatbutton/index-en-US.md 为核心骨架结合 packages/semi-ui/floatButton 与 packages/semi-foundation/floatButton 的源码实现系统讲解 FloatButton 的引入方式、尺寸/形状/跳转/多彩风格/徽章/按钮组等全部用法并深入剖析其底层原理帮助你在实际项目中快速落地。如何引入FloatButton 是douyinfe/semi-ui的一部分自2.85.0版本开始支持。直接使用 ES Module 按需引入即可import { FloatButton } from douyinfe/semi-ui;如果还需要使用按钮组可一并引入FloatButtonGroupimport { FloatButton, FloatButtonGroup } from douyinfe/semi-ui;图标通常搭配douyinfe/semi-icons使用例如本文示例中反复出现的IconAIEditLevel1import { IconAIEditLevel1 } from douyinfe/semi-icons;基本用法FloatButton 是一个可以固定悬浮在页面上的可操作按钮。默认定位为页面右下角你可以通过style中的bottom、insetInlineEnd或right等属性微调其位置。最简单的用法如下——渲染一个带图标的悬浮按钮并监听点击事件import React from react; import { FloatButton } from douyinfe/semi-ui; import { IconAIEditLevel1 } from douyinfe/semi-icons; () { const onClick () { console.log(float button clicked); }; return ( spanBasic usage: Row one, third column at the bottom right of the page /span FloatButton icon{IconAIEditLevel1 /} style{{ bottom: 270px }} onClick{onClick}/ / ); };从源码实现来看FloatButton 实际渲染的是一个包裹着-body子元素的div见 packages/semi-ui/floatButton/index.tsxicon被放进-body内部居中展示外层div承担定位与点击事件。基础样式层面见 packages/semi-foundation/floatButton/floatButton.scss使用了position: fixed、bottom与right来锚定在页面右下角z-index: 1000保证悬浮层级。尺寸SizeFloatButton 支持三种尺寸默认default、小small、大large。通过size属性切换import React from react; import { FloatButton } from douyinfe/semi-ui; import { IconAIEditLevel1 } from douyinfe/semi-icons; () { const onClick () { console.log(float button clicked); }; return ( spanLarge size: Row two, third column at the bottom right of the page /span FloatButton sizelarge icon{IconAIEditLevel1 /} style{{ bottom: 200px }} onClick{onClick}/ /); };三种尺寸的可用枚举值在 packages/semi-foundation/floatButton/constants.ts 中统一定义const strings { SHAPE: [square, round], SIZE: [small, default, large], } as const;对应的实际像素尺寸定义在 packages/semi-foundation/floatButton/variables.scss尺寸宽度/高度说明small24px紧凑场景如密集工具栏default默认值32px通用场景large40px需要更突出视觉权重时SCSS 中通过-small、-default、-large三个类名分别控制宽高同时组件内部也会把size拼入 className见 index.tsx实现样式与逻辑的解耦。形状ShapeFloatButton 默认提供两种形状round圆形默认与square方形。通过shape属性切换import React from react; import { FloatButton } from douyinfe/semi-ui; import { IconAIEditLevel1 } from douyinfe/semi-icons; () { const onClick () { console.log(float button clicked); }; return ( spanSquare: Row three, third column at the bottom right of the page /span FloatButton shapesquare icon{IconAIEditLevel1 /} style{{ bottom: 150px }} onClick{onClick}/ /); };两种形状的圆角样式在 floatButton.scss 中定义-square { border-radius: $radius-floatButton_square; // 8px } -round { border-radius: $radius-floatButton_round; // var(--semi-border-radius-full)即全圆角 }其中方形的圆角为固定8px圆形的圆角使用主题令牌--semi-border-radius-full因此圆形外观会随主题设计令牌自动适配这也是 Semi Design 强调 Design Tokens 可定制性的体现。需要注意的是文档表格中shape的默认值标注为round与源码中 defaultProps 的shape: round完全一致。点击跳转href / target你可以通过href设置点击跳转地址并通过target指定目标网页在哪个窗口或框架中打开语义同原生a标签的target属性import React from react; import { FloatButton } from douyinfe/semi-ui; import { IconAIEditLevel1 } from douyinfe/semi-icons; () { const onClick () { console.log(float button clicked); }; return ( spanClick to jump: Row four, third column at the bottom right of the page/span FloatButton icon{IconAIEditLevel1 /} style{{ bottom: 100px }} href{https://semi.design} target{_blank} / /); };底层跳转逻辑在 index.tsx 的handleClick中实现值得注意的细节如下handleClick (e: React.MouseEvent) { const { href, target, onClick, disabled } this.props; if (disabled) { return; } // 如果有 href执行跳转 if (href) { if (target _blank) { window.open(href, _blank); } else { window.location.href href; } } // 如果有 onClick 回调执行它 if (onClick) { onClick(e); } };从源码可以看出三点行为约定禁用优先disabled为true时直接returnhref与onClick均不会触发双通道共存设置href后点击会先执行跳转随后onClick回调仍会照常执行跳转方式分支target _blank时用window.open新开窗口否则用window.location.href在当前页跳转。AI 风格多彩悬浮按钮colorfulSemi Design 内置了面向 AI 场景的视觉风格。设置colorful为true即可展示多彩渐变 AI 风格的悬浮按钮import React from react; import { FloatButton } from douyinfe/semi-ui; import { IconAIEditLevel1 } from douyinfe/semi-icons; () { const onClick () { console.log(float button clicked); }; return ( spanColorful buttons: The first column at the bottom right of the page/span FloatButton colorful icon{IconAIEditLevel1 /} style{{ bottom: 110px, insetInlineEnd: 150px }} href{https://semi.design} target{_blank} / /); };从样式源码floatButton.scss可以看到colorful模式的配色完全由 AI 主题令牌驱动-colorful { background: $color-floatButton-colorful-bg; // var(--semi-color-ai-general) color: $color-floatButton-colorful-text; // var(--semi-color-white) :hover { background: $color-floatButton-colorful-bg-hover; // var(--semi-color-ai-general-hover) } :active { background: $color-floatButton-colorful-bg-active; // var(--semi-color-ai-general-active) } }对应令牌定义在 variables.scss默认背景为--semi-color-ai-general文字为白色hover/active 状态分别使用--semi-color-ai-general-hover与--semi-color-ai-general-active。这意味着多彩悬浮按钮的颜色可以随主题切换统一变化非常适合作为页面中的AI 助手入口类按钮。带徽章BadgeFloatButton 支持直接透传 Badge 参数badge属性接受 Badge 组件的全部 props。你可以组合出红点提示、数字角标、多彩 徽章等多种形态import React from react; import { FloatButton } from douyinfe/semi-ui; import { IconAIEditLevel1 } from douyinfe/semi-icons; () { return ( spanWith badge: second column from the bottom right of the page/span FloatButton disabled icon{IconAIEditLevel1 /} badge{{ dot: true, type: danger }} style{{ bottom: 270, insetInlineEnd: 100px }} / FloatButton badge{{ count: 1000, overflowCount: 999 }} size{large} icon{IconAIEditLevel1 /} style{{ bottom: 210, insetInlineEnd: 100 }} / FloatButton icon{IconAIEditLevel1 /} badge{{ dot: true }} colorful style{{ bottom: 170, insetInlineEnd: 100 }} / FloatButton icon{IconAIEditLevel1 /} colorful sizelarge badge{{ count: VIP, type: danger }} style{{ bottom: 110, insetInlineEnd: 100 }} / /); };badge支持的关键子属性来自 packages/semi-ui/badge/index.tsx 的BadgeProps定义如下属性说明类型count徽章显示的数字/内容ReactNodedot是否只显示小圆点booleantype徽章类型primary | secondary | tertiary | danger | warning | successtheme徽章主题solid | light | invertedposition徽章位置leftTop | leftBottom | rightTop | rightBottomoverflowCount数字溢出上限超过后显示number示例中count: 1000, overflowCount: 999会在数量超过 999 时显示为999count也可以传字符串如VIP作为文字徽章。组件内部对 badge 的处理非常简洁见 index.tsx{badge ? Badge {...badge}{body}/Badge : body}即有badge时用Badge包裹按钮主体没有时直接渲染主体。而徽章的定位偏移在 floatButton.scss 中针对不同尺寸、形状做了精确计算——通过几何关系(√2 - 1)/√2 × R ≈ 0.29 × RR 为按钮半径保证徽章中心始终落在按钮中心与右上角的连线上视觉上处于右上角的标准位置。悬浮按钮组FloatButtonGroup当需要在一处放置多个相关操作时可以使用FloatButtonGroup通过items传入子项。每个子项支持icon、content文本内容与value子项标识等字段import React from react; import { FloatButtonGroup } from douyinfe/semi-ui; import { IconAIEditLevel1, IconAIStrokedLevel3, IconSearchStroked, IconHelpCircleStroked } from douyinfe/semi-icons; () { return ( span页面右下方最后一行/span FloatButtonGroup style{{ insetInlineEnd: 24, bottom: 50, }} onClick{(value, e) { console.log(Clicked , value); }} items{[ { icon: IconAIStrokedLevel3 /, content: Edit, value: editor, }, { icon: IconSearchStroked /, content: Search, value: search, }, { icon: IconHelpCircleStroked /, content: Help, value: help } ]} / /); };按钮组的点击回调签名是(value: string, e: React.MouseEvent)——第一个参数是被点击子项的value。这一机制在 floatButtonGroup.tsx 中通过data-value属性实现handleClick (e) { const value e.target.dataset.value; this.props.onClick?.(value, e); }每个子项渲染时都会携带data-value{item.value}见 floatButtonGroup.tsx点击时从事件目标上读取该值并回传给onClick从而让开发者无需自行记录索引即可区分点击了哪个子项。另外若某个子项配置了badge组件也会自动用Badge包裹该子项。按钮组的视觉形态是一个横向排布的卡片式容器样式源码floatButton.scss显示其使用display: inline-flex横向排列容器有8px圆角、--semi-shadow-elevated阴影与6px内边距子项之间以4px间隔子项内部图标与文本间隔8pxhover/active 分别使用--semi-color-fill-1与--semi-color-fill-2背景。整体同样固定在页面右下角bottom: 24px; right: 24px与单个悬浮按钮的默认定位保持一致。API 参考FloatButton属性说明类型默认值badge徽章参数BadgeProps-colorful多彩悬浮按钮AI 风格booleanfalseclassName样式类名string-disabled禁用状态booleanfalsehref点击跳转的链接同 hrefstring-icon显示图标ReactNode-onClick点击回调函数(e: React.MouseEvent) void-shape样式支持 round、squarestringroundsize尺寸支持 default、small、largestringdefaultstyle样式CSSProperties-target指定在何处显示链接的 URL同 targetstring-说明上述默认值可在 index.tsx 的defaultProps与 interface.ts 的FloatButtonProps类型定义中得到印证。href/target的跳转行为与原生a语义一致具体实现见handleClick。FloatButtonGroupItem在FloatButtonProps基础上增加以下参数属性说明类型默认值content文本内容string | ReactNode-valueitem 的标识string-该接口定义于 floatButtonGroup.tsxvalue会作为onClick回调的第一个参数返回。FloatButtonGroup属性说明类型默认值className样式类名string-disabled禁用状态booleanfalseitems单个子项的信息FloatButtonGroupItem[]-onClick点击回调函数(value: string, e: React.MouseEvent) void-style样式CSSProperties-源码结构速览如果你希望深入阅读实现以下是 FloatButton 相关的核心文件路径组件实现packages/semi-ui/floatButton/index.tsx、packages/semi-ui/floatButton/floatButtonGroup.tsx类型定义packages/semi-ui/floatButton/interface.ts常量形状/尺寸枚举、CSS 类名前缀packages/semi-foundation/floatButton/constants.ts样式与设计令牌packages/semi-foundation/floatButton/floatButton.scss、packages/semi-foundation/floatButton/variables.scssRTL 适配样式packages/semi-foundation/floatButton/rtl.scss其中 RTL 样式用于在从右向左阿拉伯语等排版环境下自动镜像徽章偏移方向尺寸/形状的 className 由组件根据 props 动态拼接SCSS 与逻辑层通过类名约定如semi-floatButton-large、semi-floatButton-square实现松耦合便于主题定制时仅靠覆盖 SCSS 变量即可调整外观。小结FloatButton 是 Semi Design 中一个小而精的浮层操作组件覆盖了图标按钮、尺寸/形状切换、链接跳转、AI 多彩风格、徽章角标与组合式按钮组等完整场景。其实现采用UI 层 Foundation 层的经典分层逻辑点击分发、跳转、disabled 拦截集中在 packages/semi-ui/floatButton 的 React 组件中样式与几何定位徽章偏移、圆角、间距、z-index则全部沉淀在 packages/semi-foundation/floatButton 的 SCSS 与设计令牌中既保证开箱即用的体验又保留了通过主题令牌尤其是 AI 相关的--semi-color-ai-*系列进行深度定制的空间。对于需要快速挂载AI 入口快捷操作通知角标等能力的业务页面FloatButton 与 FloatButtonGroup 是即插即用的理想选择。赞分享前端UI组件设计系统【免费下载链接】semi-designA modern, comprehensive, flexible design system and React UI library, AI-friendly built-in.Provide 3000 Design Tokens, easy to build your design system. Make Semi Design to Any Design. Design to Code in one click项目地址https://gitcode.com/gh_mirrors/se/semi-design点击查看免费下载相关推荐ant-design-vue FloatButton 悬浮按钮组件完全指南API、源码解析与实战场景ant design vue FloatButton 悬浮按钮组件完全指南API、源码解析与实战场景 FloatButton 是 ant design vue前端UI组件设计系统Ant Design FloatButton 完全指南悬浮按钮、分组菜单与 BackTop 的 API 详解与源码实现Ant Design FloatButton 完全指南悬浮按钮、分组菜单与 BackTop 的 API 详解与源码实现 FloatButton悬浮按钮 是前端UI组件设计系统如何快速实现React Native Navigation悬浮按钮FAB按钮的完整指南如何快速实现React Native Navigation悬浮按钮FAB按钮的完整指南 React Native Navigation是一个功能强大的原生导航移动开发上一篇B站视频下载完整指南8K、杜比视界与收藏夹批量解析下一篇ExplorerPatcher3分钟把Windows 11改回Windows 10桌面创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
企业数字化 ERP 产品动态
相关推荐
Visdom 流式更新性能优化:从客户端 Payload 到前端批量渲染的端到端调优 Visdom 流式更新性能优化:从客户端 Payload 到前端批量渲染的端到端调优 【免费下载链接】visdom Tool for real-time visualization, monitoring and collaborative analysis of AI/ML experiments and live data. Supports Python, PyTorch/Torch, NumPy, TensorF… · 2026/9/24 17:06:16
周报-2026-9-23 本周主要围绕网上图书商店系统开发项目开展工作,核心任务为完成项目需求分析与需求规格说明书的撰写,全面完成项目前期筹备工作,为后续系统开发、编码测试提供标准化依据。
在本周工作中,我首先对网上图书商店系统的整体业务场景进… · 2026/9/24 17:06:10
Yii 2 服务定位器(Service Locator)深度指南:应用组件、模块树遍历与注册机制 后端Web框架 【免费下载链接】yii2 Yii 2: The Fast, Secure and Professional PHP Framework 项目地址: https://gitcode.com/gh_mirrors/yi/yii2 点击查看 免费下载 服务定位器(Service Locator)是 Yii 2 框架中负责按 ID 提供组件&#x… · 2026/9/24 17:06:03
驱动——arm-linux应用程序开发 交叉开发——交叉编译环境准备1.串口工具用于充当开发板终端2.网络用于传输文件(挂载) --- 确保开发板能ping通虚拟机(ubuntu)3.安装nfs并设置nfs服务目录mount -o nolock,nfsvers3 192.168.0.3:/home/linux/nfs /mnt4.在ubuntu的… · 2026/9/24 17:42:47
PS怎么快速抠图人物?4种实用方法覆盖全场景需求 在电商主图制作、人像写真修图、商业海报设计等Photoshop日常工作中,人物抠图是从业者高频使用的基础操作。不同素材场景对抠图精度、操作效率的要求差异较大,选对适配的方法既能保证边缘质感,又能大幅压缩修图时长。本文分享4种实用的PS快速… · 2026/9/24 17:42:47
手机为什么用 MIPI,车载屏却常 LVDS?显示接口选型解析 手机、平板的屏幕大多采用 MIPI DSI,而车载中控屏常见 LVDS。两者并不是简单的“谁更先进”,而是接口特性与应用场景匹配的结果。
1. LVDS:为中长距离和复杂环境设计
LVDS(Low-Voltage Differential Signaling)用低压差… · 2026/9/24 17:42:47
大数据深度学习|计算机毕设项目|计算机毕设答辩|基于CNN的水稻病害检测 标题:基于CNN的水稻病害检测文档介绍:1.引言1.1 课题背景与意义水稻作为全球主要粮食作物之一,其生长过程中易受多种病害威胁,如稻瘟病、纹枯病等。传统病害检测依赖农业专家人工观察,存在效率低、成本高且主观性强的问… · 2026/9/24 17:42:47
【效能评估装备篇02】基于ADC的防空雷达系统效能评估实战 目录
一、应用场景描述
二、评估指标体系与参数设定
1. 可靠性基础参数(通用雷达典型值)
2. 能力向量C(归一化至[0,1])
三、ADC模型计算过程(对应MATLAB代码)
1. 可用度向量 A
2. 可信性矩阵 D
3. … · 2026/9/24 17:42:47
Prisma API Mutations 完全指南:对象、嵌套与批量变更操作详解 后端数据库GraphQL 【免费下载链接】prisma1 💾 Database Tools incl. ORM, Migrations and Admin UI (Postgres, MySQL & MongoDB) [deprecated] 项目地址: https://gitcode.com/gh_mirrors/pr/prisma1 点击查看 免费下载 本指南以 Prisma 1.x 系列… · 2026/9/24 17:42:41
基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程 简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为… · 2026/9/24 0:00:13
1D-CNN时间序列建模实战:从Conv1d原理到工业落地 简介:面向时间序列数据建模的一维卷积神经网络完整实现,适合深度学习入门者及需要快速验证时序模型的研究者,能够从音频、文本、传感器或股价等序列中挖掘局部特征与时间依赖。压缩包体积很小,只有3KB,内含3个Python脚… · 2026/9/24 0:00:26
柔软的L:汉语语流中被忽视的舌肌张力控制 1. 这个“L”不是字母表里的L,而是舌尖上的L最近在几个方言群和语音教学社群里,反复看到有人发一句:“也说字母L:柔软的长舌”。初看以为是英语发音课笔记,点开才发现全是方言爱好者、播音系学生、语言康复师甚至戏曲演… · 2026/9/24 0:00:44