如何在React中添加基于parant标签的Child标签的css?

wa7juj8i  于 2023-06-07  发布在  React
关注(0)|答案(1)|浏览(338)
import React from 'react';
const style = {
    h2 : {
        fontSize: '20px';
        color: 'black';
    } & span: {
       color: 'white';
    }
}
const Main = () => {
    return (
        <h2 style={style}>Hello<span>Test</span></h2> 
   );
}
export default Main;

**注:**可以是动态的。H2是父标签,我在同一个标签中应用了样式,我希望它也适用于子标签()。

kq0g1dla

kq0g1dla1#

JSX style属性与HTML的style属性类似。样式属性和属性都只接受CSS属性。因此,不允许使用选择器、伪元素或伪类。

使用style属性

替换以下内容:

const style = {
    h2 : {
        fontSize: '20px';
        color: 'black';
    } & span: {
       color: 'white';
    }
}

const Main = () => {
    return (
        <h2 style={style}>Hello<span>Test</span></h2> 
   );
}

有:

const h2Style = {
  fontSize: '20px';
  color: 'black';
}
const spanStyle = {
  color: 'white';
}

const Main = () => {
    return (
        <h2 style={h2Style}>Hello<span style={spanStyle}>Test</span></h2> 
   );
}

或者更清晰的:

const styles = {
  h2: {
    fontSize: '20px';
    color: 'black';
  },
  span: {
    color: 'white';
  }
}

const Main = () => {
    return (
        <h2 style={styles.h2}>Hello<span style={styles.span}>Test</span></h2> 
   );
}

但是,由于您只希望为h2元素定义样式,因此我们有更多的选项:

CSS / SCSS

使用CSS,在一个单独的文件:

import "./your-css.css";

const Main = () => {
    return (
        <h2 className="title">Hello<span>Test</span></h2> 
   );
}

其中,.your-css.css文件包含

.title {
  fontSize: '20px';
  color: 'black';
}

.title span {
  color: 'white';
}

甚至可以是嵌套的(如果使用.scss之类的预处理器)

.title {
  fontSize: '20px';
  color: 'black';

  span {
    color: 'white';
  }
}

CSS-in-JS

考虑一个更“React”的解决方案,我们可以使用CSS-in-JS,比如styled-componentsRead More

import React from 'react';
import styled from 'styled-components';

const Title = styled.h2`
  fontSize: '20px';
  color: 'black';

  span {
    color: 'white';
  }
`;

const Main = () => {
    return (
        <Title>Hello<span>Test</span></Title> 
   );
}

export default Main;

相关问题