赞
踩
移动端和应用程序(App)是两个不同的概念。
移动端是指在移动设备上(如手机、平板电脑等)运行的操作系统,例如iOS、Android、Windows phone等。在移动端系统上可以运行各种类型的应用程序,包括原生应用程序、基于web的应用程序和混合应用程序。
应用程序(App)是指在移动设备上运行的程序,可以通过应用商店或其他途径下载安装。它们可以是原生应用程序,也可以是基于web或混合的应用程序。应用程序通常提供各种功能和服务,如社交媒体、游戏、新闻、工具、地图等。与网页不同,应用程序可以在离线状态下运行,并且通常提供更好的性能和用户体验。
所以,移动端是操作系统,而应用程序是运行在移动端上的程序。
rem与vw单位适配,任选其一即可,不可同时使用!
首先我们要了解,rem单位是相对于html元素的font-size来设置的,如果我们需要在不同的屏幕下有不同的尺寸,可以动态的修改html的 font-size尺寸。
在实际开发工作当中,我们需要考虑两个问题:
实时改变屏幕尺寸js代码和rem单位换算需要同时设置,两者缺一不可。
屏幕尺寸 | html当中的font-size | 盒子的设置宽度 | 盒子的最终宽度 |
---|---|---|---|
375px | 37.5px | 1rem | 37.5px |
320px | 32px | 1rem | 32px |
414px | 41.4px | 1rem | 41.4px |
屏幕适配选其一即可。
ScreenAdaptive.js
const htmlEl = document.documentElement;
function setRemUnit() {
const unit = htmlEl.clientWidth / 10;
htmlEl.style.fontSize = unit + "px";
}
setRemUnit();
window.addEventListener("resize", function () {
setRemUnit();
});
window.addEventListener("pageshow", function (e) {
if (e.persisted) {
setRemUnit();
}
});
AmfeFlexible.js
(function flexible (window, document) { var docEl = document.documentElement var dpr = window.devicePixelRatio || 1 // 调整正文字体大小 function setBodyFontSize () { if (document.body) { document.body.style.fontSize = (12 * dpr) + 'px' } else { document.addEventListener('DOMContentLoaded', setBodyFontSize) } } setBodyFontSize(); // 设置 1rem = viewWidth / 10 function setRemUnit () { var rem = docEl.clientWidth / 10 docEl.style.fontSize = rem + 'px' } setRemUnit() // 重置页面大小的rem单位 window.addEventListener('resize', setRemUnit) window.addEventListener('pageshow', function (e) { if (e.persisted) { setRemUnit() } }) // 检测0.5px的支持 if (dpr >= 2) { var fakeBody = document.createElement('body') var testElement = document.createElement('div') testElement.style.border = '.5px solid transparent' fakeBody.appendChild(testElement) docEl.appendChild(fakeBody) if (testElement.offsetHeight === 1) { docEl.classList.add('hairlines') } docEl.removeChild(fakeBody) } }(window, document))
这个时候就需要用到
postcss-pxtorem
插件了
npm i postcss-pxtorem@5.1.1
配置文件,在根目录的.postcssrc.js下配置,如果文件没有,自己手动创建
module.exports = {
plugins: {
'postcss-pxtorem': {
rootValue ({ file }) {
return file.indexOf('vant') !==- 1? 37.5:75
},
propList: ['*']//属性的选择器,*表示通用
}
}
}
vue.config.js中配置
module.exports = {
lintOnSave: false
}
前端中的vw单位是指视口宽度的百分比,即1vw等于视口宽度的1%。
使用vw单位可以实现响应式布局,使元素的大小随着屏幕尺寸的变化而变化。
例如,设置一个元素的宽度为50vw,表示该元素的宽度为视口宽度的一半。
在移动设备上,该元素的宽度会自动调整为屏幕宽度的一半,可以更好地适应不同的设备宽度。
注意:安装插件前,需要统一版本,直接copy
npm install postcss@8.2.8 --save
npm install postcss-loader@4.0.4 --save
npm install less@3.13.1 --save
npm install less-loader@7.0.1 --save
1.1.1
npm install postcss-px-to-viewport --save
1.2.2
npm install postcss-px-to-viewport-8-plugin --save
根目录下新建postcss.config.js并 添加如下配置:
这里以1.1.1版本为示例:
module.exports = { plugins: { "postcss-px-to-viewport": { unitToConvert: "px", // 需要转换的单位,默认为"px" viewportWidth: 750, // 设计稿的视口宽度 unitPrecision: 5, // 单位转换后保留的精度 propList: ["*", "!font-size"], // 能转化为vw的属性列表,!font-size表示font-size后面的单位不会被转换 viewportUnit: "vw", // 希望使用的视口单位 fontViewportUnit: "vw", // 字体使用的视口单位 // 需要忽略的CSS选择器,不会转为视口单位,使用原有的px等单位。 // 下面配置表示类名中含有'keep-px'都不会被转换 selectorBlackList: ["keep-px"], minPixelValue: 1, // 设置最小的转换数值,如果为1的话,只有大于1的值会被转换 mediaQuery: false, // 媒体查询里的单位是否需要转换单位 replace: true, // 是否直接更换属性值,而不添加备用属性 exclude: [/node_modules/], // 忽略某些文件夹下的文件或特定文件,例如 'node_modules' 下的文件 include: [/src/], // 如果设置了include,那将只有匹配到的文件才会被转换 landscape: false, // 是否添加根据 landscapeWidth 生成的媒体查询条件 @media (orientation: landscape) landscapeUnit: "vw", // 横屏时使用的单位 landscapeWidth: 1338, // 横屏时使用的视口宽度 }, }, };
Vw单位和rem单位都是相对单位,相对于视口尺寸来定义的,它们各自有不同的优势。
总体来说,Vw和rem都有自己的优势,需要根据具体的需求和场景来选择使用哪种单位。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。