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

简介

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

与框架无关的样式应用包

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

安装

bash 复制代码
npm i @emotion/css

示例

javascript 复制代码
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下的应用包

bash 复制代码
npm i @emotion/react

示例

javascript 复制代码
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就是使用的这个包。

bash 复制代码
npm i @emotion/styled @emotion/react --save

示例

javascript 复制代码
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 包。

相关推荐
blns_yxl几秒前
拖拽排序列表(HTML+JS)
前端·javascript·html
Data1 分钟前
把 React 前端做成「插件市场」:前后端联动的行业包可插拔架构
前端
光影少年3 分钟前
RN Bridge 原理
前端·react native·react.js
moMo10 分钟前
用 React 写一个 TodoList
react native·react.js
daols8811 分钟前
vue vxe-context-menu 通用右键菜单组件使用
前端·javascript·vue.js·vxeui
程序员黑豆11 分钟前
鸿蒙应用开发实战:轻松实现列表上拉加载更多
前端·华为·harmonyos
hamber30 分钟前
GoGBA 上架半年记
前端
IT_陈寒33 分钟前
Python的finally居然不等同于Go的defer,差点坑惨我
前端·人工智能·后端
恋猫de小郭35 分钟前
给 AI 的 Agent 实现指南,可控 Agent 的关键
前端·人工智能·ai编程
米码收割机38 分钟前
【Python】Flask+SQLite_web 宠物领养系统 (源码+文档)【独一无二】
前端·python·flask