当前位置: 首页 > Web前端 > HTML5

移动端适配_1

时间:2023-04-05 00:03:24 HTML5

屏幕尺寸屏幕分辨率,数值大的在前,数值小的在后。PPI和DPI是指对角线上每英寸的像素数,而不是每平方英寸的像素数。Physicalpixeldevicepixel和logicalpixeldevicepixel是物理像素:logicalpixel:这个375*667是逻辑像素devicepixel和logicalpixel不等价的情况:dpr-devicepixelratio我们在css中写windth:1px,在Iphone6上devices会占用两个发光点,表示Iphone6中的设备像素是逻辑像素的两倍。iphone6也叫2折屏,即dpr为2window.devicePixelRatioDevice独立像素-DIP视图viewport-视觉视口布局viewport-layoutViewport测试代码:结果:选中box标签,发现其宽度为980pxdocument.documentElement.clientWidthmeta视口标签只对手机浏览器有效,对PC浏览器无效。测试代码:结果:选中框标签,发现其宽度为450pxWindow10系统,如果设置了缩放,例如选择200%缩放,在上例中选中框标签,发现其宽度将为225像素。当设置width=450的时候,有水平滚动条:修改为width=device-width:结果:选中框标签,发现其宽度为414px,与iphone8plus的逻辑像素一致测试代码:结果:Iphone8的375px的盒子可以放640px的长度标签是因为放大了0.5倍:idealviewport-idealviewport只能通过设置initial-scale才能达到效果,因为浏览器会自动计算width的值:layoutviewportwidth=deviceidealviewportwidth/initial-scale当不设置width属性时,浏览器会将布局视口宽度设置为视觉视口宽度,让页面正好填满屏幕。它可以被认为是一种法律。如果同时设置了initial-scale和width,则取计算结果中值较大的那个。常见的写法是两个都写,而不是只写一个关于视口:移动端的适配离不开视口,下面的百分比和rem解决方案都是基于视口的,只要像素浏览器调试控制台显示的都是逻辑像素,它们是同一个单位。下面375、667、640、60、638、58都是同一个单位百分比布局方案包括两种:百分比+定高弹框(即flex布局)+定高百分比+定高案例:Rem布局方案mediaquery改变根元素的字体大小:这里的min-width指的是逻辑像素,也就是css像素,也就是下面的像素:如果设计稿用到640*2=1280px,那么min-width:640px设置为100px,方便转换。比如设计稿上一个label是120px,写成1.2remmin-width:480px下面的75px是怎么计算的:640/480==100/75==1.33现在更多的是750*1334px的设计稿,所以font-size:100px应该设置在750范围内缺点:js要动态改变根元素的字体大小。document.clientWidth是layoutviewport的宽度,即viewport中指定width的公式和前面mediaquery的数据公式一样。缺点:在2倍屏的设备上,1px的线条显示很粗,因为显示1px缩放自适应布局占用两个物理发光点。推荐两款手机适配插件:淘宝灵活解决地址:https://github.com/amfe/lib-f..hotcss地址:https://github.com/imochen/ho...hotcss使用步骤:下载zip包,解压后复制以下两个文件到工程中:Hotcss.js中的代码:px2rem中的代码:测试代码:结果:盒子无论在什么设备上,都是屏幕宽度的一半。因为hotcss平均将屏幕分成16个部分,1个部分是1remhotcss具体用法:cart.html:.html文件名中不用写hotcss.js文件会根据这个viewport计算html标签下font-size的值。下面过程相同,用法相同:width:px2rem(100)直接把rem单元写在行内样式111{{test}}

记住16rem为水平全屏宽度js代码使用hotcss.js文件中的px单位挂在窗口上的全局属性和函数:rem2px函数(将rem转px)、px2rem函数(将px转rem)、dprproperty(window.devicePixelRatio)if750100p在设计稿上测量x,写成rem2px(100*320/750/20)为什么写*320/750/20,因为需要转成rem,参考hotcss特殊用法第一篇文章100*320/750/20=2.1rem,所以你也可以直接写rem2px(2.1)2.1/16=13%,这样无论你在什么设备上,tabWidth的宽度都会被渲染为横屏宽度的13%兼容方案:hotcss适配方案兼容解决方案:1pixel1pxborderistoothickonthemobileterminal,valueisthelogicalpixelofthedevice:当initial-scale=0.5时,该值为设备逻辑像素的两倍:(只设置initial-scale也可以达到效果,因为浏览器会自动计算宽度值:布局视口宽度=设备理想视口宽度/initial-scale当没有设置width属性时,浏览器会将布局视口宽度设置为visualviewport宽度让页面刚好填满屏幕。这可以认为是一条线法。如果同时设置了initial-scale和width,则取计算结果中数值较大的那个)