ext开发实现点击任意html元素打开一个ext组件悬浮面板的功能。
类似与下图中点击蓝色按钮,触发一个选择面板组件功能。
首先要求此悬浮面板组件必须继承于
Ext.Component
此时利用component的float属性将组件悬浮,利于showat将组件定位与指定html元素下方。
关键代码如下
//获取dom元素xy位置,
var getXY=function(obj){
var x = 0,y = 0;
if (obj.getBoundingClientRect) {
var box = obj.getBoundingClientRect();
var D = document.documentElement;
x = box.left + Math.max(D.scrollLeft, document.body.scrollLeft) - D.clientLeft;
y = box.top + Math.max(D.scrollTop, document.body.scrollTop) - D.clientTop
}
else{
for (; obj != document.body; x += obj.offsetLeft, y += obj.offsetTop, obj = obj.offsetParent) {}
}
return [x,y]
}
//buttonDom 为按钮dom
//创建元素点击事件
var itemheight=400;
buttonDom.onclick = function () {
var selector=Ext.widget('panel',{
width:itemheight,
height:200,
floating: true //此属性必须设置为true
});
//实现鼠标点击其他位置时关闭面板
var xys = getXY(buttonDom);
xys[1] = xys[1] + 20;
xys[0] = xys[0] + 20;
var maxY=Ext.getBody().getViewSize().height;
if(maxY-xys[1]<itemheight){
xys[1] = xys[1] - itemheight;
}
selector.showAt(xys);
var mouseIn = false;
selector.getEl().dom.onmouseleave = function () {
mouseIn = false;
};
selector.getEl().dom.onmouseenter = function () {
mouseIn = true;
};
document.onmousedown = function () {
if (mouseIn == false) {
selector.destroy();
}
};
};
分类:
前端技术
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异