移动端布局方案 postcss-pxtorem-postcss-preset-env

移动端布局方案 postcss-pxtorem-postcss-preset-env

目标

通过postcss-pxtorem来实现自动渲染px至rem的开发与生产工作
而不需要再手动计算

实现方式
  • postcss-pxtorem:将px转换为px
  • amfe-flexible:为html、body添加font-size,窗口调整时候重新设置font-size
安装与使用
  • 安装
npm install amfe-flexible --save
npm install postcss-pxtorem --save-dev

注:如果报错,则需要指定postcss-pxtorem版本,如: npm install postcss-pxtorem@5.1.1 --save-dev

  • 使用
  1. 在main.js入口文件引入
import 'amfe-flexible'
  1. 创建postcss.config.js配置文件
module.exports = {
    plugins: {
        autoprefixer: {},
        // flexible配置
        "postcss-pxtorem": {
            "rootValue": 75, // 设计稿宽度的1/10
            "propList": ["*"] // 需要做转化处理的属性,如`hight`、`width`、`margin`等,`*`表示全部
        }
    }
}
处理报错问题
  • Error: PostCSS plugin postcss-pxtorem requires PostCSS 8.
缺少相应的插件(安装包) postcss 和 postcss-loader,安装这两个插件即可;
  • postcss-loader@5.2.0 requires a peer of webpack@^5.0.0 but none is installed. You must install peer dependencies yourself.
降低 postcss-pxtorem 的版本,删除已有的postcss-pxtorem版本,安装指定版本
npm i postcss-pxtorem@5.1.1 --save-dev
  • 如果需要less-loader,碰到 Syntax Error: TypeError: this.getOptions is not a function
less-loader 、postcss-loader的版本要相互匹配,版本相差不能太大,
建议安装的版本分别为less-loader 7.0.1, postcss-loader 4.0.4 。
可正常运行版本参考

PostCSS

什么是 PostCSS
  • PostCSS是一个通过JavaScript来转换样式的工具
  • 这个工具可以帮助我们进行一些CSS的转换和适配,比如自动添加浏览器前缀、css样式的重置 
命令行使用 postcss
安装: npm install postcss postcss-cli -D
举例一:css前缀
安装autoprefixer: npm install autoprefixer -D
直接使用使用 postcss 工具,并且制定使用 autoprefixer: npx postcss --use autoprefixer -o end.css ./src/css/style.css
转化之后的css样式如下:
postcss-loader
安装: npm install postcss-loader -D
postcss-loader 会去找 postcss
     {
        test: /\.css$/,
        use: [
          "style-loader",
          "css-loader",
          {
            loader: "postcss-loader",
            options: {
              postcssOptions: {
                plugins: [require("autoprefixer")],
              }
            }
          }
        ]
      }

autoprefixer 会添加符合 browserslistrc 规则的浏览器前缀。

单独的postcss配置文件
将 postcss 配置信息放到一个单独的文件中进行管理。
在根目录下创建 postcss.config.js
// webpack.config.js
const path = require('path');
 
module.exports = {
  entry: "./src/main.js",
  output: {
    filename: "bundle.js",
    path: path.resolve(__dirname, "./build")
  },
  module: {
    rules: [
      {
        test: /\.css$/, 
        use: [
          "style-loader", 
          "css-loader",
          "postcss-loader"
        ]
      }
    ]
  }
}
 
// postcss 配置单独写在 postcss.config.js
module.exports = {
  plugins: [
    require("autoprefixer")
  ]
}

postcss-preset-env

        事实上,在配置postcss-loader时,我们配置插件并不需要使用autoprefixer,可以使用另外一个插件:postcss-preset-env。
  • postcss-preset-env也是一个 postcss 的插件
  • 它可以帮助我们将一些现代的 CSS 特性,转成大多数浏览器认识的 CSS,并且会根据目标浏览器或者运行时环境添加所需的 polyfill,已经内置了autoprefixer。
安装: npm install postcss-preset-env -D

举例:

十六进制的颜色时设置了8位,但是某些浏览器可能不认识这种语法,autoprefixer 是不会转换的。
.content {
  color: #12345678;
}

 


作者:squidbrother
链接:https://www.jianshu.com/p/7acdb535fcd5
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

转载于:移动端布局方案 postcss-pxtorem - 简书

5. PostCSS_postcss-preset-env_前端知识的博客-CSDN博客

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在React应用中使用`postcss-pxtorem`是为了将设计稿中的像素值转换为相对单位(如rem),这样可以在不同屏幕尺寸上保持良好的响应式设计。以下是一个简单的示例,展示如何在React项目中设置和使用`postcss-pxtorem`: 首先,你需要安装`postcss`, `postcss-loader`, 和 `postcss-pxtorem` 这些依赖。在你的项目目录下,打开命令行并运行: ```bash npm install --save-dev postcss postcss-loader postcss-pxtorem ``` 然后,在`webpack.config.js`或`.babelrc`文件中配置PostCSS和`postcss-pxtorem`: **webpack.config.js** ```javascript module.exports = { module: { rules: [ { test: /\.css$/, use: [ 'style-loader', 'css-loader', { loader: 'postcss-pxtorem plugins: () => [require('postcss-pxtorem')({ rootValue: 100, // 根元素的font-size,默认100px propList: ['*'], // 应用转换的CSS属性,默认除了user-select等 unitPrecision: 5, // 小数位数,默认5 minPixelValue: 1, // 像素值的最小值,默认1 })] } } ] } ] } }; ``` **.babelrc** (如果使用Babel) ```json { "plugins": ["postcss"], "presets": ["@babel/preset-env"] } ``` 以上配置会在处理`.css`文件时自动应用`postcss-pxtorem`插件。 接下来,你可以创建一个`.scss` 或 `.css` 文件,并使用像素单位(如`px`)编写样式: ```scss body { font-size: 16px; /* 这会被转换为 rem 格式 */ padding: 20px; } ``` 现在,当浏览器加载时,这些像素值会被转换成相对于根元素字体大小(通常设置为100px)的rem值。如果你有任何CSS文件中使用了px,它们也会被相应地转换。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值