前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Electron宽高渲染问题(边框显示不全的解决方法)

Electron宽高渲染问题(边框显示不全的解决方法)

作者头像
码客说
发布2021-09-23 14:40:58
1.9K0
发布2021-09-23 14:40:58
举报
文章被收录于专栏:码客

前言

在开发时为了保证窗口内的页面和窗口保持一样的大小,我们会这样配置

代码语言:javascript
复制
width: 100vw;
height: 100vh;
border: 1px solid #2D8CF0;
background-color: white;
box-sizing: border-box;

我们设置了1px的边框,但是这样有的电脑能正常显示边框有的又不行,到底是什么原因呢?

经过反复测试发现,原来是系统缩放导致的。

我们当然可以把缩放调成100%来解决,但是我们不能要求用户这样做,那我们就必须要知道是什么导致的?

浏览器解析小数的方式

我们先了解一个知识点

在使用小数点时,会存在一些浏览器解析差异的问题:

代码语言:javascript
复制
.container{  
    width:10.9px;
}

IE8 中会显示当前的宽度为11px,而在 IE7 会以10px进行显示; 所以对于小数点的使用不同浏览器会存在不同的解析方式:

  1. 采用四舍五入解析的浏览器:IE8、IE9、Chrome、Firefox
  2. 采用直接取整解析的浏览器:IE7、Safari

解决方法

那么我们就知道了 Electron用的是Chrome的内核,那么如果系统设置为125%,那么所有的宽高计算都要乘以1.25,这样经过四舍五入之后就可能导致宽高大于窗口宽高的问题。怎么解决呢?

有两个方式

  1. 软件自身禁止缩放
  2. 调整窗口宽高保证计算结果为整数

软件自身禁止缩放

主进程中添加以下代码

代码语言:javascript
复制
if (process.platform === 'win32') {
    app.commandLine.appendSwitch('high-dpi-support', 'true')
    app.commandLine.appendSwitch('force-device-scale-factor', '1')
}

但是这样在高分辨率的屏幕上窗口就太小了,体验不好。

调整宽高的值

所以我们还是调整一下窗口的大小保证计算的结果为整数

先看看系统中常见的缩放比例100%125%150%175%200%225%250%300%

除去整数只剩下1.251.51.752.252.5,也就是说保证0.250.50.75相乘为整数即可,所以只要宽高是4的倍数就可以了。

结论

宽高设置为4的倍数即可

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-09-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 浏览器解析小数的方式
  • 解决方法
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档