vue拖拽

理想歸理想横朋,現(xiàn)實(shí)歸現(xiàn)實(shí)

我的github: 李大玄
我的私人博客: 李大玄
我的npm開(kāi)源庫(kù): 李大玄
我的簡(jiǎn)書(shū): 李大玄
我的CSDN: 李大玄
我的掘金: 李大玄
嗶哩嗶哩: 李大玄

這是咱們要實(shí)現(xiàn)的功能


在這里插入圖片描述

html

<div class="itempannelparent">
        <div class="itempannel">
          <el-collapse v-model="activeNames">
            <el-collapse-item class="coll-item-name" title="流量節(jié)點(diǎn)" name="1">
              <ul>
                <li v-for="(item,index) in basicNode" :key="index" 
                  class="getItem" draggable @dragstart="handleDragstart($event, false)"
                  @dragente="ondragente"
                  @dragend="handleDragEnd($event,item)">
                  <img :data-name="item.name" :src="item.backImage" alt="">
                  <span>{{item.name}}</span>
                </li>
              </ul>
            </el-collapse-item>
          </el-collapse>
        </div>
        <div class="content" :class="styleType">
          <div data-posi="1" @dragstart="handleDragstart($event, true)" @drop="ondrop" @dragover="ondragover"></div>
          <div>
            <div data-posi="2" @dragstart="handleDragstart($event, true)" @drop="ondrop" @dragover="ondragover"></div>
            <div data-posi="3" @dragstart="handleDragstart($event, true)" @drop="ondrop" @dragover="ondragover"></div>
          </div>
        </div>
      </div>
import li from '@/assets/li.jpeg';
import chart from '@/assets/chart.jpeg';
import map from '@/assets/map.jpeg';

export default {
  data() {
    return {
      styleType: 'content1',

      activeNames: ['1'],
      basicNode: [
        {name: "li",backImage: li},
        {name: "chart",backImage: chart},
        {name: "map",backImage: map}
      ],
      currentDrag: void 0,
      li,chart,map,
      tmpMap: {
        map: `
          <div class="china-map">1</div>`,
        chart: `<div class="data-flow">2</div>`,
        li:` <div class="data-flow">3</div>`
      },

      keng: false,
      allTemplate: ``,
      one: '',
      two: '',
      three: ''
    };
  },
  props: {},
  components: {},
  computed: {},
  created() {},
  methods: {
    radioChange(val) {
      this.allTemplate = `
        <div class="data-view ${val}">
          ${this.one}
          <div class="data-west">
            ${this.two}
            ${this.three}
          </div>
        </div>`;
      console.log(this.allTemplate);
    },
    ondragover(e) {
      e.preventDefault();
    },
    ondragente(e) {
      e.preventDefault();
    },
    handleDragstart(e, flag = false) {
      this.keng = flag;
      this.currentDrag = e.target.getAttribute("data-name");
    },
    handleDragEnd(e) {
      e.preventDefault();
      this.currentDrag = void 0;
    },
    ondrop(e) {
      if (this.keng) {
        return;
      }
      e.preventDefault();
      if (e.target.hasChildNodes() || e.target.tagName !== 'DIV') {
        this.$message.error('當(dāng)前節(jié)點(diǎn)已有元素');
        return;
      }
      const img = document.createElement('img');
      img.src = this[this.currentDrag];
      img.setAttribute('data-name', this.currentDrag);
      img.style.width = `100%`;
      img.style.height = `100%`;
      e.target.appendChild(img);
      const posi = e.target.getAttribute("data-posi");

      if (posi === '1') {
        this.one = this.tmpMap[this.currentDrag];
      } else if (posi === '2') {
        this.two = this.tmpMap[this.currentDrag];
      } else if (posi === '3') {
        this.three = this.tmpMap[this.currentDrag];
      }
      this.allTemplate = `
        <div class="data-view ${this.styleType}">
          ${this.one}
          <div class="data-west">
            ${this.two}
            ${this.three}
          </div>
        </div>`;
      console.log(this.allTemplate);
    },
  }
};
.itempannelparent {
  width: 100%;
  height: 650px;

  display: flex;
  &::-webkit-scrollbar {
    width: 1px;
    height: 1px;
  }
  .itempannel {
    width: 200px;
    border-right: 1px solid #e6e9ed;
    &::v-deep .el-collapse-item__header {
      padding-left: 10px;
    }
    ul {
      padding: 0px;
      // padding-left: 16px;
      display: flex;
      align-items: center;
      flex-wrap: wrap;
      li {
        color: rgba(0, 0, 0, 0.65);
        border: 1px solid rgba(0, 0, 0, 0);
        list-style-type: none;
        display: flex;
        flex-direction: column;
        align-items: center;
        margin: 0 16px 20px 20px;
        &:hover {
          cursor: move;
        }
        img {
          width: 54px;
          height: 54px;
          margin-bottom: 15px;
        }
      }
    }
  }
  .content {
    flex: 1;
    background: rgba(0, 0, 0, 0.3);
    background: url('../../../assets/bigviewbg.jpeg') no-repeat;
    background-size: cover;
    padding: 170px 114px 0px;
  }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市冲杀,隨后出現(xiàn)的幾起案子东囚,更是在濱河造成了極大的恐慌窿春,老刑警劉巖螃概,帶你破解...
    沈念sama閱讀 206,723評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異屈留,居然都是意外死亡局冰,警方通過(guò)查閱死者的電腦和手機(jī)测蘑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)康二,“玉大人碳胳,你說(shuō)我怎么就攤上這事∧穑” “怎么了挨约?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,998評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)产雹。 經(jīng)常有香客問(wèn)我诫惭,道長(zhǎng),這世上最難降的妖魔是什么洽故? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,323評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮盗誊,結(jié)果婚禮上时甚,老公的妹妹穿的比我還像新娘。我一直安慰自己哈踱,他們只是感情好荒适,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,355評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著开镣,像睡著了一般刀诬。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上邪财,一...
    開(kāi)封第一講書(shū)人閱讀 49,079評(píng)論 1 285
  • 那天陕壹,我揣著相機(jī)與錄音,去河邊找鬼树埠。 笑死糠馆,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的怎憋。 我是一名探鬼主播又碌,決...
    沈念sama閱讀 38,389評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼绊袋!你這毒婦竟也來(lái)了毕匀?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,019評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤癌别,失蹤者是張志新(化名)和其女友劉穎皂岔,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體展姐,經(jīng)...
    沈念sama閱讀 43,519評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡凤薛,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,971評(píng)論 2 325
  • 正文 我和宋清朗相戀三年姓建,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片缤苫。...
    茶點(diǎn)故事閱讀 38,100評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡速兔,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出活玲,到底是詐尸還是另有隱情涣狗,我是刑警寧澤,帶...
    沈念sama閱讀 33,738評(píng)論 4 324
  • 正文 年R本政府宣布舒憾,位于F島的核電站镀钓,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏镀迂。R本人自食惡果不足惜丁溅,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,293評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望探遵。 院中可真熱鬧窟赏,春花似錦、人聲如沸箱季。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,289評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)藏雏。三九已至拷况,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間掘殴,已是汗流浹背赚瘦。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,517評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留奏寨,地道東北人蚤告。 一個(gè)月前我還...
    沈念sama閱讀 45,547評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像服爷,于是被迫代替她去往敵國(guó)和親杜恰。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,834評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容