[React] 使用React的CSS应用方法

这是我学习React CSS应用方式的笔记。

这次所使用的CSS全部统一采用以下样式。

スクリーンショット 2021-10-13 7.30.13.png

行内样式

export const InlineStyle = () => {

  const contaierStyle = {
    border: "solid 2px #329eff",
    borderRadius: "20px"
    padding: "8px",
    margin: "8px"
  }

  return (
    <div style={contaierStyle}>
      <p>スタイル</p>
    </div>
  )
}
    • コンポーネント内にスタイルを記述していくReactがデフォルトで提供している方法。

 

    CSSプロパティはキャメルケース文字列のように “” で囲い , で区切る。

CSS模块化

import classes from "./CssModules.module.scss";

export const CssModules = () => {
  return (
    <div className={classes.container}>
      <p>スタイル</p>
    </div>
  );
};
.container {
  border: solid 2px #329eff;
  border-radius: 20px;
  padding: 8px;
  margin: 8px;
}
    • CSSを別ファイルに切り出してimportする方法。

 

    • 切り出すCSSファイル名にはmoduleをつける。

 

    • CSSの書き方は普通のCSSの書き方と同じ。

node-scssをインストールすることで使用可能。

Styled JSX,即样式化的JSX。

export const StyledJsx = () => {
  return (
    <>
      <div className="container">
        <p>スタイル</p>
      </div>

      <style jsx="true">
        {`
          .container {
            border: solid 2px #329eff;
            border-radius: 20px;
            padding: 8px;
            margin: 8px;
          }
        `}
      </style>
    </>
  );
};
    • JSXの中でスタイルを書いていく方法。

 

    • デフォルトだとhoverなどの疑似要素は使用できない。

 

    • Next.jsに標準搭載されている。

styled-jsxをインストールすることで使用可能。

Styled-Components (样式化组件)

import styled from "styled-components";

export const StyledComponents = () => {
  return (
    <Container>
      <p>スタイル</p>
    </Container>
  );
};

const Container = styled.div`
  border: solid 2px #329eff;
  border-radius: 20px;
  padding: 8px;
  margin: 8px;
`;
    • スタイルで当てたコンポーネントを当てていく方法。

 

    • コンポーネントファイルでstyled-componentsをimportする必要がある。

styled-componentsをインストールすることで使用可能。

书写技巧

import styled from "styled-components";

export const StyledComponents = () => {
  return (
    <SContainer>
      <STitle>スタイル</STitle>
    </SContainer>
  );
};

const SContainer = styled.div`
  border: solid 2px #329eff;
  border-radius: 20px;
  padding: 8px;
  margin: 8px;
`;

const STitle = styled.p`
  color: red;
`;

通过将组件名称的首字母设为S,可以立即看出这是一个应用了样式的组件,因此推荐使用这种写法。

情感

    • Emotionは色々な書き方がある方法。

 

    • 1行目に/** @jsx jsx */と書く必要がある。

@emotion/reactと@emotion/styledをインストールする必要がある。

可以以与CSS相同的写法实现的方法

/** @jsx jsx */
import { jsx, css } from "@emotion/react";

export const Emotion = () => {

  const containerStyle = css`
    border: solid 2px #329eff;
    border-radius: 20px;
    padding: 8px;
    margin: 8px;
  `;

  return (
    <div css={containerStyle}>
      <p>スタイル</p>
    </div>
  );
};

类似于”inline style”的写法。

/** @jsx jsx */
import { jsx, css } from "@emotion/react";

export const Emotion = () => {

  const containerStyle = css({
    border: "solid 2px #329eff",
    borderRadius: "20px",
    padding: "8px",
    margin: "8px"
  });

  return (
    <div css={containerStyle}>
      <p>スタイル</p>
    </div>
  );
};

类似 styled-component 的写法

/** @jsx jsx */
import { jsx, css } from "@emotion/react";
import styled from "@emotion/styled";

export const Emotion = () => {
  return (
    <SContainer>
      <p>スタイル</p>
    </SContainer>
  );
};

const SContainer = styled.button`
  border: solid 2px #329eff;
  border-radius: 20px;
  padding: 8px;
  margin: 8px;
`;

请提供更多的上下文信息。

广告
将在 10 秒后关闭
bannerAds