带有 MUI 的 CSS 伪选择器

Posted

技术标签:

【中文标题】带有 MUI 的 CSS 伪选择器【英文标题】:CSS pseudo selectors with MUI 【发布时间】:2019-05-15 01:08:54 【问题描述】:

我在很多 MUI 代码中看到他们在他们的 react 样式组件中使用伪选择器。我以为我会尝试自己做,但我无法让它发挥作用。我不确定我做错了什么,或者这是否可能。

我正在尝试制作一些 CSS 来抵消这个元素对固定标题的影响。

import React from 'react';
import  createStyles, WithStyles, withStyles, Typography  from '@material-ui/core';
import  TypographyProps  from '@material-ui/core/Typography';
import GithubSlugger from 'github-slugger';
import Link from './link';

const styles = () =>
  createStyles(
    h: 
      '&::before': 
        content: 'some content',
        display: 'block',
        height: 60,
        marginTop: -60
      
    
  );

interface Props extends WithStyles<typeof styles>, TypographyProps 
  children: string;


const AutolinkHeader = ( classes, children, variant : Props) => 
  // I have to call new slugger here otherwise on a re-render it will append a 1
  const slug = new GithubSlugger().slug(children);

  return (
    <Link to=`#$slug`>
      <Typography classes= root: classes.h  id=slug variant=variant children=children />
    </Link>
  );
;

export default withStyles(styles)(AutolinkHeader);

【问题讨论】:

【参考方案1】:

我发现内容属性需要像这样被双引号引起来

const styles = () =>
  createStyles(
    h: 
      '&::before': 
        content: '"some content"',
        display: 'block',
        height: 60,
        marginTop: -60
      
    
  );

然后一切都按预期进行

【讨论】:

content: ' "some content" ',你错过了封闭式报价,但无论如何谢谢,你拯救了我的一天。 这对于空的伪元素也很重要。即content: '""' 为此浪费了 2 个小时。我正在使用内容:'blabla',但它不起作用?‍♂️ 好吧,内容浪费了我的时间。 谢谢。你拯救了我的一天。【参考方案2】:

正如@Eran Goldin 所说,检查content 属性的值并确保将其设置为字符串""。奇怪的是,你正在做这样的事情:

'&::before': 
  content: '',
  ...

在输出样式表中根本没有设置content 属性

.makeStyles-content-154:before 
  content: ;
  ...

在Material-UI style object中,字符串的内容是css值,包括双引号,修复简单写

'&::before': 
  content: '""', // "''" will also work.
  ...

【讨论】:

以上是关于带有 MUI 的 CSS 伪选择器的主要内容,如果未能解决你的问题,请参考以下文章

CSS基础总结 选择器

CSS动态伪类选择器温故-3

CSS3中的选择器

第十三章 CSS选择器(下)

CSS伪元素选择器问题

css都有哪些选择器