1. 程式人生 > 其它 >P1850 [NOIP2016 提高組] 換教室

P1850 [NOIP2016 提高組] 換教室

本文例項為大家分享了實現div高度可拖拽的具體程式碼,供大家參考,具體內容如下

這裡有一個現成的demo,可以實現頁面div的拖拽功能,但是和我想要的效果不是很一樣,所以說後邊有根據我的實際需求又重新修改了一下,先看一下現在的demo效果。

<template>
  <div id="eagleMapContainer" style="border: 1px solid red;overflow-y: auto;" title="">
    <div id="tz" @mousedown="dragEagle" style="border: 1px solid blue;">
      <div title="拖動調整大小" id="move_tz" style="border: 1px solid green;"></div>
    </div>
  </div>
</template>

<script>
  export default {
    name: "eagleMap",data() {
      return {}
    },methods: {
      dragEagle: function (e) {
        var targetDiv = document.getElementById('eagleMapContainer'); 
        //得到點選時該地圖容器的寬高:
        var targetDivHeight = targetDiv.offsetHeight;
        var startX = e.clientX;
        var startY = e.clientY;
        var _this = this;
        document.onmousemove = function (e) {
          e.preventDefault();
          //得到滑鼠拖動的寬高距離:取絕對值
          var distX = Math.abs(e.clientX - startX);
          var distY = Math.abs(e.clientY - startY);
          //往上方拖動:
          if (e.clientY < startY) {
            targetDiv.style.height = targetDivHeight + distY + 'px';
          }
          //往下方拖動:
          if (e.clientX < startX && e.clientY > startY) {
            targetDiv.style.height = (targetDivHeight - distY) + 'px';
          }
          if (parseInt(targetDiv.style.height) >= 300) {
            targ
etDiv.style.height = 300 + 'px'; } if (parseInt(targetDiv.style.height) <= 150) { targetDiv.style.height = 150 + 'px'; } } document.onmouseup = function () { document.onmousemove = null; } } },}; </script> <style scoped> #eagleMapContainer { position: absolute; left: 13%; bottom: 10px; z-index: 200; overflow: hidden; visibility: visible; width: 200px; height: 200px; } #tz { position: absolute; right: 1px; kXJvn
top: 1px; width: 27px; height: 20px; cursor: ne-resize; z-index: 200001; background-image: url(""); } #tz:hover { background-color: #666; } #move_tz { position: absolute; right: 0px; top: 0px; width: 27px; height: 20px; cursor: ne-resize; z-index: 100; background-image: url(""); background-position: 0px 0px; } </style>

vue實現div高度可拖拽

但是這個效果和我想要的不是很一樣,所以得稍微改造了一下。

我想要效果是: 我有一個div,裡面包含了很多小方塊列表,因為超出設定了超出滾動,所以是在有滾動條的div上新增實現高度變化的拖拽。

vue實現div高度可拖拽

接下來就是改造一下上邊的demo,簡單點,直接上程式碼:

在上邊需要拖拽的div下面新增一個div,就是點到這個div開始實現拖拽功能。

<!-- 拖拉拽的小框 -->
    <div id="tz" @mousedown="dragEagle">
      <div title="拖動調整大小" id="move_tz"></div>
    </div&gt;

需要根據拖拽實現高度變化的div設定一個id,假設為 “fuDiv”,然後編寫方法。

// 拖拉
      dragEagle(e) {
        var targetDiv = document.getElementById('fuDiv');
        //得到點選時該地圖容器的寬高:
        var targetDivHeight = targetDiv.offsetHeight;
        var startX = e.clientX;
        var kXJvnstartY = e.clientY;
        var _this = this;
        document.onmousemove = function (e) {
          e.preventDefault();
          //得到滑鼠拖動的寬高距離:取絕對值
          var distY = Math.abs(e.clientY - startY);

          //往上方拖動:
          if (e.clientY < startY) {
            targetDiv.style.height = targetDivHeight - distY + 'px';
          }
          //往下方拖動:
          if (e.clientX < startX && e.clientY > startY) {
            targetDiv.style.height = (targetDivHeight + distY) + 'px';
          }
          if (parseInt(targetDiv.style.height) >= 320) {
            targetDiv.style.height = 320 + 'px';
          }
          if (parseInt(targetDiv.style.height) <= 160) {
            targetDiv.style.height = 160 + 'px';
          }
        }
        document.onmouseup = function () {
          document.onmousemove = null;
        }
      },

然後給他們設定一下樣式,其實這個地方就隨意了,根據自己喜好來。

  #tz {
    width: 100%;
    height: 5px;
    cursor: s-resize;
    z-index: 200001;
  }
  
  #move_tz {
    width: 100%;
    height: 5px;
    cursor: s-resize;
    z-index: 100;
    background-image: url("");
    background-position: 0px 0px;
  }

最後效果:

vue實現div高度可拖拽

效果不是特別的好,還有很多地方是值得優化以下的,暫時不寫了。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。