javascript - 如何获取在内存中创建的控件或框但不在javascript页面上呈现它?
问题描述
我正在尝试构建一个解决方案,我需要在其中包含某些文本的标签上进行某些计算。但是,我不想在页面上呈现该标签。一旦进行了计算,就可以丢弃标签。
是否可以在 JavaScript 中在内存中创建这样的标签以进行计算而不将其呈现在页面上?我不想渲染隐藏的控件,因为即使这样也需要一些空间和网页上的修改。
解决方案
如果要根据元素的渲染大小进行计算,则需要将元素附加到 DOM。这是一种不影响页面布局的方法:
const hiddenLabel = document.createElement("span");
hiddenLabel.innerHTML = "Some Text";
Object.assign(hiddenLabel.style, {
position: "absolute", // removes element from document flow
visibility: "hidden", // element invisible, but layout still computed
});
document.body.appendChild(hiddenLabel);
// inspect dimensions of the rendered element.
console.log(hiddenLabel.getBoundingClientRect().width);
例如,如果您尝试根据输入的长度调整输入字段的大小,则此特定示例可能很有用。
推荐阅读
- rest - 限价错误 - 代码 500 - 向盈透证券客户端 Web API 下订单请求
- amazon-web-services - 在 Cloudformation 上使用带有私有 IP 值的加入、选择和拆分
- javascript - 根据屏幕大小呈现 html div 内容
- javascript - Nest JS Jest 测试 .pre/.use 不是函数
- node.js - 接收第 3 方的 webhook 时出现 403 错误
- matlab - 减少包含多个矩阵运算的此 Matlab 循环的执行时间的提示
- django - 如果外键为空字符串,则 Django 模型字段句柄
- c# - ViewModel 在 Post 操作中始终为空 [HttpPost]
- multimethod - 对象方法的多行使用
- python - 处理完成后立即显示图像。烧瓶