濮阳杆衣贸易有限公司

主頁(yè) > 知識(shí)庫(kù) > HTML5中的拖放實(shí)現(xiàn)詳解

HTML5中的拖放實(shí)現(xiàn)詳解

熱門(mén)標(biāo)簽:貸款電銷(xiāo)人工和機(jī)器人哪個(gè)好 高德地圖標(biāo)注賓館位置 電話機(jī)器人如何 杭州營(yíng)銷(xiāo)電銷(xiāo)機(jī)器人供應(yīng)商 百應(yīng)電銷(xiāo)機(jī)器人產(chǎn)業(yè) 西寧智能外呼系統(tǒng)加盟 飛亞外呼系統(tǒng) 電視購(gòu)物電銷(xiāo)外呼系統(tǒng) 聯(lián)通400電話申請(qǐng)

關(guān)于HTML5中的拖放

拖放(Drag 和 Drop)是一種常見(jiàn)的特性,即抓取對(duì)象以后拖到另一個(gè)位置,在 HTML5 中,拖放是標(biāo)準(zhǔn)的組成部分。在HTML5中用戶(hù)可以使用鼠標(biāo)選擇一個(gè)可拖動(dòng)元素,將元素拖動(dòng)到一個(gè)可放置元素,并通過(guò)釋放鼠標(biāo)按鈕放到這些元素。在拖動(dòng)操作期間,可拖動(dòng)元素的半透明表示跟隨鼠標(biāo)指針。

如果我們希望元素可以被拖動(dòng),那么需要將其 draggable屬性設(shè)為true (a標(biāo)簽draggable默認(rèn)是true)

拖放的事件

在進(jìn)行拖放操作的不同階段會(huì)觸發(fā)數(shù)種事件,拖拽事件的dataTransfer屬性存放了拖放操作中的相關(guān)數(shù)據(jù)。

dragstart 作用于[源元素],當(dāng)一個(gè)元素開(kāi)始被拖拽的時(shí)候觸發(fā),用戶(hù)拖拽的元素需要附加dragstart事件。在這個(gè)事件中,監(jiān)聽(tīng)器將設(shè)置與這次拖拽相關(guān)的信息,例如拖動(dòng)的數(shù)據(jù)和圖像。
dragenter 作用于[源元素],當(dāng)拖拽中的鼠標(biāo)進(jìn)入一個(gè)元素的時(shí)候觸發(fā)。這個(gè)事件的監(jiān)聽(tīng)器需要指明是否允許在這個(gè)區(qū)域釋放鼠標(biāo)。如果沒(méi)有設(shè)置監(jiān)聽(tīng)器,或者監(jiān)聽(tīng)器沒(méi)有進(jìn)行操作,則默認(rèn)不允許釋放。
dragover 作用于[目標(biāo)元素],當(dāng)拖拽中的鼠標(biāo)移動(dòng)經(jīng)過(guò)一個(gè)元素的時(shí)候觸發(fā)。
dragleave 作用于[目標(biāo)元素],當(dāng)拖拽中的鼠標(biāo)離開(kāi)元素時(shí)觸發(fā)??梢宰鳛榭舍尫欧答伒母吡粱虿迦霕?biāo)記去除。
drag 作用于[源元素],事件在元素被拖動(dòng)時(shí)觸發(fā)。
drop 作用于[目標(biāo)元素],在拖拽操作結(jié)束釋放時(shí)于釋放元素上觸發(fā)。
dragend 作用于[源元素],拖拽源在拖拽操作結(jié)束時(shí)觸發(fā),不管操作成功與否。

(在拖拽的時(shí)候只會(huì)觸發(fā)拖拽的相關(guān)事件,鼠標(biāo)事件,例如mousemove,是不會(huì)觸發(fā)的)

DataTransfer 對(duì)象

在處理拖放操作時(shí),我們需要用到 DataTransfer 對(duì)象來(lái)保存被拖動(dòng)的數(shù)據(jù)。 DataTransfer 可以保存一項(xiàng)或多項(xiàng)數(shù)據(jù)、一種或者多種數(shù)據(jù)類(lèi)型。
屬性

dropEffect dropEffect    
[String]指定實(shí)際的放置效果,可能的值:
copy: 復(fù)制到新的位置
move: 移動(dòng)到新的位置
link: 建立一個(gè)源位置到新位置的鏈接
none: 禁止放置(禁止任何操作)
effectAllowed [String]指定拖動(dòng)時(shí)被允許的效果,可能的值:
copy: 復(fù)制到新的位置.
move:移動(dòng)到新的位置 .
link:建立一個(gè)源位置到新位置的鏈接.
copyLink: 允許復(fù)制或者鏈接.
copyMove: 允許復(fù)制或者移動(dòng).
linkMove: 允許鏈接或者移動(dòng).
all: 允許所有的操作.
none: 禁止所有操作.
uninitialized: 缺省值(默認(rèn)值), 相當(dāng)于 all.
files 包含一個(gè)在數(shù)據(jù)傳輸上所有可用的本地文件列表。如果拖動(dòng)操作不涉及拖動(dòng)文件,此屬性是一個(gè)空列表。
types 保存一個(gè)被存儲(chǔ)數(shù)據(jù)的類(lèi)型列表作為第一項(xiàng),順序與被添加數(shù)據(jù)的順序一致。如果沒(méi)有添加數(shù)據(jù)將返回一個(gè)空列表。

方法

void addElement(Element element) 設(shè)置拖動(dòng)源。通常不需要改變這項(xiàng),如果修改這項(xiàng)將會(huì)影響拖動(dòng)的哪個(gè)節(jié)點(diǎn)和dragend事件的觸發(fā)。默認(rèn)目標(biāo)是被拖動(dòng)的節(jié)點(diǎn)
void clearData(String type) 刪除與給定類(lèi)型關(guān)聯(lián)的數(shù)據(jù)。類(lèi)型參數(shù)是可選的。如果類(lèi)型為空或未指定,將刪除所有類(lèi)型相關(guān)聯(lián)的數(shù)據(jù)。如果不存在指定類(lèi)型的數(shù)據(jù),或數(shù)據(jù)傳輸不包含任何數(shù)據(jù),此方法將沒(méi)有任何效果。
String getData(String type) 獲得給定類(lèi)型的數(shù)據(jù),如果給定類(lèi)型的數(shù)據(jù)不存在或者數(shù)據(jù)轉(zhuǎn)存沒(méi)有包涵數(shù)據(jù),方法將返回一個(gè)空字符串。
void setData(String type,String data) 為一個(gè)給定的類(lèi)型設(shè)置數(shù)據(jù)。如果該數(shù)據(jù)類(lèi)型不存在,它將添加到的末尾,這樣類(lèi)型列表中的最后一個(gè)項(xiàng)目將是新的格式。如果已經(jīng)存在的數(shù)據(jù)類(lèi)型,替換相同的位置的現(xiàn)有數(shù)據(jù)。就是,當(dāng)更換相同類(lèi)型的數(shù)據(jù)時(shí),不會(huì)更改類(lèi)型列表的順序。
void setDragImage(DOMElement image,long x,long y) 自定義一個(gè)期望的拖動(dòng)時(shí)的圖片。大多數(shù)情況下,這項(xiàng)不用設(shè)置,因?yàn)楸煌蟿?dòng)的節(jié)點(diǎn)被創(chuàng)建成默認(rèn)圖片。
image 要用作拖動(dòng)反饋圖像元素
x 圖像內(nèi)的水平偏移量.
y 像內(nèi)的垂直偏移量.

瀏覽器支持

Internet Explorer 9+、Firefox、Opera 12、Chrome 以及 Safari 5+

演示代碼

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Drag & Drop</title>
<style type="text/css">
.box {
    display: inline-block;
    width: 100px;
    height: 100px;
    border: 1px solid #ccccff;
    background-color: #ccccff;
    text-align: center;
    line-height: 100px;
}

.bin {
    width: 200px;
    height: 200px;
    padding: 10px;
    border: 1px solid #ccccff;
    overflow: hidden;
    float: left;
}
</style>
</head>
<body>
    <div style="display: table;">
        <div class="bin">
            <div class="box" draggable="true">可拖拽元素</div>
        </div>

        <div class="bin">&nbsp;</div>
    </div>

    <script type="text/javascript">
        var bins = document.querySelectorAll('.bin');
        var boxs = document.querySelectorAll('.box');
        var drag = null;

        for (var i = 0; i < boxs.length; i++) {

            var box = boxs[i];

            box.onselectstart = function() {
                return false;
            };
            box.ondragstart = function(e) {
                e.dataTransfer.effectAllowed = 'move';
                e.dataTransfer.setData('text/plain', e.target.outerHTML);
                e.dataTransfer.setDragImage(e.target, 0, 0);
                drag = this;
                return true;
            };
            box.ondragend = function(e) {
                drag = null;
                return false
            };
        }

        for (var i = 0; i < bins.length; i++) {
            var bin = bins[i];
            //當(dāng)拖曳元素進(jìn)入目標(biāo)元素
            bin.ondragover = function(e) {
                e.preentDefault();
                return true;
            };

            //拖拽元素在目標(biāo)元素上移動(dòng)
            bin.ondragenter = function(e) {
                this.style.backgroundColor = '#eeeeff';
                return true;
            };
            //拖拽元素在目標(biāo)元素上離開(kāi)
            bin.ondragleave = function(e) {
                this.style.backgroundColor = '#fff';
                return true;
            };

            //拖拽的元素在目標(biāo)元素上同時(shí)鼠標(biāo)放開(kāi)
            bin.ondrop = function(e) {
                if (drag) {
                    drag.parentNode.removeChild(drag);
                    this.appendChild(drag);
                }
                this.style.backgroundColor = '#fff';
                return false;
            };
        }

        document.body.ondrop = function(e) {
            e.preventDefault();
            e.stopPropagation();
        }

    </script>
</body>
</html>

以上就是HTML5中的拖放相關(guān)資料介紹,需要的朋友可以參考一下。

標(biāo)簽:邯鄲 煙臺(tái) 牡丹江 玉溪 內(nèi)蒙古 安慶 晉中 撫州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《HTML5中的拖放實(shí)現(xiàn)詳解》,本文關(guān)鍵詞  HTML5,中的,拖放,實(shí)現(xiàn),詳解,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《HTML5中的拖放實(shí)現(xiàn)詳解》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于HTML5中的拖放實(shí)現(xiàn)詳解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    山丹县| 宣武区| 银川市| 鹤峰县| 和林格尔县| 富锦市| 西畴县| 四子王旗| 太湖县| 德江县| 浦城县| 凉城县| 大连市| 安泽县| 阜阳市| 磐安县| 凉山| 杨浦区| 龙胜| 平邑县| 普定县| 锡林浩特市| 莱阳市| 青州市| 新民市| 聂荣县| 乌鲁木齐市| 漳平市| 新晃| 炎陵县| 泸定县| 岑溪市| 江西省| 古田县| 定陶县| 孟连| 夏津县| 武城县| 盖州市| 鲁山县| 甘孜县|