天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

MooTools 1.2中的Drag.Move來實現(xiàn)拖放

它的使用和我們見過的其他的插件類似:首先你使用“new”關(guān)鍵字來創(chuàng)建一個Drag.Move對象并賦值給一個變量,然后你再定義你的選項和事件。這就是全部要做的事情,不過你一定要注意一下下面的例子中描述的IE的CSS怪異現(xiàn)象。
基本用法
Drag.Move
創(chuàng)建你自己的拖動對象非常的容易。稍微看一下下面的例子就行了。注意一下我們是怎么把我們的Drag.Move對象的選項和事件從我們的Drag選項和事件中分離出來的。Drag.Move類擴(kuò)展了Drag類,因此它可以接受Drag類的選項和事件。今天我們并不打算特別地講一講Drag類,不過我們還是要研究一下一些有用的選項和事件。看一下下面的代碼,然后學(xué)習(xí)一下其中的細(xì)節(jié)。
參考代碼:
復(fù)制代碼 代碼如下:
var myDrag = new Drag.Move(dragElement, {
// Drag.Move的選項
droppables: dropElement,
container: dragContainer,
// Drag的選項
handle: dragHandle,
// Drag.Move 的事件
// Drag.Move事件會傳遞拖動的元素,
// 還有可接納拖動元素的元素(droppable)
onDrop: function(el, dr) {
// 顯示拖動到可接納元素的元素的id
alert(dr.get('id'));
},
// Drag事件
// Drag事件傳遞拖動的元素
onComplete: function(el) {
alert(el.get('id'));
}
});

在這里我們稍微打斷一下……
Drag.Move選項
Drag.Move選項有兩個很重要的元素:
droppables――設(shè)置可接納的(droppable)元素的選擇器(這個元素將會注冊拖動相關(guān)的事件)
container――設(shè)置拖動元素的容器(可以保證元素一直在容器內(nèi))
設(shè)置這個選項非常的容易:
參考代碼:
復(fù)制代碼 代碼如下:
// 這里我們通過id定義了一個元素
var dragElement = $('drag_element');
// 這里我們通過class定義了一組元素
var dropElements = $$('.drag_element');
var dragContainer = $('drag_container');
// 現(xiàn)在創(chuàng)建我們的Drag.Move對象
var myDrag = new Drag.Move(dragElement , {
// Drag.Move選項
// 把我們上面定義的droppable賦值給droppables
droppables: dropElements ,
// 把我們的容器元素變量賦值給容器
container: dragContainer
});

現(xiàn)在你的可接受拖動元素的元素就包含進(jìn)來了,你就有了一個可以接受拖放元素的類。
Drag.Move事件
這個事件可以讓你在不同的點去觸發(fā)一個函數(shù),比如當(dāng)你開始拖動一個對象或者你準(zhǔn)備放下它。每一個Drag.Move事件都將傳遞拖動元素和接受拖動元素的元素(我們一直叫做droppable)作為參數(shù)。
onDrop――這個事件將在一個可拖動的元素放到一個接受拖動元素的元素里面時觸發(fā)。
onLeave――這個事件將在一個可拖動的元素離開一個接受拖動元素的元素時觸發(fā)。
onEnter――這這個事件將在一個可拖動的元素進(jìn)入一個接受拖動元素的元素時觸發(fā)。
這些事件中的每一個事件都將調(diào)用一個函數(shù),每個函數(shù)都將在相應(yīng)的事件觸發(fā)時調(diào)用。
參考代碼:
復(fù)制代碼 代碼如下:
var dragContainer = $('drag_container');
var myDrag = new Drag.Move(dragElement , {
// Drag.Move選項
droppables: dropElements ,
container: dragContainer ,
// Drag.Move事件
// Drag.Move函數(shù)將傳遞可拖動的元素(這個例子中是'el')
// 還有接受拖動元素的元素(這個例子中是'dr')
onDrop: function(el, dr) {
// 下面這句的意思大概是:
// 如果你拖動的元素不是到了可以接受拖動元素的元素的范圍內(nèi)
if (!dr) {
// 什么都不做
}
// 否則(從邏輯上講,
// 如果你拖動的那個的元素到了可接受拖動元素的元素范圍內(nèi))
// 做這一件事件
else {
// 在這里做一些事情
};
},
onLeave: function(el, dr) {
// 這個事件將在拖動的元素離開可接受拖動對象的元素時觸發(fā)
},
onEnter: function(el, dr) {
// 這個事件將在拖動的元素進(jìn)入可接受拖動對象的元素時觸發(fā)
}
});

一些Drag事件和選項
對于Drag,有許多選項和事件,不過這里我們只看一小部分。
snap――選項
snap選項可以讓你設(shè)置用戶的鼠標(biāo)至少移動多少個像素后開始拖動。默認(rèn)是6,你額可以設(shè)置為任何數(shù)字或者值為數(shù)字的變量。很明顯,這里有一些合理的限制(比如設(shè)置snap為1000將毫無用處),但是這在定制你的用戶體驗時將會派上用場。
參考代碼: [復(fù)制代碼] [保存代碼]
var myDrag = new Drag.Move(dragElement , {
// Drag選項
snap: 10
});
handle――選項
handle可以給你的拖動元素添加一個控制對象。這個控制對象將成為唯一的可以接受“抓取”(拖動)的元素,從而允許你使用其他的元素做一些其他的事情。要設(shè)置一個控制對象,只需調(diào)用這個元素就可以了。
參考代碼:
復(fù)制代碼 代碼如下:
// 這里我們使用了一個類選擇器建立了一個數(shù)組
// 這將使得我們很輕易地添加多個控制對象,如果我們決定要有多個可接受拖動元素的元素
var dragHandle = $('drag_handle');
var myDrag = new Drag.Move(dragElement , {
// Drag選項
handle: dragHandle
});

onStart――事件
onStart和它名字一樣,當(dāng)開始拖動時觸發(fā)這個事件。如果你設(shè)置了一個很大的snap,這個事件將不會觸發(fā)直到鼠標(biāo)離開元素有指定的snap值那么遠(yuǎn)。
參考代碼:
復(fù)制代碼 代碼如下:
var myDrag = new Drag.Move(dragElement , {
// Drag選項
// Drag選項將把拖動的元素作為參數(shù)傳遞
onStart: function(el) {
// 在這里放置開始拖動時你要做的任何事情
}
});

onDarg――事件
這個onDrag事件,將會在你拖動一個元素時連續(xù)地觸發(fā)。
參考代碼:
復(fù)制代碼 代碼如下:
var myDrag = new Drag.Move(dragElement , {
// Drag選項
// Drag選項將把拖動的元素作為參數(shù)傳遞
onDrag: function(el) {
// 在這里放置開始拖動時你要做的任何事情
}
});

onComplete――事件
最后是onComplete事件,將在你放下一個拖動元素時觸發(fā),而不管你是不是把它放到了一個可以接受拖動元素的元素內(nèi)部。
參考代碼:
復(fù)制代碼 代碼如下:
var myDrag = new Drag.Move(dragElement , {
// Drag選項
// Drag選項將把拖動的元素作為參數(shù)傳遞
onComplete: function(el) {
// 在這里放置開始拖動時你要做的任何事情
}
});

代碼示例
讓我們把剛才的這些代碼以一種方式組合起來,當(dāng)不同的事件觸發(fā)時,我們突出顯示不同的內(nèi)容,并且我們使用上面我們看到的選項來配置我們的Drag.Move對象:
參考代碼:
復(fù)制代碼 代碼如下:
window.addEvent('domready', function() {
var dragElement = $('drag_me');
var dragContainer = $('drag_cont');
var dragHandle = $('drag_me_handle');
var dropElement = $$('.draggable');
var startEl = $('start');
var completeEl = $('complete');
var dragIndicatorEl = $('drag_ind');
var enterDrop = $('enter');
var leaveDrop = $('leave');
var dropDrop = $('drop_in_droppable');
var myDrag = new Drag.Move(dragElement, {
// Drag.Move選項
droppables: dropElement,
container: dragContainer,
// Drag選項
handle: dragHandle,
// Drag.Move事件
onDrop: function(el, dr) {
if (!dr) { }
else {
dropDrop.highlight('#FB911C'); //橙色閃爍
el.highlight('#fff'); //白色閃爍
dr.highlight('#667C4A'); //綠色閃爍
};
},
onLeave: function(el, dr) {
leaveDrop.highlight('#FB911C'); //橙色閃爍
},
onEnter: function(el, dr) {
enterDrop.highlight('#FB911C'); //橙色閃爍
},
// Drag事件
onStart: function(el) {
startEl.highlight('#FB911C'); //橙色閃爍
},
onDrag: function(el) {
dragIndicatorEl.highlight('#FB911C'); //橙色閃爍
},
onComplete: function(el) {
completeEl.highlight('#FB911C'); //橙色閃爍
}
});
});

注意一下CSS:在IE中,為了能夠適合地注冊Drag.Move的容器,你需要在下面的CSS中明確地指出它的位置。最重要的一點是你需要記住設(shè)置容器的位置為“position: relative”,而設(shè)置可拖動的元素的位置為“position: absolute”,然后一定要設(shè)置可拖動元素的left和top屬性。現(xiàn)在,如果你正在為其他瀏覽器構(gòu)建并且遵循此規(guī)則,你可以忽略這一部分:
參考代碼:
復(fù)制代碼 代碼如下:
/* 下面這個定義通常是不錯的主意 */
body {
margin: 0
padding: 0
}
/* 確保可拖動的元素有"position: absolute" */
/* 并設(shè)置開始時的left和top屬性 */
#drag_me {
width: 100px
height: 100px
background-color: #333
position: absolute
top: 0
left: 0
}
#drop_here {
width: 200px
height: 200px
background-color: #eee
}
/* 確保拖動的容器有“position:relative” */
#drag_cont {
background-color: #ccc
height: 600px
width: 500px
position: relative
margin-top: 100px
margin-left: 100px
}
#drag_me_handle {
width: 100%
height: auto
background-color: #666
}
#drag_me_handle span {
display: block
padding: 5px
}
.indicator {
width: 100%
height: auto
background-color: #0066FF
border-bottom: 1px solid #eee
}
.indicator span {
padding: 10px
display: block
}
.draggable {
width: 200px
height: 200px
background-color: blue
}

現(xiàn)在我們再建立我們的HTML:
參考代碼:
復(fù)制代碼 代碼如下:
<div id="drag_cont">
<div id="start" class="indicator"><span>拖動開始</span></div>
<div id="drag_ind" class="indicator"><span>拖動中</span></div>
<div id="complete" class="indicator"><span>拖動結(jié)束</span></div>
<div id="enter" class="indicator"><span>進(jìn)入了Droppable元素</span></div>
<div id="leave" class="indicator"><span>離開了Droppable元素</span></div>
<div id="drop_in_droppable" class="indicator"><span>放進(jìn)了Droppable元素</span></div>
<div id="drag_me">
<div id="drag_me_handle"><span>控制對象</span></div>
</div>
<div id="drop_here" class="draggable"> </div>
</div>

更多學(xué)習(xí)……

這里是文檔中一些相關(guān)的章節(jié):

  • Drag
  • Drag.Move

下載一個包含你開始所需要的所有東西的zip包

包含MooTools 1.2核心庫、MooTools 1.2擴(kuò)展庫,一個包含你的函數(shù)的外部JavaScript文件,一個定義你的樣式的外部CSS文件,一個簡單的HTML文件和上面的例子。

JavaScript技術(shù)MooTools 1.2中的Drag.Move來實現(xiàn)拖放,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 亚洲精品不卡在线 | 国产色欲一区二区精品久久呦 | 日日碰狠狠添天天爽 | 亚洲 欧美 国产 综合 在线 | 99精品视频在线观看re | 狼人大香伊蕉国产WWW亚洲 | 女人高潮被爽到呻吟在线观看 | 久久se视频精品视频在线 | 99久久精品6在线播放 | 强开少妇嫩苞又嫩又紧九色 | 日本特交大片免费观看 | 精品性影院一区二区三区内射 | 在线免费观看视频a | 国产成人小视频在线观看 | 艺术片 快播| 宝贝好紧好爽再搔一点试視頻 | 免费高清在线影片一区 | 国产色情短视频在线网站 | 99精品热视频30在线热视频 | 久久青青草原精品国产软件 | 玩两个少妇女邻居 | 亚洲高清中文字幕免费 | 夜色福利院在线看 | 国产精品亚洲欧美一区麻豆 | 成人中文在线 | 在线视频中文字幕 | 国产精品亚洲第一区二区三区 | 熟女少妇内射日韩亚洲 | 欧美黑大炮18p | 芳草地在线观看免费视频 | 亚洲欧美精品无码一区二在线 | 色戒在线完整观看在线播放版 | 国产精品欧美一区二区在线看 | 国产69精品久久久久乱码韩国 | 国产成人在线视频免费观看 | 青青久久久 | 白洁在线观看 | 午夜看片福利在线观看 | 中文在线免费看视频 | 久久艹伊人 | 久久成人无码国产免费播放 |