0 问题描述

由于需要演示触控操作,采购了SurfacePro,SurfacePro的推荐分辨率为2736×1824,且默认缩放比例为200%,IE浏览器的默认缩放比例也是200%,这样就导致右侧出现了竖直滚动条。整个界面的高度是通过计算得出并控制的,按理来说不应该出现这个垂直方向的滚动条。

正常情况

滚动条

1 问题排查

由繁化简,快速定位

为排除界面元素干扰,直接新建了一个干干净净的页面,里面除了引用了原页面所使用的CSS外,只留了一个包含test文本的h1标签。

<!DOCTYPE html>
<html>
<head><link href="~/Content/css/bootstrap.min.css" rel="stylesheet"><link href="~/Content/css/font-awesome.css" rel="stylesheet"><link href="~/Content/css/animate.css" rel="stylesheet"><link href="~/Content/css/style.css" rel="stylesheet"><link href="~/Content/plugins/ligerUI/skins/Aqua/css/ligerui-all.css" rel="stylesheet" type="text/css" /><link href="~/Content/plugins/ztree/zTreeStyle/zTreeStyle.css" rel="stylesheet" type="text/css" />
</head>
<body><h1>test</h1>
</body>
</html>

对于这样一个页面,在SurfacePro的高分辨率,200%缩放比例下仍然会出现滚动条,进一步定位,逐条删除上方的css样式引用,发现当删除bootstrap.min.css的时候,滚动条就神奇的消失了,至此可以判断肯定是因为bootstrap的样式引起的。但具体是什么原因,经过F12查看,排查字体、Margin等各种设置,均没有找到答案。

折半查找,逐一过滤

无奈下只好采用最原始粗暴,也是最简单有效的折半查找排除法,无法是需要稍微耗费时间与耐心,查看bootstrap.css文件,一共7000多行,我们直接删除大概前3500位置的css样式,如果问题解决了,就说明问题出在前3500行的样式中,如果问题没解决,则可以肯定问题出在后面3500行样式中,然后同样对后面3500行取前1750行做删除或注释处理,进一步定位,如此反复,终于确定了问题所在。大致在6800行处有这么一句样式:

@-ms-viewport {width: device-width;
}

注释掉,问题解决。

2 Viewport 与 device-width

既然找到了问题所在,难免要探究一下Viewport与device-width究竟是干嘛的,有什么用处,为什么会引起这种问题。以下为网络上找到的解释。

Viewport

viewport,翻译为视口,也即可视区域的大小,PC端通过 window.innerWidthwindow.innerHeight 获取。

html元素也即文档的宽度,来自于viewport的宽度,在PC端要加上滚动条的宽度才会与viewport的宽度一样。因此,文档的宽度最终来自于viewport的宽度,PC端通过 window.innerWidth 获取。

而在移动端,情况将变得复杂。

首先,上面提到文档的宽度来自于viewport的宽度,我们把这个viewport称为layout viewport,因为它和布局有关。在手机上面,因为手机的屏幕很小,当初iphone发布时,为了显示完整的桌面网页,就把给layout viewport设置了一个980px的值。手机上,可以通过 document.documentElement.clientWidth 来获取,我在安卓手机上测试也是980px。

但是这样显示网页,那网页的字体、元素都很小,小到打开这样一个网页,首先要做的就是放大页面。为了提高可读性,Apple允许通meta标签来设置layout viewport的宽度,也即文章开头的那行代码。

但是,device-width又是什么呢?

第一代iphone的分辨率为320*480,屏幕尺寸为3.5寸。当时把layout viewport设置成与浏览器宽度一样(而手机上浏览器宽度与手机屏幕宽度一样)时,不用每次打开网页放大了,而且显示的字体与桌面上差不多,可读性很好。因此就定义了一个device-width,即是手机的屏幕分辨率,此时device翻译为“设备”还合适。

但是第二代iphone发布时,屏幕的分辨率变成了480*960,而屏幕尺寸仍然为3.5寸,如果device-width仍然为手机的屏幕分辨率宽度,那么字体将会比第一代小很多。所以,维持device-width的值不变将会是个很好得选择,能与前面兼容。也因此,iphone上的device-width的值一直为320,只不过device再表示“设备”已经不合适了,实际上代表的是一个中间层。而Android也采用了这一概念,其device-width的值为360的多,360=540/1.5,360=720/2。

转载于:https://www.cnblogs.com/fonour/p/6000447.html

高分辨率下IE浏览器缩放导致出现右侧滚动条问题的解决相关推荐

  1. 解决WPS高分辨率下因字体缩放导致字体发虚的问题

    安装 yay -S ttf-wps-fonts wps-office-mui-zh-cn wps-office-mime-cn wps-office-cn # 可选字体 yay -S wps-offi ...

  2. 解决浏览器缩放导致页面显示不全问题

    问题 pc端web页面开发时,发现windows系统经常推荐用户使用125%.150%比例的缩放窗口,这样导致web页面被进行缩放,除此之外还有人为的按钮缩放.故此,在页面devicePixelRat ...

  3. 浏览器缩放导致table表格错位样式问题的解决

    html table表格在浏览器缩放100%时正常显示 但人们有时会缩放90或者更小,这时样式便出现了问题,错位了,该如何解决呢? table需加css样式: table-layout:fixed.

  4. 页面找不到了无法解析服务器,win10下搜狗浏览器无法解析服务器的dns地址如何解决...

    搜狗浏览器能够给我们带来很棒的网页浏览体验,功能也十分强大.不过,最近一些win10系统用户反馈自己打开网页提示页面找不到了... 错误信息:如法解析服务器的dns地址 导致无法打开网页.这是怎么回事 ...

  5. Ubuntu下Chrome浏览器不能以根用户身份运行的解决方法

    Google Chrome浏览器不能以根用户身份运行解决 解决方案一: 找到google-chrome 的快捷方式 右击查看属性 找到命令 即得到google-chrome 的地址. 如:/usr/b ...

  6. ie浏览器自动拦截html,win10系统下IE浏览器总是阻止页面窗口弹出怎么办

    不少朋友在使用ie浏览器浏览网页时都遇到过页面被阻止,弹不出来的问题,并且还会提示"Internet Explorer 已对此页面进行了修改,以帮助阻止跨站脚本.单击此处,获取详细信息... ...

  7. 引导区坏 计算机无法启动,windows7旗舰版系统下注册表损坏导致无法引导启动怎么解决...

    最近有windows7旗舰版系统用户到本站反映说碰到这样一个现象,就是注册表损坏了,导致无法引导启动,该怎么解决这样的情况呢,本文就给大家分享一下windows7旗舰版系统下注册表损坏导致无法引导启动 ...

  8. 去除mac系统下浏览器烦人的右侧和下侧广告条

    不知道从什么时候开始在mac系统下用浏览器浏览网页右侧或下侧都会出现一个广告条,每次都是手工点击叉关闭,但刷新页面或跳转页面还会出现,真是太烦人了,终于找到解决办法了,原来是一个叫"Yont ...

  9. 联想涉密专用计算机 字体,Lenovo出厂高分屏笔记本高分辨率下字体模糊的解决方法...

    现在很多电脑都带有高分辨率的屏幕,但由于Windows系统使用DPI调整方式,所以对于某些软件在高分辨率下,由于系统的原因无法呈现出完美的效果.下面就提供几种调试的方法. 1.显卡驱动 对于笔记本来讲 ...

最新文章

  1. python获取输入数字_python获取从命令行输入数字的方法
  2. Unity Shader——Writing Surface Shaders(2)——Custom Lighting models in Surface Shaders
  3. 【坑爹微信】微信开发基础 --- 微信快捷登陆问题解决
  4. 新疆大学ACM新生赛(公开赛)
  5. 用javascript写一个emoji表情插件
  6. linux搭建java开发环境_Linux搭建Java开发环境
  7. 如何获取k8s拓扑_k8s从安装到精通--Service 拓扑介绍
  8. 小知识--DOS命令1
  9. android 分割数字图片,Android开发自定义View实现数字与图片无缝切换的2048
  10. 兴业研发晨会纪要2008年 10月 30日
  11. Java小题精炼训练营(篇十三)
  12. 支持英特尔9242的服务器,宝德2U双子星服务器PR2725TP2
  13. 常用的RGB值和颜色对照表
  14. 不要与最好的朋友合伙开公司?对吗
  15. AMI CORE8 OEM BIOS
  16. 让制度去管理,而不是你去管理
  17. 计算机核心期刊排名及简介一览
  18. 大数据主要学些什么?(大数据学习路线图)
  19. CAD/CAM/CAE基础(一) 概论
  20. 基于JSP的运动会综合管理系统

热门文章

  1. 2G---5G与未来天线技术
  2. Gartner公布五大新兴技术趋势 AI成主角
  3. 如何评价马云和马斯克在世界人工智能大会的对话?
  4. AI人必看!89页全网最全清华知识图谱报告
  5. 5G 产业链重要投资节点
  6. 不要指望未来科学的发展会改变元素周期表的形式
  7. 李飞飞:让机器有分辨事物的“眼睛”
  8. 计算机专业毕业生人数稳居前十,你该怎么脱颖而出?
  9. 太励志!80 后草根创业者自学编程年收入上亿
  10. 《互联网人求职图鉴》:这类人才“最吃香”,最高薪编程语言出炉!