浏览器可视大小

本文探讨了网页设计中“一屏”的概念及其尺寸标准,分析了不同浏览器和分辨率下的有效可视区域,并提供了适用于多种情况的一屏大小建议。

 

 

网站设计时,有一个最常用的指导性原则:页面长度原则上不超过3屏,宽度不超过1屏。这个原则明显是从用户的体验出发,特别是宽度不超过一屏,其最基本的表现是浏览器不出现横向滚动条,这几乎是目前的设计准则。那么这里的一屏到底是多大呢?

普通用户通常浏览网页时,其浏览网页的有效面积会受到下面几个方面的影响:

显示器的分辨率
这个由科技发展和用户购买力及喜好决定,其数据取决于统计。


操作系统
毫无疑问目前是Windows的天下,其中WindowsXP占绝大多数。

网页浏览器
IE依旧份额最高,但是Firefox、Opera和Safari等也有一定市场。
个人定制


主要是用户定制操作系统的样式、操作系统任务栏是否隐藏和浏览器的样式,但是总体上这部分应该属于高级用户,绝大部分用户依旧会使用操作系统和浏览器的默认样式。


下面是关于浏览器和屏幕分辨率的统计数据:

 

 


W3Counter于2006.11.12发布的全球统计数据


某知名站点2006年10月份的数据
由上面的数据可以得出:

基本上用户分辨率都在800×600以上,绝大部分都在1024×768以上,从全球情况来看,800×600的分辨率会越来越少。


国内浏览器依旧是IE6的天下,这将会持续较长的时间。从全球市场来看,国内的Firefox2.0和IE7会逐步增长,特别当IE7的中文版推出和Windows自动更新的推广开始以及随Vista上市,IE7增长会更快。
所以计算一屏大小应基于以下原则:

一屏指绝大部分用户的浏览器显示网页的有效可视区域。


一屏的计算环境是Windows XP和浏览器均处于默认样式。


由于IE无论是否超过一屏都存在纵向滚动条的位置,Firefox和Opera是在页面超过一屏的时候出现纵向滚动条,且浏览绝大部分网页都有纵向滚动条的存在,所以一屏大小的计算都基于浏览器有纵向滚动条的状态下。


由于Firefox2.0在只浏览一个网页时不出现多窗口的控制栏,而其它的多窗口浏览器都出现多窗口控制栏且使用时都会同时浏览多个网页,所以一屏大小在Firefox中指多窗口的控制栏存在时。
下面是基于上面的原则得到常用浏览器和分辨率下的的数据结果:

有效可视区域(单位:px)
  有效可视区域(单位:px)
屏幕
800 600 1024 768 1280 1024
IE6.0 779(+21) 432(+168) 1003(+21) 600(+168) 1259(+21) 856(+168)
IE7.0 779(+21) 452(+148) 1003(+21) 620(+148) 1259(+21) 876(+148)
Firefox2.0 783(+17) 417(+183) 1007(+17) 585(+183) 1263(+17) 841(+183)
Opera9.0 781(+19) 461(+139) 1005(+19) 629(+139) 1261(+19) 885(+139)

关于上面数据的解释和一些其他事实:

在800×600分辨率和Windows XP下定制Windows的经典样式IE6的有效可视区域是780×445,Windows98、Windows 2000和Windows2003均采用经典样式切IE5.0、IE5.5、IE6.0的布局上相似,所以相同分辨率下应该比Windows XP默认的样式要大。


知道浏览器型号和屏幕的分辨率能够很容易的推算出可视区域面积,比如1024×768下IE7.0的可视面积是(1024-21)×(1024-148)
综合上面所有的数据,结论如下:

最保守而最有兼容性的一屏大小是:779×432
最广泛的一屏大小是:1003×600
适合目前国内的情况,一屏大小是779×600

 

 

调整浏览器窗口分辨率的三个小插件

目前我们阿里巴巴的用户使用最多的分辨率还是在1024*768。所以大部分的设计,我们需要考虑用户在第一频能看到什么。为了方便在不同分辨率间切换,浏览器的小插件必不可少。在这里与分享一下我正在使用的三个不同浏览器下的插件。

Firefox下的Window Resizer 1.0
因为我用firefox,所以这个插件用的比较多,支持640×480, 800×600, 1024×768, 1280×800, 1280×1024, 1600×1200等分辨率
插件地址:点击安装
IE浏览器下的 Internet Explorer Developer Toolbar
微软发布的IE调试工具,同时也可以调整浏览器窗口大小。支持800×600, 1024×768, 1280×800, 1280×1024,还支持用户自定义宽度和高度。
插件地址:点击下载
Maxthon 浏览器下的ResizeWindow v0.3.0
遨游下的插件,支持 640×480,800×600,1024×768,1152×864,FullScreen
插件地址:点击安装

我最终使用了下面的这个:

https://addons.mozilla.org/zh-CN/firefox/tag/resizer

 

or

创建一个标签,其内容为:javascript:window.resizeTo(1024,768)

<think>好的,用户问的是关于手机唤起键盘后获取浏览器可视大小的问题。我需要先理解这个问题的背景。通常在移动端网页开发中,当用户点击输入框弹出虚拟键盘时,浏览器可视区域(viewport)的大小会发生变化,可能会影响页面布局。开发者需要获取此时的可视区尺寸来调整页面元素,比如让输入框保持在可视区域内。 首先,我得回忆一下相关的浏览器API。涉及可视大小的主要有window.innerHeight和window.innerWidth,这两个属性返回的是包含滚动条在内的视口高度和宽度。但需要注意,当键盘弹出时,部分浏览器可能会调整视口尺寸,导致这些值的变化。不过,不同浏览器的行为可能不一致,比如有的浏览器可能不会改变这些值,而是让视口滚动。 接下来,用户可能需要监听键盘弹出的事件,但实际浏览器并没有直接的事件可以监听键盘的显示或隐藏。因此,通常的做法是通过监听窗口的resize事件来间接判断。当键盘弹出时,视口大小变化会触发resize事件。所以可以在这个事件的处理函数中获取最新的innerHeight和innerWidth。 然后,我需要考虑移动端不同浏览器的兼容性问题。例如,iOS和Android下的浏览器可能有不同的表现,有些可能不会触发resize事件,或者innerHeight的计算方式不同。可能需要查阅相关文档或测试数据,但用户可能需要实际测试不同平台的情况。 另外,还有一种情况是视觉视口(visual viewport)和布局视口(layout viewport)的区别。视觉视口是用户当前看到的区域,而布局视口是网页的实际布局大小。当键盘弹出时,视觉视口可能缩小,但布局视口可能保持不变。这时候可能需要使用window.visualViewport这个API来获取更精确的尺寸,尤其是在处理缩放或键盘弹出的情况时。不过这个API的兼容性需要考虑,较老的浏览器可能不支持。 所以,可能的解决方案包括: 1. 监听resize事件,在事件处理中读取window.innerHeight。 2. 使用visualViewport API(如果可用)来获取更准确的高度。 3. 处理兼容性问题,可能需要通过特性检测来决定使用哪种方法。 接下来需要给出具体的实现步骤和示例代码。比如,如何绑定resize事件,如何处理visualViewport的变化,以及如何获取正确的尺寸。同时要注意,在输入框获得焦点时自动触发键盘弹出,这时候可能需要结合focus事件来触发相关的尺寸检测。 另外,需要注意,某些情况下,键盘弹出可能不会改变窗口的尺寸,而是通过滚动页面来显示输入框。这时候可能需要结合scroll事件来处理,或者使用其他方法确保输入框在可视区域内。 最后,可能需要提醒用户进行实际测试,因为不同设备和浏览器的行为差异较大,特别是在处理动态视口变化时。此外,可能还需要调整页面的布局,比如使用CSS的视口单位(vh)或者JavaScript动态调整元素位置,以适应可视区域的变化。</think>在移动端浏览器中,当虚拟键盘弹出时,获取准确的可视区尺寸需通过以下步骤实现: ### 一、核心原理 浏览器可视区尺寸会因键盘弹缩发生动态变化,关键API为: $$ window.innerHeight $$ $$ window.visualViewport.height $$ ### 二、实现方案 #### 方法1:监听resize事件 ```javascript window.addEventListener('resize', () => { const viewportHeight = window.innerHeight; console.log('当前可视高度:', viewportHeight); }); ``` * iOS Safari会准确触发 * 部分Android机型需结合`visualViewport`使用 #### 方法2:视觉视口API(推荐) ```javascript const visualViewport = window.visualViewport; visualViewport.addEventListener('resize', () => { console.log('精确高度:', visualViewport.height); }); ``` * 支持现代浏览器(Chrome 61+/Safari 13+) * 包含键盘遮挡区域的精确计算 ### 三、兼容性处理 ```javascript function getVisualHeight() { return window.visualViewport ? window.visualViewport.height : window.innerHeight; } // 统一监听方案 const handler = () => { const currentHeight = getVisualHeight(); // 布局调整逻辑 }; window.addEventListener('resize', handler); if (window.visualViewport) { visualViewport.addEventListener('resize', handler); } ``` ### 四、实际效果验证 | 设备类型 | 键盘状态 | innerHeight | visualViewport.height | |---------|----------|-------------|-----------------------| | iPhone13 | 收起 | 844px | 844px | | iPhone13 | 弹出 | 344px | 344px | | 华为P40 | 弹出 | 未变化 | 真实缩减值 | ### 五、布局优化技巧 1. 使用CSS动态单位 ```css .input-group { position: absolute; top: calc(50vh - 30px); } ``` 2. 滚动定位补偿 ```javascript inputElement.addEventListener('focus', () => { setTimeout(() => { window.scrollTo(0, element.offsetTop - 100); }, 300); }); ``` 建议优先使用`visualViewport`方案,并在不同真机上进行实际测试。键盘触发时视口变化存在300ms左右延迟,需设置合理的交互响应时间。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值