用bom实现全屏看图是通过window.screen获取可用屏幕尺寸,动态计算居中窗口参数并用window.open()打开,再在新窗口中用css(max-width/max-height+object-fit)自适应显示图片,非真正全屏api。

用 BOM 实现全屏看图,核心是结合 window.screen 获取屏幕尺寸、window.open() 打开新窗口并控制其大小与位置,再配合图片缩放逻辑适配全屏显示。关键不是“真正进入浏览器全屏模式”(那是 Fullscreen API 的事),而是模拟视觉上的“铺满整个屏幕”的效果。
获取屏幕可用尺寸并打开居中窗口
用 window.screen.availWidth 和 window.screen.availHeight 获取用户实际可用的屏幕宽高(排除任务栏等系统区域),再减去浏览器边框、标题栏等预留空间(一般预估 20–50px),计算出目标窗口尺寸和左上角坐标,确保新窗口居中且不被截断。
- 推荐预留约 40px 总边距(上下各 20px),避免遮挡系统 UI
- 使用
(screen.availWidth - width) / 2计算 left,(screen.availHeight - height) / 2计算 top - 示例:
window.open(url, '_blank', 'width=1920,height=1040,left=0,top=20')(需动态计算)
在新窗口中自适应显示图片
新窗口 HTML 页面里,用 CSS 将 <img> 设置为最大宽度/高度 100%,同时保持宽高比;再通过 object-fit: contain 或 cover 控制填充方式。JavaScript 可进一步监听窗口 resize,动态调整图片尺寸或 margin。
Java Maven 项目审查工作流的通用输入处理。当 Java Maven 项目以 ZIP压缩包或 GitLab 仓库 URL 形式提供且需要...时使用。
img { max-width: 100vw; max-height: 100vh; object-fit: contain; display: block; margin: auto; }- 若想“铺满不留白”,改用
object-fit: cover,但可能裁剪图片边缘 - 可加
body { margin: 0; overflow: hidden; }去掉滚动条和空白边
关闭原页面或添加返回入口(可选增强体验)
为减少用户操作负担,可在新窗口加载完成后,调用 window.opener.close() 关闭原图页面(仅在同源且允许关闭时生效);更稳妥的做法是在新窗口右上角加一个透明按钮,点击后执行 window.close() 并触发 opener 页面恢复显示。
- 注意:现代浏览器限制非用户手势触发的
window.close(),所以建议由用户点击关闭按钮来关闭新窗口 - 可在新窗口中监听
beforeunload提示用户是否确认离开,提升友好度 - 用
window.opener安全检查是否存在且未被关闭,避免报错
兼容性与安全提醒
该方案基于传统 BOM 窗口操作,主流浏览器均支持,但部分新版 Chrome/Firefox 对 window.open() 的弹窗拦截较严格——必须由用户点击事件直接触发,不能异步延迟或放在定时器里。
- 确保调用
window.open()的函数绑定在click或touchstart等用户交互事件中 - 避免跨域打开图片页,否则
window.opener将受同源策略限制,无法通信 - 移动端 Safari 对
window.open()支持有限,建议降级为模态层 + viewport 缩放方案
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










