如何在 ReactJS 中将带有属性的 CSS 转换为 MaterialUI 样式

Posted

技术标签:

【中文标题】如何在 ReactJS 中将带有属性的 CSS 转换为 MaterialUI 样式【英文标题】:How to convert CSS with properties to MaterialUI Styles in ReactJS 【发布时间】:2020-04-07 03:25:20 【问题描述】:

我有以下 CSS:

[contentEditable=true]:empty:not(:focus):before
    content:attr(data-text)

当它没有内容时,它允许在内容可编辑的 div 中显示一个占位符。我正在使用 Material-UI 样式,所以我需要类似的东西:

const styles = theme => (
  div[contentEditable=true]:empty:not(:focus):before: 
    content:attr(data-text)
  
);

我怎样才能做到这一点?有什么想法吗?

谢谢。

【问题讨论】:

【参考方案1】:

以下是几个语法选项,具体取决于您是要直接在 div (editableDiv) 上还是在祖先元素 (container) 上指定类。两者的唯一区别是定位后代时& 后面的空格。

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

import  makeStyles  from "@material-ui/core/styles";

const useStyles = makeStyles(
  container: 
    "& [contentEditable=true]:empty:not(:focus):before": 
      content: "attr(data-text)"
    
  ,
  editableDiv: 
    "&[contentEditable=true]:empty:not(:focus):before": 
      content: "attr(data-text)"
    
  
);
function App() 
  const classes = useStyles();
  return (
    <div>
      <div className=classes.container>
        <div contentEditable data-text="Click here to edit div 1" />
        <div contentEditable data-text="Click here to edit div 2" />
      </div>
      <div
        className=classes.editableDiv
        contentEditable
        data-text="Click here to edit div 3"
      />
    </div>
  );


const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);

相关文档:https://cssinjs.org/jss-plugin-nested?v=v10.0.0#use--to-reference-selector-of-the-parent-rule

【讨论】:

谢谢,它正在工作。也谢谢你的文档,我去看看。

以上是关于如何在 ReactJS 中将带有属性的 CSS 转换为 MaterialUI 样式的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Reactjs 中将数据从子组件传递到父组件? [复制]

如何在 html 中将 JSON 显示为代码以及 CSS 是啥?

带有省略号的 ReactJS 多行文本区域

带有禁用日期的 ReactJS 日期范围选择器 - Rsuite

Stanza.io 在 ReactJS 中发送带有客户属性的消息

如何在 wordpress 自定义背景中将 CSS 属性添加到背景大小支持