原生JS拖拽改變元素大小

2021-09-13 03:24:24 字數 987 閱讀 7547

js運動,js動畫,js拖拽。

我們在之前了解過拖拽的原理,其實利用這個原理我們能夠實現很多效果。今天就來介紹一下,利用拖拽方法來改變元素的大小。 這個效果其實非常常見,比如說我們可以將滑鼠放在瀏覽器的邊邊上,然後瀏覽器游標就會變成可以拖拽的樣子,我們可以往左或往右拖拽。我們來實現這個效果。 原理: 先看一張圖:

滑鼠只能放在左右的綠色框中才能拖拽,那麼我們分別要做這幾件事:

1、利用判斷語句判斷滑鼠是放在左邊還是右邊的框中。

2、往右拖拽不改變元素的offsetleft的值,往左拖拽改變了offsetleft的值。

3、使用判斷語句當滑鼠在左邊拖拽時發生的情況,當在右邊拖拽發生的情況。

4、拖拽過程中,改變的值與元素的offsetleft,元素的寬,滑鼠的位置都有關係。

實現過程:

說明: 1、首先對元素的寬,滑鼠的位置,以及元素的offsetleft值進行變數宣告

2、判斷滑鼠的位置是在左邊還是在右邊

3、當滑鼠在左邊拖拽時,改變的是元素的寬度以及元素離文件的距離。因此也就是改變了元素的width和left的值;當滑鼠在右邊拖拽時,改變的只是元素本身的寬度

4、odiv.style.width = disw - ( ev.clientx - disx ) + 『px』;這段**的意思是:當往左邊拖拽時,運動過程中,與文件的距離,滑鼠的位置ev.clientx的值是小於onmousedown時的值的,ev.clientx-disx是乙個負值。而這個時候元素的寬度是增加的,增加的值是ev.clentx-之前的值。所以這個時候要用元素寬度減去這個負值才是正值。同理,這個時候元素離文件的距離時減少的,因此是相加乙個負值

5、當滑鼠在右邊拖拽時,元素的offsetleft不變,所以不用操作;元素的寬度是增加的,這個時候ev.clientx的值是大於之前disx的值的,用ev.clientx-disx是乙個正值,增加的職業是這個正值,因此用元素寬度直接加上這個正值即可。

原生JS拖拽

想要讓整個元素移動需要三個事件 滑鼠按下 onmousedown 滑鼠移動 onmousemove 滑鼠抬起 onmouseup html 登入會員 關閉使用者名稱 登入密碼 登入會員 頁面效果如下 jsvar login document.queryselector login 獲取整個彈框的內容...

原生js實現拖拽盒子

盒子必須是絕對定位的盒子 滑鼠在盒子內部按下時獲得相對座標。事件物件在頁面的位置減去盒子距離body的距離 滑鼠移動時,使得盒子的位置發生變化 滑鼠鬆開時,不再拖動 移動事件失效 lang zh charset utf 8 name viewport content width device wid...

js操作元素導致元素錯位和大小改變

使用js迴圈的方式批量控制元素的大小時結果往往不盡如人意。我總結了一條規律 在乙個迴圈體內不可以同時存在一下兩種操作,否則容易導致元素錯位或大小改變 1.對元素的offsetwidth offsetheight等與大小 位置有關的屬性的訪問 2.對元素的移動 改變大小 包括可能間接導致元素移動和改變...