D3之drag

一.drag中的參數(shù)說明

var  drag = d3.hehavior .drag()
              .origin()
              .on()

首先,我們一定要認為這是個生成器,也就是說d3為我們提供了一個這樣的拖拽框架,讓我們定義一系列拖拽的規(guī)則,通過傳入不同的值會相應的返回一些值供我們所用。切記:在d3中每一個生成器的屬性都不可在其調(diào)用時改變。其中, origin代表拖拽的原點(每次拖拽的原點而非第一次** 這個很重要 **)。on代表一個事件,用法見例子。

二、on

可有dragstart、drag、dragend可選。顧名思義,dragstart在拖拽之前發(fā)生,drag是拖拽的過程中發(fā)生,dragend在拖拽之后發(fā)生。

三、例子

var width = 600;
var height = 600;
var svg = d3.select(this.el).append('svg')
            .attr({
                    width:width
                   ,height:height
            })
var drag = d3.behavior.drag()
             .origin(function(){return {x:10,y:10}})
             .on('drag',function(d){
                         d3.select(this)
                           .attr({
                                'x':Math.max(0,Math.min(width-50,d3.event.x))
                                  ,'y':Math.max(0,Math.min(height-50,d3.event.y))
                              })
              })
var rect = svg.append('rect')
              .attr({
                     'width':50
                    ,'height':50
               })
              .style({
                    'cursor':'move'
              })
             .call(drag)

在這個例子中,我只展示了drag的用法,但是在實際用的過程中,大家也許會給多個rect定義drag操作。那么一定要注意origin中一定要寫為這樣或者不定義(推薦不定義):

.origin(function(d,i){return d})

為什么要這樣,我再啰嗦下,是因為,drag對我們是生成器,每一個d都會在drag中做一些系列處理。如果定義一個固定的值,那么當?shù)谝粋€拖拽之后會影響其他。
但其實在真實開發(fā)中,如果設(shè)置的了origin會給我們帶來麻煩,大家可以修改例子,注意觀察。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,715評論 19 139
  • 翻譯自“Auto Layout Guide”。 1 入門 1.1 理解自動布局 自動布局根據(jù)視圖層級結(jié)構(gòu)中視圖上的...
    lakerszhy閱讀 3,979評論 3 26
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,366評論 25 708
  • 秋風肅殺。 尚是初秋,天氣已十分冷峭了。晨起出發(fā),只得緊緊裹住外衣。 開學已有數(shù)日。這幾日里,渾渾噩噩,不知所云。...
    萬物成灰閱讀 257評論 0 1
  • 12日凌晨,待米菲洗漱的間隙,我獨自一人走出房間,帶上相機,想著探店的旅程馬上結(jié)束,心里有些不舍。 我墊著腳尖,走...
    苗苗在故鄉(xiāng)閱讀 286評論 0 0

友情鏈接更多精彩內(nèi)容