DOM 操作
DOM 模块 提供了对原生 DOM 操作的轻量级封装,特别针对 TechUI 的 TuiAdaptive (自适应) 系统进行了深度优化。
它不仅包含常规的元素查询与查找,还提供了在复杂缩放环境(Scale Context)下精准计算元素尺寸与坐标的核心算法。
引入方式
javascript
import { syncContSize, tCoreTpl, tDom, tQuery } from "@techui/utils";元素查询
tQuery 对象提供了一组用于查找和遍历 DOM 节点的快捷方法。
tQuery.el(selector, all)
querySelector 的简写封装。
- selector: CSS 选择器字符串。
- all:
boolean。默认为false返回单个元素,设为true返回 NodeList。
javascript
const app = tQuery.el('#app');
const items = tQuery.el('.list-item', true);tQuery.get1stParent(el, selector)
查找最近的匹配父级元素(closest 的封装)。
javascript
// 查找当前点击元素最近的 .card 父级
const card = tQuery.get1stParent(e.target, '.card');tQuery.clearExcept(container, exceptEl)
清空容器内的所有子元素,但保留指定的某一个元素。常用于保留 loading 遮罩或特定状态节点。
javascript
tQuery.clearExcept(document.body, document.querySelector('#app'));tQuery.valueByPath(obj, path, fallback)
多语言/深层对象取值器。 虽然不是直接操作 DOM,但常用于在 DOM 渲染前安全获取 data.user.profile.name 形式的数据。
javascript
const data = { user: { name: 'TechUI' } };
const name = tQuery.valueByPath(data, 'user.name'); // "TechUI"
const age = tQuery.valueByPath(data, 'user.age', 18); // 18 (Fallback)尺寸与自适应
tDom 是 TechUI 处理自适应布局的核心对象,它能识别元素是否处于 #tuiAdpt(自适应缩放面板)内部,并计算真实的物理坐标。
tDom.isInAdp(el)
判断一个元素是否位于自适应缩放容器 (#tuiAdpt) 内部。
javascript
if (tDom.isInAdp(myElement)) {
console.log("当前元素处于缩放环境中");
}tDom.rootInfo(el)
获取元素相对于浏览器视口 (Root) 以及自适应容器 (Adpt) 的详细布局信息。 此方法解决了在 transform: scale() 环境下,原生 getBoundingClientRect 数据换算困难的问题。
- 返回: 包含
rootWidth,isInAdp, 以及A2RTop(Adaptive To Root Top) 等关键坐标偏移量。
javascript
const layout = tDom.rootInfo(el);
// layout.A2RLeft 表示自适应容器左边界距离视口的距离syncContSize(options)
容器尺寸同步计算器。 用于计算“源元素”的几何属性,以便将这些属性应用到“目标元素”上(目前主要用于TuiAdaptive的同步容器的计算)。
- 参数:
source: 源 DOM 元素。target: 目标 DOM 元素(注:源码中实际样式赋值已被注释,主要用于返回计算后的 Rect 对象)。syncPosition:boolean,是否计算位置。positionBaseTo:'root'(基于视口) |'parent'(基于父容器偏移)。
- 逻辑: 会自动判断
source是否在自适应面板中,如果在,则使用clientWidth而非rect.width以避免缩放导致的尺寸偏差。
javascript
const rect = syncContSize({
source: buttonEl,
target: tooltipEl,
syncPosition: true,
positionBaseTo: 'root'
});
// rect: { width: 100, height: 40, left: 200, top: 300 }模板解析
tCoreTpl(string)
一个极简的字符串模板解析函数。用于解析 [key]value 格式的特定配置字符串。(目前用于解析Wasm模块中的部分模板字符串)
javascript
const configStr = "[title]Hello TechUI[color]Blue";
const config = tCoreTpl(configStr);
console.log(config);
// 输出: { title: "Hello TechUI", color: "Blue" }