亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

JavaScript實(shí)現(xiàn)鼠標(biāo)拖拽調(diào)整div大小

 更新時間:2021年03月07日 06:51:00   作者:BDawn  
這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)鼠標(biāo)拖拽調(diào)整div大小,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了JavaScript實(shí)現(xiàn)鼠標(biāo)拖拽調(diào)整div大小的具體代碼,供大家參考,具體內(nèi)容如下

實(shí)現(xiàn)思路:

  • 根據(jù)鼠標(biāo)位置改變鼠標(biāo)樣式
  • 當(dāng)鼠標(biāo)在div的邊緣和四個角時顯示不同的樣式,通過cursor修改
  • 當(dāng)鼠標(biāo)在div的邊緣和四個角按下時記錄具體坐標(biāo)點(diǎn)位置, 并開始根據(jù)鼠標(biāo)的移動修改div的尺寸
  • 鼠標(biāo)松開時結(jié)束尺寸修改

代碼實(shí)現(xiàn):

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Title</title>
 <style>
  body, html {
   width: 100%;
   height: 100%;
   margin: 0;
  }

  #container {
   width: 200px;
   height: 200px;
   padding: 15px;
   border: #00cdcd 2px solid;
   box-sizing: border-box;
  }

  .item {
   cursor: default;
   width: 100%;
   height: 100%;
   background: #757575;
  }
 </style>
</head>
<body id="body">
<div id="container">
 <div class="item"></div>
</div>
<script>
 //需要調(diào)整尺寸的div
 let c = document.getElementById('container')
 // body監(jiān)聽移動事件
 document.getElementById('body').addEventListener('mousemove', move)
 // 鼠標(biāo)按下事件
 c.addEventListener('mousedown', down)
 // 鼠標(biāo)松開事件
 document.getElementById('body').addEventListener('mouseup', up)

 // 是否開啟尺寸修改
 let resizeable = false
 // 鼠標(biāo)按下時的坐標(biāo),并在修改尺寸時保存上一個鼠標(biāo)的位置
 let clientX, clientY
 // div可修改的最小寬高
 let minW = 8, minH = 8
 // 鼠標(biāo)按下時的位置,使用n、s、w、e表示
 let direc = ''

 // 鼠標(biāo)松開時結(jié)束尺寸修改
 function up() {
  resizeable = false
 }

 // 鼠標(biāo)按下時開啟尺寸修改
 function down(e) {
  let d = getDirection(e)
  // 當(dāng)位置為四個邊和四個角時才開啟尺寸修改
  if (d !== '') {
   resizeable = true
   direc = d
   clientX = e.clientX
   clientY = e.clientY
  }
 }

 // 鼠標(biāo)移動事件
 function move(e) {
  let d = getDirection(e)
  let cursor
  if (d === '') cursor = 'default';
  else cursor = d + '-resize';
  // 修改鼠標(biāo)顯示效果
  c.style.cursor = cursor;
  // 當(dāng)開啟尺寸修改時,鼠標(biāo)移動會修改div尺寸
  if (resizeable) {
   // 鼠標(biāo)按下的位置在右邊,修改寬度
   if (direc.indexOf('e') !== -1) {
    c.style.width = Math.max(minW, c.offsetWidth + (e.clientX - clientX)) + 'px'
    clientX = e.clientX
   }

   // 鼠標(biāo)按下的位置在上部,修改高度
   if (direc.indexOf('n') !== -1) {
    c.style.height = Math.max(minH, c.offsetHeight + (clientY - e.clientY)) + 'px'
    clientY = e.clientY
   }
   // 鼠標(biāo)按下的位置在底部,修改高度
   if (direc.indexOf('s') !== -1) {
    c.style.height = Math.max(minH, c.offsetHeight + (e.clientY - clientY)) + 'px'
    clientY = e.clientY
   }

   // 鼠標(biāo)按下的位置在左邊,修改寬度
   if (direc.indexOf('w') !== -1) {
    c.style.width = Math.max(minW, c.offsetWidth + (clientX - e.clientX)) + 'px'
    clientX = e.clientX
   }

  }
 }

 // 獲取鼠標(biāo)所在div的位置
 function getDirection(ev) {
  let xP, yP, offset, dir;
  dir = '';

  xP = ev.offsetX;
  yP = ev.offsetY;
  offset = 10;

  if (yP < offset) dir += 'n';
  else if (yP > c.offsetHeight - offset) dir += 's';
  if (xP < offset) dir += 'w';
  else if (xP > c.offsetWidth - offset) dir += 'e';

  return dir;
 }
</script>
</body>
</html>

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 用JS實(shí)現(xiàn)的一個include函數(shù)

    用JS實(shí)現(xiàn)的一個include函數(shù)

    用JS實(shí)現(xiàn)的一個include函數(shù)...
    2007-07-07
  • JavaScript中使用Async實(shí)現(xiàn)異步控制

    JavaScript中使用Async實(shí)現(xiàn)異步控制

    async提供了很多函數(shù)用于異步流程控制,下面是async核心的幾個函數(shù),大家通過本文學(xué)習(xí)下,對使用async 實(shí)現(xiàn)異步控制相關(guān)知識,感興趣的朋友一起看看吧
    2017-08-08
  • javascript添加前置0(補(bǔ)零)的幾種方法

    javascript添加前置0(補(bǔ)零)的幾種方法

    很多時候?yàn)榱孙@示格式,需要在某一字符串不滿位的情況下進(jìn)行前補(bǔ)0操作。下面這篇文章就給大家主要介紹了javascript添加前置0(補(bǔ)零)的幾種方法,文中給出了詳細(xì)的示例代碼,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-01-01
  • javascript,jquery閉包概念分析

    javascript,jquery閉包概念分析

    偶爾聽人說javascript閉包,讓我聯(lián)想起以前學(xué)編譯原理和數(shù)字邏輯里講的閉包,以前上課講的閉包很難懂,而且含有遞歸的意思在里面,現(xiàn)在不想再查看里面的閉包概念。
    2010-06-06
  • JavaScript的事件機(jī)制詳解

    JavaScript的事件機(jī)制詳解

    事件是將JavaScript腳本與網(wǎng)頁聯(lián)系在一起的主要方式,是JavaScript中最重要的主題之一。本文將詳細(xì)探討JavaScript的事件機(jī)制,并對比分析了瀏覽器之間的不同,具體內(nèi)容包括事件流、事件處理程序綁定方式、事件對象等。
    2017-01-01
  • Javascript 詳解封裝from表單數(shù)據(jù)為json串進(jìn)行ajax提交

    Javascript 詳解封裝from表單數(shù)據(jù)為json串進(jìn)行ajax提交

    這篇文章主要介紹了Javascript 詳解封裝from表單數(shù)據(jù)為json串進(jìn)行ajax提交的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • c#程序員對TypeScript的認(rèn)識過程

    c#程序員對TypeScript的認(rèn)識過程

    本文向大家詳細(xì)展示了從C#程序員的視角學(xué)習(xí)TypeScript的過程,主要是針對這兩種語言的異同進(jìn)行了簡單的對比學(xué)習(xí),希望對大家能夠有所幫助。
    2015-06-06
  • JavaScript Archive Network 集合

    JavaScript Archive Network 集合

    JavaScript Archive Network 集合...
    2007-05-05
  • js中new一個對象的過程

    js中new一個對象的過程

    本文主要介紹了js中new一個對象的過程。具有很好的參考價值,下面跟著小編一起來看下吧
    2017-02-02
  • BootStrap組件之進(jìn)度條的基本用法

    BootStrap組件之進(jìn)度條的基本用法

    bootstrap組件在前端開發(fā)中經(jīng)常會用到,今天小編通過本文給大家分享bootstrap組件之進(jìn)度條的基本用法,需要的朋友參考下吧
    2017-01-01

最新評論