中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

vue中的可拖拽寬度div怎么實現

發布時間:2022-04-08 10:26:46 來源:億速云 閱讀:552 作者:iii 欄目:開發技術

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

主要思路

  • 在需要拖拽寬度的區域設置一個div,高度設為 100%,寬度盡量窄一些(也不要太窄,3~6px左右)

  • 在此div上綁定當“鼠標按下”時,觸發document綁定“鼠標移動”方法和"鼠標抬起"方法

  • 通過鼠標移動方法不斷獲取當前鼠標位置,設置需要變化大小div的寬高。

  • 鼠標抬起時取消鼠標移動方法和鼠標抬起方法的綁定。

<template>
  <div class="container" id="content_box">
    <div class="tab">左側Tab</div>
    <div class="menu" ref="menu">
      左側菜單
      <div class="menu-resize" ref="menuResize"></div>
    </div>
    <div class="content">
      中心區域
      <div class="opera" ref="opera">
        <div class="opera-resize" ref="operaResize"></div>
        操作區域
      </div>
    </div>
  </div>
</template>

<script>
export default {
  name: "dropWidth",
  mounted() {
    this.$nextTick(() => {
      this.dropSize();
    })
  },
  methods: {
    dropSize() {
      let that = this,
          menuWidth = 200,
          operaHeight = 200;
      this.$refs.menuResize.onmousedown = function () {
        document.onmousemove = function (e) {
          let clientX = e.clientX;
          // 最大寬度
          if(clientX>=330){
            clientX = 330;
          }
          // 最小寬度
          if(clientX<=230){
            clientX = 230;
          }
          // TODO 這里減的是最左側tab的寬度
          menuWidth = clientX - 30;
          that.$refs.menu.style.width = clientX - 30 +"px";
        }

        document.onmouseup = function () {
          console.log('當前寬度', menuWidth);
          document.onmousemove = null;
          document.onmouseup = null;
          that.releaseCapture && that.releaseCapture()
        }
      }

      this.$refs.operaResize.onmousedown = function () {
        document.onmousemove = function (e) {
          let clientY = e.clientY;
          console.log(clientY)
          // 最大寬度
          if(clientY<=100){
            clientY = 100;
          }
          // 最小寬度
          if(clientY>=300){
            clientY = 300;
          }
          operaHeight = clientY;
          // TODO 這里需要取反向
          that.$refs.opera.style.height = 400 - clientY +"px";
        }

        document.onmouseup = function () {
          console.log('當前寬度', operaHeight);
          document.onmousemove = null;
          document.onmouseup = null;
          that.releaseCapture && that.releaseCapture()
        }
      }
    }
  }
}
</script>

<style scoped>
.container {
  width: 1000px;
  height: 400px;
  border: 2px solid #dddddd;

  display: flex;
  justify-content: center;
}

.tab {
  width: 30px;
  height: 100%;
  background-color: #EC8C32;

  flex-shrink: 0;
  flex-grow: 0;
}

.menu {
  width: 200px;
  background-color: #AAB6E0;

  flex-shrink: 0;
  flex-grow: 0;
  position: relative;
}

.content {
  width: 100%;
  position: relative;
}

.opera {
  width: 100%;
  height: 200px;
  position: absolute;
  bottom: 0;
  background-color: #F2BE25;
}

.menu-resize {
  width: 5px;
  height: 100%;

  position: absolute;
  top: 0;
  right: 0;
  cursor: col-resize;
}

.opera-resize {
  width: 100%;
  height: 5px;
  position: absolute;
  top: 0;
  left: 0;
  cursor: row-resize;
}
</style>

實現效果

vue中的可拖拽寬度div怎么實現

到此,關于“vue中的可拖拽寬度div怎么實現”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

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

AI

建湖县| 芦溪县| 济源市| 孟州市| 武强县| 凤冈县| 河西区| 开封市| 金阳县| 南昌县| 邵武市| 汤原县| 德保县| 阳春市| 白山市| 锡林郭勒盟| 融水| 三台县| 长丰县| 尚义县| 泽普县| 平南县| 柘荣县| 沐川县| 阿荣旗| 杭州市| 彭山县| 岐山县| 博湖县| 扎鲁特旗| 忻城县| 贵州省| 林周县| 喀喇| 于田县| 香河县| 公主岭市| 卢湾区| 峨眉山市| 仪陇县| 泰安市|