reactjs - 基于高度的材料UI纸张背景颜色?
问题描述
我正在尝试制作一个使用 Material 指南的黑暗主题的 React 前端。根据深色主题规范,每个标高都应使表面变亮。这似乎不适用于elevation
material-ui 的 Paper 组件中的属性,它似乎只添加了一个阴影。我想知道这个规范是否已经实现,或者产生这种效果的最佳解决方案是什么。
例子:
<Paper elevation={1}>
<Typography variant="h6">Paper1</Typography>
</Paper>
<Paper elevation={5}>
<Typography variant="h6">Paper2</Typography>
</Paper>
这两张纸具有不同的高度,但仍然具有相同的背景颜色。
解决方案
刚刚遇到了同样的问题。似乎 material-ui 确实仅通过添加框阴影来实现提升。我想出了一个快速的解决方案(打字稿):
import { lighten, makeStyles, Paper, Theme } from "@material-ui/core";
import React from "react";
const useStyles = makeStyles<Theme, { elevation: number }>((theme) => ({
paper: {
boxShadow: (props) => theme.shadows[props.elevation],
backgroundColor: (props) =>
lighten(theme.palette.background.paper, props.elevation * 0.025),
},
}));
export const CustomPaper: React.FC<{elevation: number}> = ({ children, elevation }) => {
const classes = useStyles({ elevation });
return (
<Paper className={classes.paper}>
{children}
</Paper>
);
};
我发现因子 0.025 产生了不错的外观。但是,我只是通过一些试验和错误想出了它。可能有更复杂的方法。
推荐阅读
- google-apps-script - 如何自定义 onEdit() 脚本以处理从剪贴板粘贴值列表时修改的所有行?
- python - 为什么我使用`sum`得到一个TypeError“'float' object is not iterable”?
- css - 如何在所有站点上仅使用 css 获取具有相同数据属性的元素?
- sql-server - 无法使用managment studio连接sql server
- c++ - 为什么 qCDebug() 宏是这样定义的?
- android - 使用 SHA256 和 CertificatePinner 在 Volley 中进行 SSL 固定
- android - 自定义 Html.TagHandler 和段落中两个内部跨度的样式
- extjs - 如何设置嵌套数据视图
- reactjs - 使用 jest 在反应中测试 rxjs 订阅
- javascript - 覆盖 Google Analytics 中的着陆页跟踪