javascript - 无法从 Material UI 中的卡片内容中删除 padding-bottom

标签 javascript css reactjs material-ui jss

当使用 Material UI 中的 Card 组件时,CardContent 的 padding-bottom 似乎为 24px,我无法使用以下代码覆盖它。我可以使用此方法设置 paddingLeft、Right 和 Top,但由于某种原因 paddingBottom 不起作用。

const styles = theme => ({
  cardcontent: {
    paddingLeft: 0,
    paddingRight:0,
    paddingTop:0,
    paddingBottom: 0,
  },
})

然后应用该样式:

<CardContent className={classes.cardcontent}></CardContent>

这是我在浏览器中预览元素时看到的内容:

.MuiCardContent-root-158:last-child {
    padding-bottom: 24px;
}
.Component-cardcontent-153 {
    padding-top: 0;
    padding-left: 0;
    padding-right: 0;
}

我可以将浏览器中的像素编辑为 0。但我无法弄清楚如何定位 MuiCardContent-root-158:last-child 并在编辑器中覆盖 paddingBottom。

最佳答案

这是 v3 和 v4 的语法(下面是 v5 示例):

const styles = {
  cardcontent: {
    padding: 0,
    "&:last-child": {
      paddingBottom: 0
    }
  }
};

这是一个演示这一点的工作示例:

import React from "react";
import ReactDOM from "react-dom";

import CardContent from "@material-ui/core/CardContent";
import { withStyles } from "@material-ui/core/styles";
const styles = {
  cardcontent: {
    padding: 0,
    "&:last-child": {
      paddingBottom: 0
    }
  }
};

function App(props) {
  return (
    <div>
      <CardContent
        className={props.classes.cardcontent}
        style={{ border: "1px solid black" }}
      >
        <div style={{ border: "1px solid red" }}>My Content</div>
      </CardContent>
    </div>
  );
}
const StyledApp = withStyles(styles)(App);
const rootElement = document.getElementById("root");
ReactDOM.render(<StyledApp />, rootElement);

Edit y05z1kko4j

如果你看CardContent source code ,您可以找到它如何定义默认样式:

export const styles = {
  /* Styles applied to the root element. */
  root: {
    padding: 16,
    '&:last-child': {
      paddingBottom: 24,
    },
  },
};

这有助于理解如何覆盖它们。

<小时/>

对于使用 Material-UI v5 的用户,这里有一个 v5 示例(使用 styled 而不是 withStyles):

import React from "react";
import ReactDOM from "react-dom";
import CardContent from "@mui/material/CardContent";
import { styled } from "@mui/material/styles";

const CardContentNoPadding = styled(CardContent)(`
  padding: 0;
  &:last-child {
    padding-bottom: 0;
  }
`);
function App(props) {
  return (
    <div>
      <CardContentNoPadding style={{ border: "1px solid black" }}>
        <div style={{ border: "1px solid red" }}>My Content</div>
      </CardContentNoPadding>
    </div>
  );
}
const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);

Edit Remove bottom padding from card

关于javascript - 无法从 Material UI 中的卡片内容中删除 padding-bottom,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54236623/

相关文章:

javascript - 为什么我不能在 Javascript 中调用 array.0?

javascript - 基于页面高度的css三 Angular 形

javascript - 让最高元素控制 flex wrapper 高度

html - 如何避免内联元素中的换行符?

c# - VS2017 中的 ASP.Net Core : Setting up React. js + webpack + babel

javascript - 从 Java 传递的 Nashorn 和 'with' 上下文

css - 此屏幕截图中是否有 CSS 选择器?

reactjs - 将 AWS Cognito 与 Google 和 React 自定义登录集成的步骤

javascript - React.js,ES6,如何访问ES6类中的react-router Lifecycle?

javascript - 所有点击处理程序的 jQuery 选择器