javascript - 如何检测由于异步 Web 字体加载而发生的 DOM 元素调整大小?
问题描述
我有一个 div 元素,其中包含带有字体系列的文本,以设置为通过 @font-face 属性在 CSS 中指定的自定义字体。由于字体仅在页面上的可见文本中使用后才加载,因此 div 元素以默认字体系列显示时存在一定的时间间隔。我需要执行元素大小测量,目前我在将元素添加到 DOM 后立即执行此操作。如果尚未加载字体,我会在加载 CSS 中指定的字体系列后得到不正确的初始大小值。所以我的问题是如何检测到这一点并再次执行重新测量文本?想到的唯一解决方案是使用字体加载API. 我使用检查方法来查看字体是否准备好,如果没有,我会收听 ready 事件以再次执行文本测量。有没有更好/更直接的方法来做到这一点?
解决方案
为了检测 DOM 元素的大小变化,让我们使用Resize Observer
步骤是:
- 创建一个 ResizeObserver,其中将调用具有提供的大小更改的回调。
- 将该观察者附加到您想要正确获取大小的元素。
推荐阅读
- laravel - 我从 github 下载了一个 laravel 项目,然后运行它并遇到这个错误-
- python - 根据总行条件对数据框进行子集化
- c# - 使用 Process.StartInfo.Arguments 启动 bluestacks
- javascript - Fullcalendar:如何显示具有多个事件的多个资源
- windows - network-bsd 隐藏,因此未找到
- r - 计算矩阵中的滚动平均值
- c# - 无法使用 LinqToTwitter 搜索推文
- android - Android Recyclerview 直到 EditText 框才出现
- prolog - Prolog clpfd :: 预期操作员
- error-handling - 如何为自定义错误类型实现 From 特征?