Response 终端适配
使用说明
为了便于用户自行开发网站项目,本框架将主样式文件和自适应样式文件做了分离。ax.css是本框架的主要样式文件,默认没有适配移动设备,如果用户需要适配移动设备包括手机和平板,方法一、请自行加载ax-response.css
适配样式文件;方法二、将ax-response.css代码拷贝到ax.css文件底部。
根据设备尺寸适配
整理目前市面上主流移动设备的型号和尺寸,得知目前手机竖屏最大尺寸是480px
,主要平板竖屏宽度均小于800px
,另外我们知道普通笔记本电脑宽度是1366px
或者1440px
,22尺寸大屏显示器宽度是1920px
,所以500px
,900px
,1200px
,1500px
应该是设备屏幕宽度重要分水岭。设备清单如下:
设备类型 | 设备型号 | 物理分辨率 | 像素比(DPR) | 逻辑分辨率 |
---|---|---|---|---|
手机 | 苹果iPhone X | 2436x1125 | 3 | 812x375 |
手机 | 苹果iPhone 11 | 1792x828 | 2 | 896x414 |
手机 | 苹果iPhone 11 Pro Max | 2688x1242 | 3 | 896x414 |
手机 | 苹果iPhone 6/7/8 Plus | 1920x1080 | 2.6 | 736x414 |
手机 | 苹果iPhone 6/7/8 | 1334x750 | 2 | 667x375 |
手机 | 苹果iPhone 5 | 1136x640 | 2 | 568x320 |
手机 | 三星GALAXY S5 | 1920x1080 | 3 | 640x360 |
手机 | Redmi note 10 Pro/K30/K40 | 2400×1080 | 2.75 | 873x393 |
手机 | 小米Max 3 | 2460x1080 | 2.75 | 895x393 |
手机 | 小米11 Pro | 3200×1440 | 3.5 | 914x411 |
手机 | 华为P40 | 2340x1080 | 3 | 780x360 |
手机 | 华为P20 | 2244x1080 | 3 | 748x360 |
手机 | 华为8A | 1560x720 | 2 | 780x360 |
手机 | vivo X21 | 2280x1080 | 3 | 760x360 |
手机 | Oppo K5 | 2340×1080 | 3 | 780x360 |
手机 | 魅族17 Pro | 2340×1080 | 2.75 | 851x393 |
折叠手机 | Surface Duo | 1800x1350 | 2.5 | 720x540 |
折叠手机 | Galaxy Fold | 1960x840 | 3 | 653x280 |
平板 | 苹果iPad Pro | 2732×2048 | 2 | 1366x1024 |
平板 | 苹果iPad | 2048x1536 | 2 | 1024x768 |
平板 | 苹果iPad mini | 2048x1536 | 2 | 1024x768 |
在ax-response.css文件通过使用@media
方法预设适配区间样式。
/*手机+平板竖*/ @media screen and (max-width: 900px) { } /*手机+平板竖之外*/ @media screen and (min-width: 900px) { } /*pc+笔记本+平板横+iPadpro竖*/ @media screen and (min-width: 900px) { } /*手机+平板横+平板竖*/ @media screen and (max-width: 1200px) { } /*手机*/ @media screen and (max-width: 500px) { } /*iPad竖*/ @media (orientation : portrait) and (min-width: 500px) and (max-width: 900px){ } /*iPad横 + iPad Pro竖*/ @media screen and (min-width: 900px) and (max-width: 1200px) { } /*iPad横*/ @media (orientation : landscape) and (min-width: 900px) and (max-width: 1200px){ } /*iPad Pro竖*/ @media (orientation : portrait) and (min-width: 900px) and (max-width: 1200px){ } /*iPad Pro横*/ @media (orientation : landscape) and (min-width: 1200px) and (max-width: 1500px) and (-webkit-min-device-pixel-ratio:1.8),(min-device-pixel-ratio:1.8){ } /*笔记本+大屏 + iPad Pro横*/ @media screen and (min-width: 1200px) and (max-width: 3000px){ } /*笔记本 + iPad Pro横*/ @media screen and (min-width: 1200px) and (max-width: 1500px) { } /*手机+笔记本+平板*/ @media screen and (max-width: 1500px) { } /* 移动竖屏 */ @media (orientation : portrait) and (max-width: 1200px) { } /* 移动横屏 */ @media (orientation : landscape) and (max-width: 1500px){ } /*PC大屏*/ @media screen and (min-width: 1500px) { }
根据高清倍数适配
目前移动设备中手机屏幕3倍屏居多,平板屏幕两倍屏幕居多,笔记本和台式机都是1倍屏,结果1px的线条在笔记本台式机显示很细致,在手机里却显得很粗壮,针对这个问题,用户可在ax-response.css文件中通过使用min-device-pixel-ratio
方法预设设备高清区间样式。
/*x2 & x3 screen*/ @media screen and (-webkit-min-device-pixel-ratio:1.8),(min-device-pixel-ratio:1.8) { } /*x3 screen*/ @media screen and (-webkit-min-device-pixel-ratio:2.4), (min-device-pixel-ratio:2.4) { }
使用js判断
本框架内置了判断终端js语句,根据屏幕宽度四个数值进行终端判断。
<500px
clientIs='phone'手机>500px & < 900px
clientIs='pad'平板竖放>900px & < 1200px
clientIs='padflip'平板横放>1200px & < 1500px
clientIs='padpro'大屏平板>1500px
clientIs='pc'笔记本/电脑
使用方法如下:
<script type="text/javascript "> if(clientIs == 'phone'){ //语句 }else if(clientIs == 'pad'){ //语句 }else if(clientIs == 'padflip'){ //语句 }else if(clientIs == 'padpro'){ //语句 }else if(clientIs == 'pc'){ //语句 }else{ //语句 } </script>
另外js通过头文件可判断终端是桌面电脑端还是手持移动端。
使用方法如下:
<script type="text/javascript "> if(platformIs == 'pc'){ //语句 }else if(platformIs == 'mobile'){ //语句 }else{ //语句 } </script>
rem代替px
本框架在html标签中设置了基础字号是10px,那么1rem就等于10px。比如你希望正文字号对应的是14px,那么你可以设置font-size:1.4rem
(14*1rem/10)。原本是将html的字号定为1px的,这样14px=14rem,直观易懂,但是遍历移动端浏览器发现不是所有的浏览器都接受1px的字号,所以将html的字号定为10px,那么原来使用px的数值只需要增加一位小数即可。基于这个原理你可以在引用ax.css中之后写入你自己的style样式。
使用rem单位的一个重要原因是简化项目在移动端的适配工作,做到只要改一个数值(html的字号)就能做到多端自适配。目前PC端的html字号是10px,body字号则是14px(1.4rem);在移动端html字号为(160px/14),body字号则是16px(1.4rem);如果你想让你的项目在移动端的显示效果更大更清晰,你可以将html字号设为(180px/14),body字号则是18px(1.4rem)。
使用rem单位会产生小数点数值,比如width:20.563268px,由于移动端视网膜屏支持小数点数值显示,在如此高清显示条件下,肉眼上看不出来20px和20.563268px的差别。所以rem单位在移动端完全可行。