D3.js - 拖動 API
拖放是 d3.js 中最熟悉的概念之一。本章詳細介紹了拖動及其方法。
安裝
我們可以使用以下指令碼直接包含拖動 API。
<script src = "https://d3js.org/d3-dispatch.v1.min.js"></script>
<script src = "https://d3js.org/d3-selection.v1.min.js"></script>
<script src = "https://d3js.org/d3-drag.v1.min.js"></script>
拖動 API 方法
以下是 D3.js 中一些最重要的拖動 API 方法。
d3.drag()
drag(selection)
drag.container([container])
drag.filter([filter])
drag.subject([subject])
drag.clickDistance([distance])
- drag.on(typenames,[listener])
d3.dragDisable(window)
- d3.dragEnable(window [,noclick])
現在讓我們詳細瞭解每一個。
d3.drag()
此方法用於建立新拖動。你可以使用以下指令碼呼叫此方法。
<script>
var drag = d3.drag();
</script>
拖動(選擇)
此方法用於將拖動應用於指定的選擇。你可以使用 selection.call 呼叫此函式。 下面定義一個簡單的例子。
d3.select(".node").call(d3.drag().on("drag", mousemove));
這裡,應用於所選元素的拖動行為是通過 selection.call。
drag.container([container])
它用於將容器設定為指定的拖動功能。如果未指定容器,則返回當前訪問者。要使用 Canvas 拖動任何圖形元素,可以將容器重新定義為自身。它定義如下。
function container() {
return this;
}
drag.filter([filter])
它用於為指定的函式設定過濾器。如果未指定過濾器,則返回如下定義的當前過濾器。
function filter() {
return !d3.event.button;
}
drag.subject([subject])
它用於將主題設定為指定的拖動功能,並在下面定義。
function subject(d) {
return d = = null ? {x: d3.event.x, y: d3.event.y} : d;
}
這裡,主題代表被拖動的東西。例如,如果要在 SVG 中拖動矩形元素,則預設主題是要拖動的矩形的基準。
drag.clickDistance([distance])
此方法用於設定單擊 mousedown 和 mouseup 事件的最大距離。如果未指定距離,則指向零。
drag.on(typenames,[listener])
此方法用於為指定的型別名稱設定事件偵聽器以進行拖動。型別名是一個包含一個或多個由空格分隔的型別名的字串。每個 typename 都是一個型別,可選地後跟句點(。)和名稱,例如 drag.one 和 drag.two。此型別應來自以下之一 -
-
start - 啟動一個新指標。
-
拖動 - 拖動活動指標。
-
end - 非活動指標。
d3.dragDisable(window)
此方法用於禁用拖放選擇。它可以防止 mousedown 事件操作。預設情況下,大多數選定的瀏覽器都支援此操作。如果不支援,則可以將 CSS 屬性設定為 none。
d3.dragEnable(window [,noclick])
此方法用於在指定的視窗位置上啟用拖放選擇。它用於呼叫 mouseup 事件操作。如果指定 noclick 值為 true,則 click 事件將超過零毫秒超時。
拖動 API - 拖動事件
D3.event 方法用於設定拖動事件。它包括以下欄位 -
-
目標 - 它表示拖動行為。
-
型別 - 它是一個字串,可以是以下任何一個 - “開始”,“拖動”或“結束”。
-
主題 - 拖動主題,由 drag.subject 定義。
event.on(typenames,[listener])
事件物件公開 event.on 方法以執行拖動。它的定義如下。
d3.event.on("drag", dragged).on("end", ended);