博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
如何在create-react-app项目中使用vw实现手淘vw移动端适配布局
阅读量:6962 次
发布时间:2019-06-27

本文共 3500 字,大约阅读时间需要 11 分钟。

2018年是我感觉是前端的插件年,在css方面,postcss的插件也是刚刚的,无论是autoprefixer,还是postcss-cssnext等一系列方面,今天刚好做一个移动端新项目,特意请教了手淘团队,出了一个新方案,开始抛弃使用Flexible实现手淘H5页面的终端适配,使用vw布局方案,关于vue-cli使用的配置已经有讲解,我就讲讲create-react-app的配置

具体的内容原因请下以面链接

配置方面就不用说了,如何用creat-react-app生成一个项目,运行起来,请看以下链接

https://reactjs.org/docs/forms.html

直接进入如何配置

生成项目后,直接进行 webpack.config.dev.js,配置开发环境配置找到这段代码

{                loader: require.resolve('postcss-loader'),                options: {                  config: {                    path: 'postcss.config.js'  // 这个得在项目根目录创建此文件                  },                  // Necessary for external CSS imports to work                  // https://github.com/facebookincubator/create-react-app/issues/2677                  ident: 'postcss'                  // plugins: () => [                  //   require('postcss-flexbugs-fixes'),                  //   autoprefixer({                  //     browsers: [                  //       '>1%',                  //       'last 4 versions',                  //       'Firefox ESR',                  //       'not ie < 9', // React doesn't support IE8 anyway                  //     ],                  //     flexbox: 'no-2009',                  //   }),                  // ],                },              },复制代码

create-react-app 自己配置了,内联的autoprefixer,把它注示掉,然后在options里加指向的配置地址,把所有的plugins插件配置全放入一个在项目根目标的postcss.config.js,通过postcss解析的时候自然会运行这些差件,因为运用大量的配置,在生产环境同样要同到,进行一个共同配置。

在配置之前先下一些包

npm i postcss-aspect-ratio-mini postcss-px-to-viewport postcss-write-svg postcss-cssnext postcss-viewport-units cssnano cssnano-preset-advanced --D复制代码

postcss.config.js配置

module.exports = {    "plugins": [        require('postcss-flexbugs-fixes'),        require("autoprefixer")({            browsers: [                '>1%',                'last 4 versions',                'Firefox ESR',                'not ie < 9', // React doesn't support IE8 anyway            ],            flexbox: 'no-2009',        }),        require("postcss-aspect-ratio-mini"),        require("postcss-write-svg")({ utf8: false }),        require("postcss-cssnext"),        require("postcss-px-to-viewport")({            viewportWidth: 750,            viewportHeight: 1334,            unitPrecision: 3,            viewportUnit: 'vw',            selectorBlackList: ['.ignore', '.hairlines'],            minPixelValue: 1,            mediaQuery: false        }),        require("postcss-viewport-units"),        require("cssnano")({            preset: "advanced",            autoprefixer: false,            "postcss-zindex": false        })    ]}复制代码

以上的配置原理还是请到

require('postcss-flexbugs-fixes'),        require("autoprefixer")({            browsers: [                '>1%',                'last 4 versions',                'Firefox ESR',                'not ie < 9', // React doesn't support IE8 anyway            ],            flexbox: 'no-2009',        }),复制代码

为了不破坏整体性还是把create-react-app原本的差件搬过来。关于postcss的配置就结束了

改一下public/index.html

      
React App
复制代码

引入 viewport-units-buggyfill.hacks的ali cdn 再初始化执行init方法

ok此时配置完成,运行 npm start

注意几点: viewportWidth: 750 可以当作是iphone6的视口度,你的设计图也要是750的比例,也是移动端的标准设计比。正常的用px,最后会/2进行一个比例换算。

解决安桌机0.5px线的问题,需要通过postcss-write-svg,对于我这种不懂svg的,是一个很奇秒的设计, 示例请看原作者。

当你写好之后,发现chrome 控制台是换成了vw,就是成功了,如果设置了最小转化值minPixelValue: 1,说明小于等于1px的不进行vw的转换。

在生产环境webpack.production.config.js中,与dev也是同样的配置。

感谢手淘团队,感w3cPlus 大漠

转载地址:http://ivwsl.baihongyu.com/

你可能感兴趣的文章
从一个多层嵌套循环中直接跳出(先想想自己代码设计的是否合理)
查看>>
linux升级内核
查看>>
安卓仿微信右上角弹出菜单窗口
查看>>
PVS让存储颤抖,系列博文之三:PVS的写缓存新技术之Win7桌面实测篇
查看>>
Java控制车速
查看>>
传入含中文的字符串 返回中文首字母
查看>>
thinkphp5 下 Linux 定时任务
查看>>
IOS 动画组
查看>>
数据库模型设计——关系的实现,主键的设计
查看>>
webistrano的安装方法和一些用法
查看>>
Memcache集群高可用方案
查看>>
mysql数据据存储引擎InnoDB和MyISAM的优势及区别
查看>>
PowerShell中iso8601格式日期和DateTime对象互转实例
查看>>
MySQL Cluster, Fabric, Cobar 三大集群特性对比
查看>>
SpringBoot(八):测试组件-junit
查看>>
Mysql命令
查看>>
使用chmod命令改变权限
查看>>
java程序使用cmd备份和恢复数据库
查看>>
item点击变色
查看>>
tomcat的配置及负载均衡
查看>>