步入React前厅 - Css In React

目录

扩展学习资料

行内样式

引入样式表

[CSS Module](#CSS Module)

@/src/components/common.module.css

@/src/components/listitem.module.css

css管理进阶

Css管理工具

练习


扩展学习资料

|------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------|
| 资料名称 | 链接 |
| css module | CSS Modules 用法教程 - 阮一峰的网络日志 |
| 在React中使用css预编译 | https://juejin.im/post/5c3d67066fb9a049f06a8323 |
| styled component | styled-components |

行内样式

html 复制代码
<div style={{fontSize: 18, color: red}}>Content Here</div>

引入样式表

html 复制代码
import './listitem.css'; // .title { font-size: 22px } // 全局样式,其他组件也可以使用
<span className='title'>{props.data.name}</span>

CSS Module

html 复制代码
// 基于前端工程化开发的一套解决方案
import style from './listitem.module.css'; // .title { font-size: 22px } 
<span className={style.title}>{props.data.name}</span>

解决了CSS的一些问题: 全局污染 命名混乱 没有依赖管理 可以不使用sass、less等第三方库

  • 不使用选择器,使用class名定义样式
  • 不层叠class,使用一个class定义样式
  • 用compose来组合

@/src/components/common.module.css

css 复制代码
.common {
  font-size: 16px;
  background-color: aqua;
  text-decoration: underline;
}

@/src/components/listitem.module.css

css 复制代码
.common {
  text-decoration: underline;
  text-indent: 2em;
  display: block;
}
.title {
  /* composes: common; */
  composes: common from 'common.module.css';
  font-size: 20px;
  font-weight: bold;
  color: #710000;
}

css管理进阶

Css管理工具

  • Styled-component【js赋能,解决css不具备的一些能力,如:变量循环,函数】
  • Classnames【更方便的使用cssModule】
javascript 复制代码
// npm install classnames --save
import classnames from 'classnames/bind';
const cls = classnames.bind(style);
<span className={style.title}>{props.data.name}</span>
// =>
<span className={cls('title', 'price-tag2')}>¥{props.data.price}</span>

import cn from 'classnames';
const count = 0;
const _cn = cn({
    'themed-grid-col-s': !count,
});
<div className={`col-2 themed-grid-col ` + _cn}>
   {`${count ? count + '个' : count}`}
</div>

练习

1.将案例的购物车列表改为单双行不同的样式(例如双数行底色为: #ddd)

css 复制代码
{index%2 > 'background: #ddd'}
相关推荐
烬羽4 小时前
后端返回的 JSON 字符串,浏览器怎么"看懂"的?——Ajax 全链路拆解
javascript
半个落月5 小时前
一个新手用 Bun + Axios 调通 DeepSeek API 的实践记录
javascript
不好听6135 小时前
深入理解链表:线性数据结构的另一面
javascript·数据结构
林希_Rachel_傻希希5 小时前
学React治好了我的焦虑症,1小时速通React 前20分钟。
前端·javascript·面试
小林ixn5 小时前
从 Ajax 到异步编程:JSON 序列化、Event Loop 与 XHR 请求完全解析
javascript
丷丩6 小时前
MapLibre GL JS第47课:添加动画图标
javascript·gis·动画·mapbox·maplibre
小小19926 小时前
idea 配置less转化为css
前端·css·less
hhb_6186 小时前
Less嵌套避坑:优先级冲突实战解析
前端·css·less
快乐的哈士奇6 小时前
【Next.js实战①】Gmail API 按柜号检索邮件:OAuth 双 Cookie 与搜索 Fallback
开发语言·javascript·ecmascript
云水一下6 小时前
Vue.js从零到精通系列(五):全局状态管理——Pinia 核心与实践
前端·javascript·vue.js