91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

HTML5中實現拖放功能的代碼怎么寫

發布時間:2022-04-24 15:58:47 來源:億速云 閱讀:140 作者:iii 欄目:大數據

這篇文章主要介紹“HTML5中實現拖放功能的代碼怎么寫”,在日常操作中,相信很多人在HTML5中實現拖放功能的代碼怎么寫問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”HTML5中實現拖放功能的代碼怎么寫”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

關于HTML5中的拖放

拖放(Drag 和 Drop)是一種常見的特性,即抓取對象以后拖到另一個位置,在 HTML5 中,拖放是標準的組成部分。在HTML5中用戶可以使用鼠標選擇一個可拖動元素,將元素拖動到一個可放置元素,并通過釋放鼠標按鈕放到這些元素。在拖動操作期間,可拖動元素的半透明表示跟隨鼠標指針。

如果我們希望元素可以被拖動,那么需要將其 draggable屬性設為true (a標簽draggable默認是true)

拖放的事件

在進行拖放操作的不同階段會觸發數種事件,拖拽事件的dataTransfer屬性存放了拖放操作中的相關數據。

dragstart作用于[源元素],當一個元素開始被拖拽的時候觸發,用戶拖拽的元素需要附加dragstart事件。在這個事件中,監聽器將設置與這次拖拽相關的信息,例如拖動的數據和圖像。
dragenter作用于[源元素],當拖拽中的鼠標進入一個元素的時候觸發。這個事件的監聽器需要指明是否允許在這個區域釋放鼠標。如果沒有設置監聽器,或者監聽器沒有進行操作,則默認不允許釋放。
dragover作用于[目標元素],當拖拽中的鼠標移動經過一個元素的時候觸發。
dragleave作用于[目標元素],當拖拽中的鼠標離開元素時觸發。可以作為可釋放反饋的高亮或插入標記去除。
drag作用于[源元素],事件在元素被拖動時觸發。
drop作用于[目標元素],在拖拽操作結束釋放時于釋放元素上觸發。
dragend作用于[源元素],拖拽源在拖拽操作結束時觸發,不管操作成功與否。

(在拖拽的時候只會觸發拖拽的相關事件,鼠標事件,例如mousemove,是不會觸發的)

DataTransfer 對象

在處理拖放操作時,我們需要用到 DataTransfer 對象來保存被拖動的數據。 DataTransfer 可以保存一項或多項數據、一種或者多種數據類型。
屬性

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

方法

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

瀏覽器支持

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];
            //當拖曳元素進入目標元素
            bin.ondragover = function(e) {
                e.preentDefault();
                return true;
            };

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

            //拖拽的元素在目標元素上同時鼠標放開
            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中實現拖放功能的代碼怎么寫”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

长寿区| 洮南市| 金昌市| 沅江市| 利津县| 洪雅县| 石首市| 耒阳市| 阆中市| 漳浦县| 家居| 麻江县| 刚察县| 宣汉县| 屏南县| 丰县| 高台县| 靖宇县| 昭觉县| 定远县| 治多县| 辽宁省| 武鸣县| 夏河县| 曲沃县| 无极县| 敦化市| 滁州市| 班玛县| 桃江县| 乐平市| 东方市| 津市市| 盖州市| 新宾| 准格尔旗| 龙口市| 漾濞| 瓮安县| 舒城县| 六安市|