左右布局,可拖拽重新布局

先看效果:


左右布局可拖拽.gif
<div id="metadata-box">
  <div id="left">左边的div</div>
  <div id="middle"></div>
  <div id="right">右边的div</div>
</div>

  methods: {
    $dragControllerDiv() {
      // debugger
      const resizeBtn = document.getElementById('resize-btn')
      const left = document.getElementById('left')
      const middle = document.getElementById('middle')
      const right = document.getElementById('right')
      const box = document.getElementById('metadata-box')

      left.style.width = this.leftBoxWidth * 1 + 'px'
      right.style.width = (box.clientWidth - this.leftBoxWidth - 24) + 'px'

      resizeBtn.onmousedown = (resizeEvent) => {
        const startX = resizeEvent.clientX
        middle.left = middle.offsetLeft
        document.onmousemove = (documentEvent) => {
          const endX = documentEvent.clientX
          let moveLen = middle.left + (endX - startX)
          const maxT = box.clientWidth - middle.offsetWidth
          if (moveLen < 200) moveLen = 200
          if (moveLen > maxT - 500) moveLen = maxT - 500
          left.style.width = moveLen + 'px'
          right.style.width = (box.clientWidth - moveLen - 24) + 'px'
        }
        document.onmouseup = () => {
          document.onmousemove = null
          document.onmouseup = null
          setItem('metaDataLeftBoxWidth', left.clientWidth)
          if (resizeBtn.releaseCapture) resizeBtn.releaseCapture()
        }
        if (resizeBtn.setCapture) resizeBtn.setCapture()
        return false
      }
    }
  },
  mounted() {
    this.$dragControllerDiv()
  },
  created() {
    this.leftBoxWidth = getItem('metaDataLeftBoxWidth') || 360
  }
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容