特别声明:如果您喜欢小站的内容,可以点击申请会员进行全站阅读。如果您对付费阅读有任何建议或想法,欢迎发送邮件至: airenliao@gmail.com!或添加QQ:874472854(^_^)
有关于移动端的适配布局一直以来都是众说纷纭,对应的解决方案也是有很多种。在《使用Flexible实现手淘H5页面的终端适配》提出了Flexible的布局方案,随着viewport
单位越来越受到众多浏览器的支持,因此在《再聊移动端页面的适配》一文中提出了vw
来做移动端的适配问题。到目前为止不管是哪一种方案,都还存在一定的缺陷。言外之意,还没有哪一个方案是完美的。
事实上真的不完美?其实不然。最近为了新项目中能更完美的使用vw
来做移动端的适配。探讨出一种能解决不兼容viewport
单位的方案。今天整理一下,与大家一起分享。如果方案中存在一定的缺陷,欢迎大家一起拍正。
准备工作
对于Flexible或者说vw
的布局,其原理不在这篇文章进行阐述。如果你想追踪其中的原委,强烈建议你阅读早前整理的文章《使用Flexible实现手淘H5页面的终端适配》和《再聊移动端页面的适配》。
说句题外话,由于Flexible的出现,也造成很多同学对
rem
的误解。正如当年大家对div
的误解一样。也因此,大家都觉得rem
是万能的,他能直接解决移动端的适配问题。事实并不是如此,至于为什么,我想大家应该去阅读flexible.js
源码,我相信你会明白其中的原委。
回到我们今天要聊的主题,怎么实现vw
的兼容问题。为了解决这个兼容问题,我将借助Vue官网提供的构建工程以及一些PostCSS插件来完成。在继续后面的内容之前,需要准备一些东西:
- NodeJs
- NPM
- Webpack
- Vue-cli
- postcss-import
- postcss-url
- postcss-aspect-ratio-mini
- postcss-cssnext
- autoprefixer
- postcss-px-to-viewport
- postcss-write-svg
- cssnano
postcss-viewport-unitsViewport Units Buggyfill
对于这些起什么作用,先不阐述,后续我们会聊到上述的一些东西。
使用Vue-cli来构建项目
对于NodeJs、NPM和Webpack相关介绍,大家可以查阅其对应的官网。这里默认你的系统环境已经安装好Nodejs、NPM和Webpack。我的系统目前使用的Node版本是v9.4.0
;NPM的版本是v5.6.0
。事实上,这些都并不重要。
使用Vue-cli构建项目
为了不花太多的时间去深入的了解Webpack(Webpack对我而言,太蛋疼了),所以我直接使用Vue-cli来构建自己的项目,因为我一般使用Vue来做项目。如果你想深入的了解Webpack,建议你阅读下面的文章:
接下来的内容,直接使用Vue官方提供的Vue-cli的构建工具来构建Vue项目。首先需要安装Vue-cli:
$ npm install -g vue-cli
全局先安装Vue-cli,假设你安装好了Vue-cli。这样就可以使用它来构建项目:
vue init webpack vw-layout
根据命令提示做相应的操作:
进入到刚创建的vw-layout
:
cd vw-layout
然后执行:
npm run dev
在浏览器执行http://localhost:8080
,就可以看以默认的页面效果:
以前的版本需要先执行
npm i
安装项目需要的依赖关系。现在新版本的可以免了。
这时,可以看到的项目结构如下:
安装PostCSS插件
通过Vue-cli构建的项目,在项目的根目录下有一个.postcssrc.js
,默认情况下已经有了:
module.exports = {
"plugins": {
"postcss-import": {},
"postcss-url": {},
"autoprefixer": {}
}
}
对应我们开头列的的PostCSS插件清单,现在已经具备了:
简单的说一下这几个插件。
postcss-import
postcss-import
相关配置可以点击这里。目前使用的是默认配置。只在.postcssrc.js
文件中引入了该插件。
postcss-import
主要功有是解决@import
引入路径问题。使用这个插件,可以让你很轻易的使用本地文件、node_modules
或者web_modules
的文件。这个插件配合postcss-url
让你引入文件变得更轻松。
postcss-url
postcss-url
相关配置可以点击这里。该插件主要用来处理文件,比如图片文件、字体文件等引用路径的处理。
在Vue项目中,vue-loader
已具有类似的功能,只需要配置中将vue-loader
配置进去。
autoprefixer
如需转载,烦请注明出处:https://www.w3cplus.com/mobile/vw-layout-in-vue.html
如果文章中有不对之处,烦请各位大神拍正。如果你觉得这篇文章对你有所帮助,打个赏,让我有更大的动力去创作。(^_^)。看完了?还不过瘾?点击向作者提问!