第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

正在回答

1 回答

根本原因是因為沒有設(shè)置鼠標(biāo)捕捉。


當(dāng)鼠標(biāo)按下的時候,應(yīng)當(dāng)為 拖拽元素增加 capture

????????if(m_ctrl.setCapture){
????????????m_ctrl.setCapture();
????????}else?if(window.captureEvents){
????????????window.captureEvents(Event.MOUSEMOVE|Event.MOUSEUP);
????????}


鼠標(biāo)彈起的時候

????????????if(m_ctrl.releaseCapture){
????????????????m_ctrl.releaseCapture();
????????????}else?if(window.captureEvents){
????????????????window.captureEvents(Event.MOUSEMOVE|Event.MOUSEUP);
????????????}


整個代碼修改后如下:

//??設(shè)置某個面板支持調(diào)整大小
function?Resizable(panelId)?{
????if?(!window.__resizable_var)?{
????????with?(window)?{
????????????//??ctrl?:控制元素,panel?:面板?,?type?類型
????????????m_panel?=?1,?m_ctrl?=?1?,?m_type?=?1
????????????//??move:???????是否偵聽鼠標(biāo)移動,?
????????????//??m_start_x:??鼠標(biāo)相對ctrl元素的left、right?
????????????//??m_to_x:?鼠標(biāo)的新位置
????????????moving?=?0?,?m_start_x?=?0?,?m_start_y?=?0?,?m_to_x?=?0?,?m_to_y?=?0;
????????????//??面板最小尺寸
????????????m_min_w?=?100,?m_min_h?=?40;
????????}
????}
????var?panel?=?document.getElementById(panelId);
????//??插入調(diào)整控制元素
????var?r?=?document.createElement("div");
????var?b?=?document.createElement("div");
????var?rb?=?document.createElement("div");
????r.class?=?r.className?=?'ui-Resizable-r??ui-Resizable-ctrl';
????b.class?=?b.className?=?'ui-Resizable-b??ui-Resizable-ctrl';
????rb.class?=?rb.className?=?'ui-Resizable-rb?ui-Resizable-ctrl';
????panel.appendChild(r);
????panel.appendChild(b);
????panel.appendChild(rb);
????//??鼠標(biāo)移動處理
????function?on_move()?{
????????if?(moving)?{
????????????//??計算最小的?left?和?top?(使panel的新大小不能小于自身的位置)
????????????var?min_left?=?0
????????????var?min_top?=?0
????????????var?to_x?=?Math.max(min_left?+?m_min_w,?m_to_x?-?m_start_x);
????????????var?to_y?=?Math.max(min_top?+?m_min_h,?m_to_y?-?m_start_y);
????????????//??元素的新位置?=?鼠標(biāo)新位置?-?鼠標(biāo)相對元素的位置s
????????????switch?(m_type)?{
????????????????case?'r'?:
????????????????????m_ctrl.style.left?=?to_x?+?"px";
????????????????????m_panel.style.width?=?to_x?+?10?+?'px';
????????????????????break;
????????????????case?'b'?:
????????????????????m_ctrl.style.top?=?to_y?+?"px";
????????????????????m_panel.style.height?=?to_y?+?10?+?'px';
????????????????????break;
????????????????case?'rb'?:
????????????????????m_ctrl.style.left?=?to_x?+?"px";
????????????????????m_ctrl.style.top?=?to_y?+?"px";
????????????????????m_panel.style.width?=?to_x?+?20?+?'px';
????????????????????m_panel.style.height?=?to_y?+?20?+?'px';
????????????????????break;
????????????}
????????}
????}
????//???在控制元素中按下
????function?on_mousedown(e,?panel,?ctrl,?type)?{
????????var?e?=?e?||?window.event;
????????//??計算出鼠標(biāo)頁面位置?和?當(dāng)前元素位置的差?=?鼠標(biāo)相對元素的位置
????????m_start_x?=?e.pageX?-?ctrl.offsetLeft;
????????m_start_y?=?e.pageY?-?ctrl.offsetTop;
????????m_panel?=?panel;
????????m_ctrl?=?ctrl;
????????m_type?=?type;
????????if(m_ctrl.setCapture){
????????????m_ctrl.setCapture();
????????}else?if(window.captureEvents){
????????????window.captureEvents(Event.MOUSEMOVE|Event.MOUSEUP);
????????}?
????????//??開始處理移動事件
????????moving?=?setInterval(on_move,?10);
????}
????//??為調(diào)整控制元素設(shè)置拖拽處理
????r.addEventListener('mousedown',?function?(e)?{
????????on_mousedown(e,?panel,?r,?'r');
????})
????b.addEventListener('mousedown',?function?(e)?{
????????on_mousedown(e,?panel,?b,?'b');
????})
????rb.addEventListener('mousedown',?function?(e)?{
????????on_mousedown(e,?panel,?rb,?'rb');
????});
????if?(!window.__resizable_var)?{
????????//??頁面鼠標(biāo)移動偵聽處理
????????document.addEventListener('mousemove',?function?(e)?{
????????????var?e?=?window.event?||?e;
????????????m_to_x?=?e.pageX;
????????????m_to_y?=?e.pageY;
????????})
????????//??鼠標(biāo)彈起處理
????????document.addEventListener('mouseup',?function?(e)?{
????????????if(m_ctrl.releaseCapture){
????????????????m_ctrl.releaseCapture();
????????????}else?if(window.captureEvents){
????????????????window.captureEvents(Event.MOUSEMOVE|Event.MOUSEUP);
????????????}???
????????????clearInterval(moving);
????????????var?cls?=?document.getElementsByClassName('ui-Resizable-ctrl');
????????????for?(var?i?=?0;?i?<?cls.length;?i++)?{
????????????????cls[i].style.left?=?'';
????????????????cls[i].style.top?=?'';
????????????}
????????})
????????window.__resizable_var?=?true;
????}
}


0 回復(fù) 有任何疑惑可以回復(fù)我~
#1

LUGY

能否講解一下這兩句的意思 81行 if (!window.__resizable_var) 66行 window.captureEvents(Event.MOUSEMOVE|Event.MOUSEUP)
2015-04-30 回復(fù) 有任何疑惑可以回復(fù)我~

舉報

0/150
提交
取消
可調(diào)大小面板實現(xiàn)(Resizeable Panel)
  • 參與學(xué)習(xí)       13046    人
  • 解答問題       48    個

前端UI組件倉庫必備,先從分析實現(xiàn)原理到步驟分解,走完全過程

進入課程
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號