时间:2021-05-25
前言
本文的目标是通过下文介绍的适配方案,使用vue或react开发移动端及H5的时候,不需要再关心移动设备的大小,只需要按照固定设计稿的px值布局,提升开发效率。
下文给出了本人分别使用create-react-app搭建的react(create-react-app)项目和使用vue-cli 2.x 搭建的vue项目中的 亲测可用 配置方案。
px2rem或postcss-px2rem
项目中的使用
recat项目配置postcss-px2rem
首先,我们使用 react 的脚手架 create-react-app 初始化一个 webpack 项目(前提是已经安装过create-react-app,具体不再阐述)。
create-react-app my-app暴露webpack配置,即 react-scripts 包:
yarn eject使用yarn 安装项目所需依赖后,安装 lib-flexible 、 postcss-px2rem 和 postcss-loader:
yarn add postcss-px2rem lib-flexible yarn add postcss-loader --dev在入口页面 index.html 中设置<meta>标签:
<meta name="viewport" content="width=device-width,inital-scale=1.0, maximum-scale=1.0,minimum-scale=1.0,user-scalable=no">然后在项目入口文件 index.js 中引入 lib-flexible:
import 'lib-flexible';接着,在项目config目录下的 webpack.config.js 中引入 postcss-px2rem :
const px2rem = require('postcss-px2rem')同时,在 webpack.config.js 的 postcss-loader loader里面添加 :
{ loader: require.resolve('postcss-loader'), options: { plugins: () => [ require('postcss-flexbugs-fixes'), require('postcss-preset-env')({ autoprefixer: { flexbox: 'no-2009', }, stage: 3, }), px2rem({remUnit: 37.5}), // 添加的内容 ], sourceMap: isEnvProduction && shouldUseSourceMap, }, },最后,使用 yarn start 重启项目,则会发现项目中的postcss-px2rem配置完成。
vue项目配置px2rem
首先,我们使用 vue 的脚手架 vue-cli 初始化一个 webpack 项目(前提是已经安装过vue-cli,具体不再阐述),一些选项根据自己项目需要选择。
vue init webpack my-app命令执行之后,会在当前目录生成一个以“my-app”命名的项目文件夹。进入项目目录:
cd my-app使用yarn 安装项目所需依赖后,安装 lib-flexible 和 px2rem-loader:
yarn add lib-flexibleyarn add px2rem-loader --dev在入口页面 index.html 中设置<meta>标签:
<meta name="viewport" content="width=device-width,inital-scale=1.0, maximum-scale=1.0,minimum-scale=1.0,user-scalable=no">然后在项目入口文件 main.js 中引入 lib-flexible:
import 'lib-flexible/flexible.js';同时,在项目build目录下的 utils.js 中,将px2rem-loader 添加到cssLoaders中。通过搜索找到 generateLoaders 方法,在这里添加:
exports.cssLoaders = function (options) { const cssLoader = { } const px2remLoader = { loader: 'px2rem-loader', options: { remUnit: 37.5 // 基准大小 baseSize,设计稿宽度/10 } } // generate loader string to be used with extract text plugin function generateLoaders (loader, loaderOptions) { const loaders = [cssLoader, px2remLoader] // 添加px2remLoader if (loader) { } }最后,使用 yarn dev 重启项目,会发现自己设置的px被转为rem 了。
适用情况 & 不适用情况
以上实现转换适用于:
(1)vue 组件中编写的<style></style>下的css。
(2)从 react 项目的 index.js 或者 vue 项目的 main.js 中通过import ‘../../static/css/reset.css'引入css。
(3)在 vue 组件的<script type=”text/ecmascript-6″>import ‘../../static/css/reset.css'</script>中引入css。
另外的情况不适用:
(1)在 vue 组件的<style></style>中通过@import “../../static/css/reset.css (可考虑上面(2)、(3)的形式引入)。
(2)外部样式:<link rel=”stylesheet” href=”static/css/reset.css”>。
(3)元素内部样式:style="height: 417px; width: 550px;"。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
vue微信网页授权,基于vue-cli3.0+webpack4+vantui+sass+rem适配方案+axios,开发的微信授权方案。项目地址:vue-wec
之前写过一篇关于移动端屏幕适配:移动端屏幕适配的解决,今天来聊一聊基于vue-cli配置的移动端屏幕适配问题。配方还是一样:手淘的lib-flexible+re
前言最近在用vue做移动端项目,网上找了一些移动端适配的方案,个人觉得手淘团队flexible.js还是比较容易上手,在这里做下总结。主体flexible.js
问题背景:网站需要在移动端完成适配,针对移动端H5以及web端采用的都是bluma这种flex布局解决方案在H5中使用的列表采用的是react-virtuali
在用vue或react等工具搭建一个移动端项目时,怎样做到自适应呢?当然选择rem布局比较方便快捷.开发移动端,我们常常要用到rem+flex,那么vu