【问题标题】:Rotate a MUI LinearProgress旋转 MUI LinearProgress
【发布时间】:2021-11-26 20:26:13
【问题描述】:

我正在尝试使用带有一些样式的 LinearProgress 组件制作带有 MUI 的图表,基本想法是让它旋转 90deg

const BorderLinearProgressBottom = withStyles((theme) => ({
  root: {
    height: 50,
    borderRadius: 5,
  },
  colorPrimary: {
    backgroundColor:
      theme.palette.grey[theme.palette.type === "light" ? 200 : 700],
  },
  bar: {
    borderRadius: 5,
    backgroundColor: "#00A99E",
  },
  transform: [{ rotate: "90deg" }],
}))(LinearProgress);

得到我的

 <BorderLinearProgressBottom
     variant="determinate"
     value={22}
     />

看起来像这样

我怎样才能让它旋转90deg?

我尝试输入 BorderLinearProgressBottom transform: [{ rotate: "90deg" }], 但没有成功。

Code Sandbox

【问题讨论】:

  • 如果您可以分享您的代码的工作示例,那么其他人提供帮助会更容易一些。
  • 也许,this 可以提供帮助。
  • @JunaidFaryad 几乎.. 有什么办法可以让底部出现蓝色?
  • 你的意思是把条移到底部?抱歉,您能再解释一下吗?

标签: javascript css reactjs material-ui rotation


【解决方案1】:

如果你想垂直显示LinearProgress,请不要使用rotate(-90deg),它会破坏你的布局,因为transform只是在视觉上缩放元素而不改变大小,所以旋转的LinearProgress仍然占据空间,好像它是水平布局的。要旋转它的外观和大小,您应该查看Slider 的实现以供参考。不过为了节省时间,我现在就给你写下来。

首先你需要交换ProgressBar容器的height和width:

// before
height: 50, // restrict the height
width: 'auto', // expand as long as you want (inside container)

// after
width: 50, // restrict the width
height: '100%', // expand as high as you want (inside container)

然后旋转里面的进度条。这个transform 有效,因为它只在“本地”转换(条形位置在容器内是绝对的)。

bar: {
  // the default style uses translateX, so we need to switch the axis
  transform: ({ value }) => {
    return `translateY(${value}%) !important`;
  }
}

就是这样。你完成了。不是它看起来像一个垂直的Slider。

现场演示

【讨论】:

  • 谢谢,现在我明白为什么我的转换:“旋转(90度)”在酒吧内不起作用
  • 如果样式将日期推到顶部,我将如何在图表下方显示日期?
  • @dovigz 查看我的更新答案和代码框演示。将高度更改为100%(结果设置为auto 是个坏主意)。并将其放入弹性盒中。
猜你喜欢
  • 2020-06-30
  • 2020-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-11
  • 2021-12-23
  • 1970-01-01
相关资源
最近更新 更多