React Emotion 如何优雅的使用样式(一)

简介

Emotion 是一个专为使用 JavaScript 编写 css 样式而设计的库。它提供了强大且可预测的样式组合,以及源映射、标签和测试实用程序等功能为开发人员提供了出色的体验,并且支持字符串和对象样式。

与框架无关的样式应用包

Emotion中提供了一个与框架无关的样式应用包@emotion/css, 这是使用 Emotion的最简单的方法,应用这个包,无需关心CSS的相关适配问题。我们只需要用 css 函数生成类名并编写样式就行了。

安装

npm i @emotion/css

示例

import {
    css } from '@emotion/css'

const color = 'white'

render(
  <div
    className={
   css`
      padding: 32px;
      background-color: hotpink;
      font-size: 24px;
      border-radius: 4px;
      &:hover {
        color: ${
     color};
      }
    `}
  >
   Hover 示例
  </div>
)

试试看上面的示例,当鼠标悬停在Div 上时的颜色变化

适用React下的应用包

npm i @emotion/react

示例

import {
    css } from '@emotion/react'

const color = 'white'

render(
  <div
    css={
   css`
      padding: 32px;
      background-color: hotpink;
      font-size: 24px;
      border-radius: 4px;
      &:hover {
        color: ${
     color};
      }
    `}
  >
    Hover to change color.
  </div>
)

还可以使用 styled 样式包, 比如在MUI就是使用的这个包。

npm i @emotion/styled @emotion/react --save

示例

import styled from '@emotion/styled'

const Button = styled.button`
  padding: 32px;
  background-color: hotpink;
  font-size: 24px;
  border-radius: 4px;
  color: black;
  font-weight: bold;
  &:hover {
    color: white;
  }
`

render(<Button>This my button component.</Button>)
总结

上面讲了多种使用 Emotion的方法,如果你使用的是 React,最简单的入门方法是使用 @emotion/react 包。如果你不使用 React,你应该使用 @emotion/css 包。

相关推荐

  1. React Emotion 如何优雅使用样式

    2024-02-06 22:52:02       31 阅读
  2. 谈谈如何优雅使用@Autowired

    2024-02-06 22:52:02       18 阅读
  3. 如何使用CSS样式化滚动条

    2024-02-06 22:52:02       25 阅读
  4. 优雅使用ChromeDriver

    2024-02-06 22:52:02       17 阅读
  5. 关于份nginx-我是如何优化

    2024-02-06 22:52:02       8 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-02-06 22:52:02       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-06 22:52:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-06 22:52:02       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-06 22:52:02       20 阅读

热门阅读

  1. npm命令

    2024-02-06 22:52:02       29 阅读
  2. Qt应用软件【协议篇】UDP示例

    2024-02-06 22:52:02       29 阅读
  3. elementui上传文件不允许重名

    2024-02-06 22:52:02       30 阅读
  4. C#面:final ,finally,finalize 的区别

    2024-02-06 22:52:02       32 阅读
  5. Z0423 树的染色2

    2024-02-06 22:52:02       33 阅读
  6. 详解MYSQL中的平均值组大小

    2024-02-06 22:52:02       32 阅读
  7. 前端开发:入门(一)

    2024-02-06 22:52:02       27 阅读