2018移动端页面适配-自适应最新方案直接写px--------通过gulp工作流搭建一体化的移动端开发环境

1.开始

在flexible的GitHub上面写着

由于

viewport
单位得到众多浏览器的兼容,
lib-flexible
这个过渡方案已经可以放弃使用,不管是现在的版本还是以前的版本,都存有一定的问题。建议大家开始使用
viewport
来替代此方案。
vw
的兼容方案可以参阅《如何在Vue项目中使用vw实现移动端适配》一文。

  1. vm是什么? ---

vw:是Viewport's width的简写,1vw等于window.innerWidth的1%

  1. UI给的设计稿,一般都是宽为750px的,那么就是

100vw = 750px | 即1vw = 7.5px

这里写图片描述

2.代码

var gulp = require('gulp');
var jshint = require('gulp-jshint'); // 引入检测js文件模块
var uglify = require('gulp-uglify'); // 引入js压缩模块
var concat = require('gulp-concat'); // 引入合并文件模块
var minhtml = require('gulp-minify-html'); // 引入html压缩模块
var minify = require('gulp-minify-css'); // 引入压缩css的模块
var imagemin = require('gulp-imagemin'); // 引入压缩图片插件
var postcss = require('gulp-postcss'); //JavaScript 代码来转换CSS 中的样式
var autoprefixer = require('autoprefixer'); //自动加上浏览器前缀
var postcsswritesvg = require('postcss-write-svg') // 解决1px方案// UI设计稿750px宽,那么100vw = 750px,即1vw = 7.5px
var pxtoviewport = require('postcss-px-to-viewport'); // 代码中写px编译后转化成vmvar browserSync = require('browser-sync')
var opn = require('opn')
//静态服务器// 1.处理js文件
gulp.task('js', function () {return gulp.src('js/*.js').pipe(jshint()) //检测js.pipe(uglify()) //压缩js.pipe(concat('index.js')) //合并js文件并命名为'index.js'.pipe(gulp.dest('build/js')); //将合并后的js文件输出到build文件夹下      
});// 2.处理css
gulp.task('css', function () {var processors = [pxtoviewport({viewportWidth: 750,viewportHeight: 1334,unitPrecision: 5,viewportUnit: 'vw',selectorBlackList: [],minPixelValue: 1,mediaQuery: false})];return gulp.src('css/*.css') // 指定css文件夹下的所有后缀为.css的文件.pipe(postcss([ autoprefixer() ]))  //自动加上浏览器前缀.pipe(postcss(processors))//.pipe(minify()) //使用minify模块进行css 压缩.pipe(gulp.dest('build/css')) // 最终将压缩的文件输出到minicss文件下            
})// 3.压缩img
gulp.task('img', function () {gulp.src('images/*.{png,jpg,gif,ico}').pipe(imagemin({progressive: true, //Boolean类型 默认:false 无损压缩图片optimizationLevel: 5, //number类型 默认:3 取值范围:0-7(优化等级)interlced: true, //Boolean类型 默认false 隔行扫描gif进行渲染multipass: true //Boolean类型 默认false 多次优化svg直到完全优化})).pipe(gulp.dest('build/images')) //输入到build文件夹下的images文件夹下 
})// 4.压缩html
gulp.task('html', function () {gulp.src('*.html') //指定当前文件夹下的所有html文件.pipe(minhtml()) //进行压缩.pipe(gulp.dest('build')) //将压缩后的文件输出到build文件夹下.pipe(browserSync.stream()); //自动打开浏览器})// 定义path
var path = {css: './css/*.css',js: './js/*.js',html: './*.html',src: './build'    
};// 命令行输入gulp或者 gulp default的时候就会执行
gulp.task('default', function(){//把任务串联起来gulp.start('js', 'css', 'img', 'html');//打开静态服务器browserSync.init({server:{baseDir: path.src},port:3000,open:false}, function(){var homepage = 'http://localhost:3000/';opn(homepage);});//监听文件的变化实时编译 然后刷新gulp.watch([path.html, path.js, path.css]).on("change", function() {gulp.start('js', 'css', 'img', 'html');        browserSync.reload();});
});

3.效果

这里写图片描述
这里写图片描述

4.github项目源代码

https://github.com/zhalice2011/gulp-postcss

附:vm布局及使用的图片参考自大漠老师的博文: 《再聊移动端页面的适配》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/366809.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

jclouds的命令行界面

序幕 我使用和为jclouds贡献了一年多的时间。 到目前为止,我已经在很多领域广泛使用了它,尤其是在Fuse生态系统中 。 它的强大之处在于它缺少一件事,该工具可用于管理jclouds也提供访问权限的任何云提供商。 类似于EC2命令之类的工具&#xf…

中兴linux下载软件,国产操作系统中兴新支点使用WPS For Linux办公软件的体验报告...

以下将给你带来在国产操作系统中兴新支点操作系统下使用WPS For Linux办公软件的体验报告,WPS For Linux提供Deb、Rpm、Tar.xz、Snap软件包,你可以选择Tar.xz源码包编译安装,或在系统自带的软件中心下安装,也可以参考采用snap方式…

Java 教程(开发环境配置+基础语法)

Java 开发环境配置 在本章节中我们将为大家介绍如何搭建Java开发环境。 window系统安装java 下载JDK 首先我们需要下载java开发工具包JDK,下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html,点击如下下载按钮&am…

数据采集工具Telegraf:简介及安装

接着上一篇博客:InfluxDB简介及安装,这篇博客介绍下Linux环境下Telegraf安装以及其功能特点。。。 官网地址:influxdata 官方文档:telegraf文档 环境:CentOS7.4 64位 Telegraf版本:0.11.1-1 一、Telegraf介…

初探小程序插件

插播公司招聘信息: https://cnodejs.org/topic/5a915706653c43b914684f90 小程序插件可以干嘛? 周二晚上(3.13)的一个小程序新功能发布了-【小程序插件】,一开始以为是小程序发布了类似npm的组件管理工具,…

从mysql向HBase+Phoenix迁移数据的心得总结

* 转载请注明出处 - yosql473 - 格物致知,经世致用 mysql -> HBase Phoenix 1.总体方案有哪些? 1)通过Sqoop直接从服务器(JDBC方式)抽取数据到HBase中 因为数据量非常大,因此优先考虑用Sqoop和MR抽取。 使用Sqoop抽取数据有一…

玩转异步 JS :async/await 简明教程(附视频下载)

课程介绍 在软件开发领域,简洁的代码 > 容易阅读的代码 > 容易维护的代码,而 ES2017 中的 async/await 特性能让我们编写出相比回调地狱和 Promise 链式调用更直观、更容易理解的代码,await 关键字接收一个 Promise,等待代码…

分享轮子-flutter下拉刷新上拉加载

flutter下拉上拉组件轮子 什么是flutter? 首先说下flutter,估计这个应该挺多人没听过flutter这个框架,它是一个google推出的跨平台的移动应用UI框架,和React Native是同样的目的,支持三大平台:Android,Ios,还有一个是google新出的系统,忘了叫什么...本人React Native也是用过…

(8)Python判断结构

转载于:https://www.cnblogs.com/hankleo/p/9170325.html

History of program(1950-2020)

1957年 约翰巴科斯(John Backus)创建了是全世界第一套高阶语言:FORTRAN。 John Backus1959年 葛丽丝霍普(Grace Hopper)创造了现代第一个编译器A-0 系统,以及商用电脑编程语言“COBOL”,被誉为C…

关于 Nuxt 集成ueditor的一些坑(包括图片上传)前端部分

最近公司接了一个项目,里面用到富文本编辑器,刚开始用的是vue-quill-editor,这个编辑器轻量、好用。最重要的是它有专门正对nuxt的版本,很容易配置,可以放心使用,不用担心bug之类的,遇到问题&am…

*Codeforces989D. A Shade of Moonlight

数轴上$n \leq 100000$个不重叠的云,给坐标,长度都是$l$,有些云速度1,有些云速度-1,风速记为$w$,问在风速不大于$w_{max}$时,有几对云可能在0相遇。每一对云单独考虑。 多动一不动--相对运动。假…

undefined reference 问题各种情况分析

扒自网友文章 关于undefined reference这样的问题,大家其实经常会遇到,在此,我以详细地示例给出常见错误的各种原因以及解决方法,希望对初学者有所帮助。 1. 链接时缺失了相关目标文件(.o) 测试代码如下&a…

2018-2019-1 20165203 《信息安全系统设计基础》第六周学习总结

2018-2019-1 20165203 《信息安全系统设计基础》第六周学习总结 教材学习内容总结 重要知识点 I/O:在主存和外部设备(例如磁盘存储器、终端和网络)之间复制数据的过程。输入操作:从I/O设备复制数据到主存。输出操作:从…

linux 使用VI命令怎么删除输入内容,linux系统vi编辑器常用命令及使用方法。

在linux系统中编辑文档我们常用到vi编辑器。vi编辑器,通常称之为vi,是一种广泛存在于各种UNIX和Linux系统中的文本编辑程序。它的功能十分强大,但是命令繁多,不容易掌握,它可以执行输出、删除、查找、替换、块操作等众多文本操作&…

在react中使用svg的各种骚姿势

开头先抛个可供参考的项目ts-react-webpack4, 或脚手架steamer-react-ts 优势 SVG可被非常多的工具读取和修改(比如vscode)不失真, 放大缩小图像都很清晰SVG文件是纯粹的XML, 也是一种DOM结构使用方便, 设计软件可以直接导出 兼容性 上一张兼容性图表, 或到caniuse.com查看 …

3.2自定义方法

方法是类的一种行为,方会使我们的代码容易修改,方便阅读,实现封装和重用。比如前面使用的很多.net定义好的类的方法,当然我们也可以自定义方法。 3.2.1定义方法 语法: 访问修饰符 返回类型 方法名(参数列表) &#xff…

[Electron]仿写一个课堂随机点名小项目

自从前几个月下了抖音,无聊闲暇时就打会打开抖音,因为打开它有种莫名其妙打开了全世界的感觉... 无意中看到这个小视频:随机点名 于是仿写了一个课堂点名小项目,算是对Electron的一个简单的认识,有时间再深入。 项目…

linux redis安装使用,linux安装redis

Linux(CentOS)中Redis介绍、安装、使用【一篇就够】2018-05-13 13:36:16 sjmz30071360 阅读数 1590更多分类专栏: redis版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。一、介绍Redis is…

用three.js写一个简单的3D射门游戏

这个小游戏很简单,一共由3个部分构成。1个平面(球场),1个球体(足球)还有一个立方体(球门)。 上个图给你们感受一下简陋的画风(掘金最高上传5M图片,原来图片都…