reactjs - 有没有办法在 React 中使用 Material UI 实现水平时间线?

标签 reactjs material-ui timeline

我正在尝试使用 React 中的 Material UI 实现水平时间线。在他们的文档中,我只能找到垂直时间线演示,我找不到任何可以直接更改对齐方式的 Prop 。有没有办法解决这个问题?
我想实现类似下图的东西,但水平。
enter image description here

最佳答案

您可以覆盖时间线样式并执行以下操作:

const useStyles = makeStyles({
  timeline: {
    transform: "rotate(90deg)"
  },
  timelineContentContainer: {
    textAlign: "left"
  },
  timelineContent: {
    display: "inline-block",
    transform: "rotate(-90deg)",
    textAlign: "center",
    minWidth: 50
  },
  timelineIcon: {
    transform: "rotate(-90deg)"
  }
});

function App() {
  const classes = useStyles();

  return (
    <Timeline className={classes.timeline} align="alternate">
      <TimelineItem>
        <TimelineSeparator>
          <CheckCircleOutlineIcon
            color="primary"
            className={classes.timelineIcon}
          />
          <TimelineConnector />
        </TimelineSeparator>
        <TimelineContent className={classes.timelineContentContainer}>
          <Paper className={classes.timelineContent}>
            <Typography>Eat</Typography>
          </Paper>
        </TimelineContent>
      </TimelineItem>
      <TimelineItem>
        <TimelineSeparator>
          <PauseCircleFilledIcon
            color="primary"
            className={classes.timelineIcon}
          />
          <TimelineConnector />
        </TimelineSeparator>
        <TimelineContent className={classes.timelineContentContainer}>
          <Paper className={classes.timelineContent}>
            <Typography>Code</Typography>
          </Paper>
        </TimelineContent>
      </TimelineItem>
      <TimelineItem>
        <TimelineSeparator>
          <CachedIcon color="primary" className={classes.timelineIcon} />
          <TimelineConnector />
        </TimelineSeparator>
        <TimelineContent className={classes.timelineContentContainer}>
          <Paper className={classes.timelineContent}>
            <Typography>Sleep</Typography>
          </Paper>
        </TimelineContent>
      </TimelineItem>
      <TimelineItem>
        <TimelineSeparator>
          <CachedIcon color="primary" className={classes.timelineIcon} />
          <TimelineConnector />
        </TimelineSeparator>
        <TimelineContent className={classes.timelineContentContainer}>
          <Paper className={classes.timelineContent}>
            <Typography>Repeat</Typography>
          </Paper>
        </TimelineContent>
      </TimelineItem>
      <TimelineItem>
        <TimelineSeparator>
          <ErrorIcon color="primary" className={classes.timelineIcon} />
        </TimelineSeparator>
        <TimelineContent className={classes.timelineContentContainer}>
          <Paper className={classes.timelineContent}>
            <Typography>Sleep</Typography>
          </Paper>
        </TimelineContent>
      </TimelineItem>
    </Timeline>
  );
}
如果标签不在同一标高上,请调整 minWidth .

结果如下所示:
timeline
使用这种方法会让人感到奇怪的一件事是,由于旋转,视觉上最左边的元素是时间轴中的最后一个元素。

关于reactjs - 有没有办法在 React 中使用 Material UI 实现水平时间线?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63175060/

相关文章:

javascript - reactjs 的 jsx 中的 es6 对象扩展运算符

reactjs - 如何使用 webpack 内联样式?

javascript - 尝试使用 JSON 数据填充卡片时,获取元素类型无效错误

d3.js - 对 d3 中的时间线数据进行聚类

python - 如何仅按小时聚合 Pandas 日期时间轴系列

ajax - 调度执行 AJAX 请求的操作时出现无限循环 - ReactJS、Redux、Redux-saga

javascript - 以可编辑的形式创建输入选择

svg - 如何在 material-ui 图标周围添加轮廓/描边?

ReactJS,material-ui TextField onChange 不起作用

cuda - Nvidia CUDA Profiler 的时间线包含许多大的空白