手机的屏幕有大有小,移动web最好做成响应式布局,也就是自适应屏幕,没有固定宽高,这样的话,在所有手机上都可以正常显示。关于移动端页面按手机屏幕分辨率自动缩放的js,先附上代码

var phoneWidth = parseInt(window.screen.width);

var phoneHeight = parseInt(window.screen.height);

var phoneScale = phoneWidth/750;//除以的值按手机的物理分辨率

var ua = navigator.userAgent;

if (/Android (\d+\.\d+)/.test(ua)) {

var version = parseFloat(RegExp.$1);

// andriod 2.3

if (version > 2.3) {

document.write('');

// andriod 2.3以上

} else {

document.write('');

}

// 其他系统

} else {

document.write('');

}

做手机端页面最头疼的就是物理分辨率和逻辑分辨率的转换了,当拿到设计图的时候,图基本都是按物理分辨率来设计的,一般常用的为640(iphone5/5s)、750(iphone6/6s),而谷歌等浏览器采用小手机模式浏览页面的时候,上面的值为逻辑分辨率,调试的时候很难把控页面样式,在手机端的样式也会因此大乱,在页面头部加入以上一段js之后,在手机端就可以正常显示了,

var phoneScale = phoneWidth/750;

除以的为设计图设计的页面宽度,750是按iphone6来设计(根据自己使用需求来修改),即让页面的 放大比率=屏幕的逻辑分辨率/物理分辨率,从而达到适应手机的效果。

(注意,有时候页面加了这段代码在调试的时候,切记刷新,刷新过后就会按手机缩放比例显示)

概念解析:

phys.width:一般我们所指的宽度width即为phys.width,物理宽度(物理分辨率)

device-width:又称为css-width,设备宽度(逻辑分辨率)

其中我们可以获取phys.width通过document.documentElement.clientWidth;

而获取css-width通过 window.screen.width获取。

所以这里  phoneWidth(逻辑分辨率) = parseInt(window.screen.width);

如iphone6的phys.width为750px,而css-width为375px。

明白一个浏览器默认行为。

试想,浏览器如果把电脑端的980px的网页展现在宽度为750px的iphone6手机屏上,势必会放不下,手机端横向会出现滚动条,怎么阻止这种情况呢,很简单,浏览器默认一个虚拟窗口,不同浏览器有不同的虚拟窗口宽度的默认值如:safari iphone:980px;

opera:850px;

Andriod webkit:800px;

IE:974px;

然后会把这个980px虚拟窗口装进宽度为750px的iphone6中,当然这样的话必须缩放,这就是为什么在手机中展现电脑端页面没有出现横向滚动条,而且字迹明显变小的原因。

initial-scale='+phoneScale+',minimum-scale='+phoneScale+',maximum-scale='+phoneScale+'

这段代码切记要指定 initial-scale=***,在安卓系统中,不指定默认的nitial-scale=***,只指定最小和最大缩放值,也可以正常显示,但是safari浏览器则会失效,对于宽度是100%的页面, 则显示为页面的30%左右的宽。

target-densitydpi=device-dpi

WebKit内核默认按照160的DPI来排版。假如设备真实DPI是480,宽度是1080,在WebKit会按160DPI,360宽度来排版。排版结束后在放大到1080宽。

所以当取window.innerwidth之类的值的时候,取的是WebKit实际排版宽度360,而不是1080.

target-densitydpi=device-dpi可以强制内核以480DPI排版,使画面更精细,window.innerwidth也将为屏幕宽度1080.

但WebKit从去年开始取消了对target-densitydpi的支持。(所以现在不建议写该属性了)

想实现target-densitydpi=device-dpi的效果有什么方法?提交此次补丁的WebKit开发者说可以用responsive images 和 CSS device units来替代。

参考链接:

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助~如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持!

jsp页面适应手机屏幕_JavaScript实现移动端页面按手机屏幕分辨率自动缩放的最强代码...相关推荐

  1. 手机整屏显示数据php,JavaScript实现移动端页面按手机屏幕分辨率自动缩放示例...

    这篇文章主要介绍了移动端页面按手机屏幕分辨率自动缩放的js代码,通过阻止浏览器的默认行为各方面分析缩放的功能实现,具体操作步骤大家可查看下文的详细讲解,感兴趣的小伙伴们可以参考一下. 手机的屏幕有大有 ...

  2. 通过JS动态设置meta标签,根据手机屏幕分辨率自动缩放适配各手机(包括适配华为、oppo大屏幕手机、钉钉、微信)

    JS动态添加meta标签,根据手机屏幕分辨率自动缩放适配各手机(包括适配华为.oppo大屏幕手机.钉钉.微信进入) 5月28晚上周四下班接了一个急活,一个面向国外的国际官方网站,三方适配+兼容.说是月 ...

  3. 【移动端网页布局】移动端网页布局基础概念 ⑧ ( 移动端页面布局方案 | 单独制作的移动端页面 - 主流 | 响应式页面兼容移动端 - 开发难度较大 )

    文章目录 一.移动端页面布局方案 1.单独制作的移动端页面 2.响应式页面兼容移动端 一.移动端页面布局方案 移动端页面方案 : 单独制作的移动端页面 : 主流开发方案 , PC 端 与 移动端 访问 ...

  4. 根据屏幕分辨率获取css,根据判断浏览器类型屏幕分辨率自动调用不同CSS的代码...

    既判断分辨率,也判断浏览器 重新完善代码,使之成为判断浏览器类型屏幕分辨率自动调用不同CSS的代码. 解释: var IE1024=""; var IE800="&quo ...

  5. 移动端页面按手机屏幕分辨率自动缩放的js

    1 <script> 2     var phoneWidth = parseInt(window.screen.width); 3     var phoneHeight = parse ...

  6. 移动端页面不需要在meta加_整理一下移动端的一些常用 meta

    一.html中meta标签meta标签是什么?META标签是HTML语言HEAD区的一个辅助性标签 meta标签是干什么用的?META标签用来描述一个HTML网页文档的属性,例如作者.日期和时间.网页 ...

  7. flexible.js在华某为手机上使用rem时,页面宽度超出手机屏幕宽度

    问题:手机端项目在华为的某款手机上显示时页面内容没有自适应手机宽度,出现横向滚动条 原因:手机获取手机屏幕宽度并计算出rem时出现偏差,明显宽余真实手机屏宽度 解决方案一:在页面里获取页面最外层dom ...

  8. PC端判断屏幕宽度到达手机宽度的时候,直接跳转手机页面

    <script>// //判断屏幕宽度到达手机宽度的时候,直接跳转手机页面 // window.addEventListener("resize", function( ...

  9. 手机电脑同屏_骚操作!手机秒变触摸电脑、扩展屏幕!

    THE START 小编的手机被搞报废了,所以呢就想怎么把闲置的手机利用起来,就有了今天这篇推送,小伙伴赶紧把旧手机重新拿起来吧!小编不回收旧手机,旧手机也不用拿去换洗脸盆了,可以用来当电脑屏幕了!这 ...

最新文章

  1. 那个大战AlphaGo的柯洁,将免试入读清华大学工商管理专业
  2. poj1012(约瑟夫环问题)
  3. Servlet,GenericServlet和HttpServlet的继承关系
  4. Android adb input 命令介绍
  5. 基于U-net的肝脏肿瘤分割实战(Pytorch实现)
  6. 数据处理不等式:Data Processing Inequality
  7. 进程间的通信之1-----管道
  8. 【Flink】flink keyby 在 subtask 中分配不均的研究
  9. 【报告分享】新基建专题报告:5g和数据中心的投资机会分析.pdf(附下载链接)...
  10. 已有Microsoft365许可证,但是office无法激活
  11. 落花人独立 微雨燕双飞
  12. GBase 8c产品高级特性介绍
  13. unity3d 模型从上到下出现(shader)
  14. 游戏c是什么网络语言,游戏cpdd网络用语是什么意思 王者荣耀里很常见
  15. h5 版活体检测、视频活体检测
  16. 18.sql server横向切分、纵向拆分表、相对平均分配数据、复杂sql语句、数据库存储原理(by-朝夕)
  17. dump内存文件的方法
  18. 如何介绍自己测试过的项目
  19. 泽塔云发布全新AI产品 持续引领超融合云计算创新
  20. 黑马训练营10届开学典礼

热门文章

  1. 宝塔linux面板安装ssr,宝塔面板安装memcached的误区及正确方法
  2. 简单网页设计(苍兰诀)html+css
  3. 文件搜索工具android,Search Everything下载
  4. 图数据库Neo4j实战(全网最详细教程)
  5. JavaScript前端 制作2048游戏
  6. 元宇宙NFT游戏开发成本 元宇宙NFT游戏开发公司
  7. Recovery刷机工具 v5.0.2.8
  8. 常用HTML代码,字体颜色等
  9. 选股服务器列表为空 无法执行选股,东方财富客户端如何设置自动选择服务器 设置有条件选股方法...
  10. microsoft微软登录新账户/切换账户失败,一直转圈,提示“你似乎没有连接到internet”