react引入postcss-pxtorem,sass和css modules
需求: taro应该暂时不支持styled-components,于是决定在这个预热的项目里面,用sass+css modules,并且因为是移动端,响应式是必须的,这里选择pxtorem。
sass和css modules
介绍:网上太多了,这里就不贴了
配置:其实最新的create-react-app脚手架应该是自带了这两个功能,只不过有一点需要注意,在yarn eject展开webpack的配置后,看到在config/webpack.config.js文件里面,有这样一段:
1 | const cssRegex = /\.css$/; |
应该可以理解为,.module.(css | scss | sass)后缀的,才能启用css modules功能。
使用:
1 | import styles from 'css/PreorderMeasurement.module.scss'; |
自定义class名:
默认的生成class名规则是这样的:
Creates a class name for CSS Modules that uses either the filename or folder name if named
index.module.css.
ForMyFolder/MyComponent.module.cssand classMyClassthe output will beMyComponent.module_MyClass__[hash]. ForMyFolder/index.module.cssand classMyClassthe output will beMyFolder_MyClass__[hash]
编译完以后是这样的:
1 | <div class="PreorderMeasurement_test11__3hBMi"></div> |
修改这里的配置:
1 | { |
再编译以后就变成这样了:
1 | <div class="src-css-__PreorderMeasurement-module__test11___3oqbM"></div> |
postcss-pxtorem
安装配置:
yarn add …
yarn eject 打开webpack的相关配置
在config/webpack.config.js里找到
1 | // Adds PostCSS Normalize as the reset css with default options, |
这一行,在后面加上:
1 | require('postcss-pxtorem')({ |
- index.html里面,head标签里加上:
1 | <script> |
里面的rootValue,100,750等都是可以配置的,具体看设计稿和需求,一般设计稿都是按750出的,然后100的话,方便计算rem,毕竟也可能会遇到要写行内的情况
注:有没有方法让行内写的px也转成rem?