当标签覆盖多行时步进器垂直线分离?
Stepper vertical line detaches when label wraps over multiple lines?
我的 MaterialUI Stepper // StepLabel 中的文本有时会换行。
无论标签中的文本行数如何,我都需要将垂直 StepConnectors 附加到 StepIcons。
我尝试过其他解决方案,例如使用 CSS 伪标记,但每次尝试将这些更改应用到我们现有的解决方案中时,我都会碰壁。
非常感谢任何能提供帮助的人。
沙盒
https://codesandbox.io/s/practical-chebyshev-4hktl?file=/src/App.js
当前截图
现有主题选项
import {
ThemeOptions,
createTheme,
ThemeProvider,
CssBaseline
} from "@material-ui/core";
export const themeOptions: ThemeOptions = {
overrides: {
MuiStepper: {
root: {
backgroundColor: "transparent" // remove set background
}
},
MuiStepConnector: {
vertical: {
padding: 0,
width: 5,
marginLeft: 8 // half icon
},
lineVertical: {
top: "calc(-50%)",
bottom: "calc(50%)",
borderLeftWidth: "2px",
marginLeft: "-1px", // center (1/2 width)
marginTop: "-6px", // add -ve margin to top and bottom ...
marginBottom: "-6px", // ... to hide gap due to smaller icon
borderColor: "lightgrey",
"$active &, $completed &": {
borderLeftWidth: "4px",
marginLeft: "-2px",
borderColor: "blue"
}
}
},
MuiStepLabel: {
label: {
textAlign: "left",
fontSize: "1.25rem",
"&$active": {
fontWeight: 400
},
"&$completed": {
fontWeight: 400
}
},
iconContainer: {
paddingRight: 12
}
},
MuiStepIcon: {
root: {
display: "block",
fontSize: "1rem",
color: "lightgrey",
"&$completed": {
color: "blue"
},
"&$active": {
color: "blue"
}
}
}
}
};
以防万一以后有人发现这个,我们在交付任务的实现上做出了妥协。
MuiStepLabel 的高度不是可变的,而是固定的高度,以保持 StepIcons 之间的距离相同。如果您想象下面的屏幕截图具有不同的字体大小 + 间距,它最终看起来还不错,但并不理想。
之前
// src/Theme/index.tsx
export const themeOptions: ThemeOptions = {
overrides: {
MuiStepConnector: {
marginTop: "-6px",
marginBottom: "-6px",
}
MuiStepLabel: {}
}
}
之后
// src/Theme/index.tsx
export const themeOptions: ThemeOptions = {
overrides: {
MuiStepConnector: {
marginTop: "-2px",
marginBottom: "-4px",
minHeight: "calc(24px + 0.5rem)",
},
MuiStepLabel: {
height: "1.25rem",
lineHeight: "1.25rem",
}
}
}
沙盒
https://codesandbox.io/s/epic-bohr-0p7fj?file=/src/Theme/index.ts
我的 MaterialUI Stepper // StepLabel 中的文本有时会换行。
无论标签中的文本行数如何,我都需要将垂直 StepConnectors 附加到 StepIcons。
我尝试过其他解决方案,例如使用 CSS 伪标记,但每次尝试将这些更改应用到我们现有的解决方案中时,我都会碰壁。
非常感谢任何能提供帮助的人。
沙盒
https://codesandbox.io/s/practical-chebyshev-4hktl?file=/src/App.js
当前截图
现有主题选项
import {
ThemeOptions,
createTheme,
ThemeProvider,
CssBaseline
} from "@material-ui/core";
export const themeOptions: ThemeOptions = {
overrides: {
MuiStepper: {
root: {
backgroundColor: "transparent" // remove set background
}
},
MuiStepConnector: {
vertical: {
padding: 0,
width: 5,
marginLeft: 8 // half icon
},
lineVertical: {
top: "calc(-50%)",
bottom: "calc(50%)",
borderLeftWidth: "2px",
marginLeft: "-1px", // center (1/2 width)
marginTop: "-6px", // add -ve margin to top and bottom ...
marginBottom: "-6px", // ... to hide gap due to smaller icon
borderColor: "lightgrey",
"$active &, $completed &": {
borderLeftWidth: "4px",
marginLeft: "-2px",
borderColor: "blue"
}
}
},
MuiStepLabel: {
label: {
textAlign: "left",
fontSize: "1.25rem",
"&$active": {
fontWeight: 400
},
"&$completed": {
fontWeight: 400
}
},
iconContainer: {
paddingRight: 12
}
},
MuiStepIcon: {
root: {
display: "block",
fontSize: "1rem",
color: "lightgrey",
"&$completed": {
color: "blue"
},
"&$active": {
color: "blue"
}
}
}
}
};
以防万一以后有人发现这个,我们在交付任务的实现上做出了妥协。
MuiStepLabel 的高度不是可变的,而是固定的高度,以保持 StepIcons 之间的距离相同。如果您想象下面的屏幕截图具有不同的字体大小 + 间距,它最终看起来还不错,但并不理想。
之前
// src/Theme/index.tsx
export const themeOptions: ThemeOptions = {
overrides: {
MuiStepConnector: {
marginTop: "-6px",
marginBottom: "-6px",
}
MuiStepLabel: {}
}
}
之后
// src/Theme/index.tsx
export const themeOptions: ThemeOptions = {
overrides: {
MuiStepConnector: {
marginTop: "-2px",
marginBottom: "-4px",
minHeight: "calc(24px + 0.5rem)",
},
MuiStepLabel: {
height: "1.25rem",
lineHeight: "1.25rem",
}
}
}
沙盒
https://codesandbox.io/s/epic-bohr-0p7fj?file=/src/Theme/index.ts