You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在项目中横向展开SpeedDial?可使用其他替代库

实现横向展开的SpeedDial效果

自定义Material UI SpeedDial方案

Material UI的SpeedDial默认是纵向展开,通过覆盖样式可以轻松改成横向布局:

  1. 安装依赖:
npm install @mui/material @emotion/react @emotion/styled
  1. 编写组件代码:
import React from 'react';
import SpeedDial from '@mui/material/SpeedDial';
import SpeedDialAction from '@mui/material/SpeedDialAction';
import CopyIcon from '@mui/icons-material/Copy';
import PrintIcon from '@mui/icons-material/Print';
import ShareIcon from '@mui/icons-material/Share';

const actions = [
  { icon: <CopyIcon />, name: '复制' },
  { icon: <PrintIcon />, name: '打印' },
  { icon: <ShareIcon />, name: '分享' },
];

const HorizontalSpeedDial = () => {
  return (
    <SpeedDial
      ariaLabel="横向快捷操作"
      sx={{
        // 覆盖默认纵向布局为横向
        '& .MuiSpeedDial-directionUp, & .MuiSpeedDial-directionDown': {
          flexDirection: 'row',
        },
        // 调整操作项间距
        '& .MuiSpeedDialAction-root': {
          margin: '0 8px',
        },
      }}
      icon={<ShareIcon />}
    >
      {actions.map((action) => (
        <SpeedDialAction
          key={action.name}
          icon={action.icon}
          tooltipTitle={action.name}
        />
      ))}
    </SpeedDial>
  );
};

export default HorizontalSpeedDial;

第三方库替代方案

如果不想自定义,以下库直接支持横向展开:

React-Motion-Speed-Dial

轻量且支持自定义展开方向,配置direction为left/right即可实现横向效果:

  • 安装:
npm install react-motion-speed-dial
  • 使用示例:
import SpeedDial from 'react-motion-speed-dial';
import 'react-motion-speed-dial/dist/style.css';
import CopyIcon from '@mui/icons-material/Copy';
import PrintIcon from '@mui/icons-material/Print';
import ShareIcon from '@mui/icons-material/Share';

const HorizontalSpeedDial = () => {
  return (
    <SpeedDial
      direction="right"
      icon={<ShareIcon />}
    >
      <SpeedDial.Action icon={<CopyIcon />} label="复制" onClick={() => {}} />
      <SpeedDial.Action icon={<PrintIcon />} label="打印" onClick={() => {}} />
    </SpeedDial>
  );
};

React-Speed-Dial

轻量库,直接通过direction属性设置横向布局:

  • 安装:
npm install react-speed-dial
  • 使用示例:
import { SpeedDial, SpeedDialItem } from 'react-speed-dial';
import CopyIcon from '@mui/icons-material/Copy';
import PrintIcon from '@mui/icons-material/Print';
import ShareIcon from '@mui/icons-material/Share';

const HorizontalSpeedDial = () => {
  return (
    <SpeedDial
      icon={<ShareIcon />}
      direction="horizontal"
    >
      <SpeedDialItem icon={<CopyIcon />} label="复制" onClick={() => {}} />
      <SpeedDialItem icon={<PrintIcon />} label="打印" onClick={() => {}} />
    </SpeedDial>
  );
};

内容的提问来源于stack exchange,提问作者Ghina Sharaf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 06:48:26