lib-flexible与viewport--关于移动端适配方案的替换

Vue CLI项目结构解析与工程化实践 Vue CLI作为现代前端工程化的核心工具,通过标准化的项目脚手架简化了开发流程。其基于webpack的构建系统支持模块化开发、热更新和代码分割等特性,显著提升了开发效率。项目结构中的package.json管理着依赖和脚本,而babel.config.js则负责ES6+语法转换和polyfill注入。在工程实践层面,vue.config.js提供了灵活的webpack配置覆盖能力,支持代理设置、环境变量区分等常见需求。对于Vue技术栈开发者而言,理解这些配置文件的作用机制,能够更好地进行性能优化和问题排查 阅读详情

做移动端开发经常会用到 lib-flexible + postcss-pxtorem 这两个插件,对于他的使用我们都已经比较熟悉了,这里就不在介绍使用方法了。本文内容主要是介绍 lib-flexible 的源码内容,以及他的替代方法viewport 的使用。
由于 viewport 单位得到众多浏览器的兼容,lib-flexible这个过渡方案已经可以放弃使用,官方已经不再维护了,不管是现在的版本还是以前的版本,都存有一定的问题。建议大家开始使用vw的兼容方案来替代此方案。

viewport

这里我介绍一下viewport的使用方法,viewport配置起来很容易,只需要新增一个postcss.config.js文件,然后下载yarn add -D postcss-px-to-viewport,这样在代码中写入的px会自动转换成vw单位,同样可以达到移动端适配的效果。

安装postcss-px-to-viewport插件

npm install postcss-px-to-viewport -save-dev

meta的配置

    <meta
      name="viewport"
      content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no"
    />

postcss.config.js文件内容

// postcss.config.js文件内容
module.exports = {
  // 以iPhone6、7、8为基础
  plugins: {
    'postcss-px-to-viewport': {
      unitToConvert: 'px', //需要转换的单位,默认为"px"
      viewportWidth: 750, // 视窗的宽度,对应的是我们设计稿的宽度
      viewportHeight: 1334, //视窗的高度,根据375设备的宽度来指定,一般指定667,也可以不配置
      unitPrecision: 13, // 指定`px`转换为视窗单位值的小数位数(很多时候无法整除)
      propList: ['*'], // 能转化为vw的属性列表
      viewportUnit: 'vw', // 指定需要转换成的视窗单位,建议使用vw
      fontViewportUnit: 'vw', //字体使用的视口单位
      selectorBlackList: ['.ignore-', '.hairlines', 'wrap'], //指定不转换为视窗单位的类,可以自定义,可以无限添加,建议定义一至两个通用的类名
      minPixelValue: 1, // 小于或等于`1px`不转换为视窗单位,你也可以设置为你想要的值
      mediaQuery: false, // 允许在媒体查询中转换`px`
      replace: true, //是否直接更换属性值,而不添加备用属性
      exclude: [/RightBar/, /gotop.vue/, /node_modules/], //忽略某些文件夹下的文件或特定文件,例如 'node_modules' 下的文件
      landscape: false, //是否添加根据 landscapeWidth 生成的媒体查询条件 @media (orientation: landscape)
      landscapeUnit: 'vw', //横屏时使用的单位
      landscapeWidth: 1334 //横屏时使用的视口宽度
    }
  }
};


px会自动转换成vw的效果:

<template>
  <div class="about">
    <h1>This is an about page</h1>
    <div class="box">这是一个box</div>
  </div>
</template>
<style scoped>
.box {
  width: 200px;
  height: 100px;
  border: 1px solid black;
  font-size: 16px;
}
</style>

在这里插入图片描述

总结

之前的项目我基本都是使用lib-flexible开发,但是阅读其源码的时候看到作者的说明,所以我就去了解了viewport适配方案,目前viewport的浏览器兼容度已经达到92%以上,所以在日常开发使用基本已经没有什么问题,所以我后续的项目
应该都会使用viewport适配方案来开发。

在这里插入图片描述
但是viewport也有不足之处,vw与vh会在 pc 与移动端均产生效果,而不像flexible只会转换一定宽度(dpr=1就是540px)以下设备的px为rem,因此若设计稿为移动端而生,全权使用vw单位会使得页面在 pc 端出现字体过大等现象,需酌情处理,根据应用场景自行选择。

lib-flexible:可伸缩布局方案 灵活 由于viewport单位得到众多浏览器的兼容, lib-flexible这个过渡方案已经可以放弃使用,不管是现在的版本还是以前的版本,都存有一定的问题。建议大家开始使用viewport来替代此方。 用法 安装 npm i -S amfe-flexible 进口 < meta name =" viewport " content =" width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no " > < script src =" ./node_modules/amfe-flexible/index.js " > </ script > 您可以使用内联此文件。 开发 使用支持。 执照 (MIT许可证) 版权所有(c)2016阿里巴巴MFE 特此免费授予获得此软件 立即下载

相关推荐

基于STM32F407的定时器以及定时器中断的实现

基于STM32F407的定时器以及定时器中断的实现

weixin_57941207的博客 5228

使用Flexible实现手淘H5页面的终端适配

使用Flexible实现手淘H5页面的终端适配 曾几何时为了兼容IE低版本浏览器而头痛,以为到Mobile时代可以跟这些麻烦说拜拜。可没想到到了移动时代,为了处理各终端的适配而乱了手脚。对于混迹各社区的偶,时常发现大家拿手机淘宝的H5页面做讨论——手淘的H5页面是如何实现多终端的适配? 那么趁此Amfe阿里无线前端团队双11技术连载之际,用一个实战案例来告诉大家...

weixin_30337157的博客 1351

【一看就会】Autoware.universe的“规划”部分源码梳理【0】——Planning综述(持续更新中)

单独开一篇planning综述,作为整个规划系列的开篇。本篇综述会持续更新,希望能帮助大家更好的整体理解规划部分。这个部分会持续更新。

weixin_48386130的博客 1963

使用Flexible实现手淘H5页面的终端适配二

之前,已经对此作了介绍,现优化整理出一个实用版本的flexible.js文件,可直接拷贝使用,代码如下: ;(function(win, lib) { var doc = win.document; var docEl = doc.documentElement; var metaEl = doc.querySelector('meta[name="viewport"]'

小记心得 2158

YOLO11改进|注意力机制篇|引入ELA注意力机制

YOLO11添加ELA注意力机制

A1983Z的博客 3647

在hyper-v管理器中修改WSL虚拟交换机后,打开wsl闪退

此次是因为修改了WSL虚拟交换机造成的wsl打不开或闪退,还有一种可能是关闭了hyper-v造成了wsl。

DN金猿的博客 1170

移动端适配方案

舍弃flexible.js,使用vw+rem进行适配 由于viewport单位得到众多浏览器的兼容,lib-flexible这个过渡方案已经可以放弃使用,不管是现在的版本还是以前的版本,都存有一定的问题。建议大家开始使用viewport来替代此方案。(来自lib-flexible团队) vw+rem适配 要点:移动端使用rem布局需要通过JS设置不同屏幕宽高比的font-size,结合vw单位和calc()可脱离JS的控制 场景:rem页面布局(不兼容低版本移动端系统) 兼容:vw、calc() /*

qq_16570607的博客 344

第069篇:浸入边界法进阶

浸入边界法(Immersed Boundary Method, IBM)是处理流固耦合问题的强大数值方法。本文深入介绍直接力法、反馈力法、Ghost Cell方法和多域IBM等高级技术。通过Python实现完整的IBM求解器,展示处理移动边界、弹性边界和多体相互作用的方法。浸入边界法,直接力法,反馈力法,Ghost Cell,流固耦合,移动边界,弹性边界Navier-Stokes方程添加体积力项:∂u∂t+(u⋅∇)u=−1ρ∇p+ν∇2u+f\frac{\partial \mathbf{u}}{\part

2401_87715305的博客 412

更新!移动端最佳适配解决方案出炉

移动设备上的viewport就是设备的屏幕上能用来显示我们的网页的那一块区域,viewport不局限于浏览器可视区域的大小,它可能比浏览器的可视区域要大,也可能比浏览器的可视区域要小。

疯狂的代码 885

手把手教你学Simulink——基于传统电网建模与稳定性分析的场景实例:基于同步发电机的单机无穷大系统建模与稳定性分析

本文详细介绍了使用MATLAB/Simulink进行单机无穷大系统(SMIB)建模与稳定性分析的方法。教程从系统结构设计入手,包含同步发电机、输电线路、无穷大母线等核心模块的建模步骤和参数配置示例。重点讲解了七个关键步骤:项目创建、模块配置、控制系统集成、负载添加(可选)以及仿真运行与结果分析,并提供了具体的MATLAB代码示例。最后通过性能评估指标(功角差、电压跌落、频率偏差)分析系统稳定性,为电力系统动态特性研究提供了实用指导,强调准确参数设置对仿真结果的重要性。

MHD0815的博客 298

11、Windows Autopilot 部署与设备注册全攻略

本文详细介绍了Windows Autopilot的完整部署流程,涵盖注册配置文件设置、注册状态页面(ESP)配置、设备注册方法(包括CSV导入、JSON注入、在线注册等)、自动化脚本实现及故障排除技巧。通过手动与PowerShell自动化两种方式指导用户完成配置,并提供流程图、最佳实践和常见问题解答,帮助IT管理员高效实现设备零接触部署与管理。

ii567的博客 342

vue项目经验:移动端、pc端适配方案(px转rem)

vue项目移动端、pc端适配方案 vue项目移动端、pc端适配方案 lib-flexible 根据屏幕宽度,自动设置html的font-size px2rem-loader 自动将px单位转换成rem 一、第一步先安装 flexible和 px2rem-loader(命令行安装) npm i lib-flexible -S npm i px2rem-loader -D 简要介绍这两个包...

weixin_45031595的博客 2万+

【Proteus仿真】51单片机+DAC0832+LM358放大电路波形发生器

【Proteus仿真】51单片机+DAC0832+LM358放大电路波形发生器

perseverance51博客 5785

移动端-适配方案

移动端-适配方案 1. 安装依赖 npm install px2rem-loader lib-flexible --save 2. 设置viewport 设置: <meta name="viewport" content="width=device-width,initial-scale=1.0"> 1. 说明: 因为默认的布局视口大于视觉视口,如果不设置将导致页面的内容显示非常小 2. 原理: 将980的页面在375的屏幕上完全显示只能缩小980页面中的内容 3. 直接设置px

treasure of code 的博客 253

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

【前端布局】vw/vh适配方案、lib-flexible和 postcss-pxr 的区别详解,以及响应式工具类封装指南

vw/vh适配方案与响应式工具封装指南

silverclayz的技术分享 1048

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

告别手动计算!用PostCSS+lib-flexible自动转换px到rem的完整配置指南

本文详细介绍了如何使用PostCSS和lib-flexible实现自动将px转换为rem的完整配置指南,解决移动端开发中的响应式布局难题。通过动态计算基准值和自动转换单位,大幅提升开发效率和代码可维护性,特别适合需要精准还原设计稿的移动端项目。

y7z8a9的博客 612

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

vue-cli3.0结合lib-flexible、px2rem实现移动端适配,完美解决第三方ui库样式变小问题...

公司最近做的一个移动端项目从搭框架到前端开发由我独立完成,以前做移动端适配用的媒体查询,这次想用点别的适配方案,然后就采用了vue-cli3.0结合lib-flexible、px2rem实现移动端适配的方案,开发过程中也遇到一些坑,自己选的方案自己填坑吧。以下记录我的项目框架搭建及填坑方案。 搭建可以参考我的另一篇文章vue-cli 3.0 搭建项目流程,这里就不再另外说明了。下面说明项目搭建成...

weixin_30340353的博客 202

移动端h5适配方案(兼容vant)

前段时间接手了公司的一个未开发完的老项目,里面用到了lib-flexible+postcss-pxtorem用来将px自动转换成rem实现移动端适配,但是当引用了vant后,vant组件样式都变得很小,为这个问题搞了很久。 我试过给postcss-pxtorem添加配置文件不起作用,也试过覆盖原来的样式,但是这并不能解决根本问题而且每次引用一个组件都要改很麻烦。 最终解决方法是将插件postcss-pxtorem替换成了postcss-px-to-viewport 1、安装插件 npm install po

qq_39077394的博客 1395

如何做移动端的样式适配

移动端样式适配

qq_37086980的博客 924

2026面试预判及实际面试

本文摘要总结了多个前端开发岗位的面试问题和答案,涵盖Vue3、ECharts、数据可视化、JavaScript核心概念等内容。 Vue3高频问题 组合式API相比选项式API的优势在于逻辑内聚、更好的TS支持和复用性。 状态管理推荐Pinia,轻量且支持组合式API风格。 动态路由和权限控制通过router.addRoute和路由守卫实现。 响应式原理基于Proxy和Reflect,解决了Vue2的局限性。 ECharts与数据可视化 性能优化包括数据聚合、懒渲染和dataZoom区域缩放。

Mr.小灰狼_随笔 579

Vue 完整版系统知识文档

《Vue全栈开发实战手册》摘要 本手册系统整合Vue2/Vue3全栈知识体系,涵盖基础语法、组件开发、状态管理、工程化等核心内容,适合从入门到精通的完整学习路径。主要特点: 基础核心 详解MVVM架构和响应式原理(Vue2的Object.defineProperty vs Vue3的Proxy) 完整模板语法规则与16种内置指令解析 组件系统核心:通信机制(8种方案)、插槽、动态组件、递归组件 进阶实战 状态管理:Vuex/Pinia完整解决方案 路由开发:动态路由、权限控制、懒加载 工程化:Webpack

专注 Java 后端开发,分享基础语法、JVM、并发、Spring 全家桶、微服务、分布式、性能优化等实战干货。坚持输出高质量技术笔记,用简单语言讲清复杂原理,助力每一位 Java 开发者稳步进阶。 400

JS通用样式

(function flexible (window, document) { var docEl = document.documentElement var dpr = window.devicePixelRatio || 1 // adjust body font size function setBodyFontSize () { if (document.body) { document.body.style.fontSize = (12 * dpr) + .

m0_57071129的博客 345

[极致用户体验] 为什么建议2022年不用“等比设计稿“+rem,而用“灵活设计稿“+px

2022年,我不建议你使用rem作为CSS单位了,而应该用px。本文介绍了rem的诞生历史,并循序渐进解释了不建议用rem的原因。

Hull Qin 5696

手机淘宝——flexible.js 移动端自适应方案

一,flexible.js 的使用方式: github地址:https://github.com/amfe/lib-flexible 官方文档地址:https://github.com/amfe/article/issues/17 本文中有部分内容引至上面这个文档。 (一),引用方式 1,引用cdn地址 <script src="http://g.tbcdn.cn/mtb/lib-flexible/0.3.2/??flexible_css.js,flexible.js" >

熊宗的博客 2910

移动端适配的几种方案(flexiblejs,vw)

移动端适配

qq_59737146的博客 1105
上一篇: 1、互联网是怎样运作的?
下一篇: 移动端动态设置viewport引起的大段文字字号变大
Himalaya@hsf
博客等级 码龄9年 20粉丝 85原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值