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 包。

相关推荐
runningshark24 分钟前
Lecture: The ‘Why & How‘ Principle: Moving Beyond Simple Statements
开发语言·前端·javascript
公爵爱学习29 分钟前
无人机多点导航笔记
java·前端·笔记
是立不是利33 分钟前
HTML 的尊严:一种被低估的语言
前端·html
秋天的一阵风37 分钟前
🤔首屏Banner压到40KB,LCP还是4秒?原来一直搞错了最大渲染元素
前端·人工智能·面试
秋天的一阵风38 分钟前
💬面试官:Markdown 流式解析如何避免标签截断?「直接重新让 marked 全部渲染」行不行?
前端·面试·ai编程
芳心粽伙饭38 分钟前
CSS第二章 选择器
前端·css
计算机魔术师39 分钟前
OpenAI内部实习生已顶配3.1倍人力,你的团队还在等人工排期?
前端
雪芽蓝域zzs43 分钟前
第三十一节:角色管理页面 + 权限分配树形弹窗
前端·javascript·vue.js
zz-zjx1 小时前
Python实用转换模板
开发语言·前端·python
Csvn1 小时前
声明文件(.d.ts):让 TypeScript 认识你的 JS 库
前端