jquery實(shí)現(xiàn)拖拽小方塊效果
今天來(lái)講一個(gè)很常用的拖拽功能,主要是利用一點(diǎn)css,js和jquery,很簡(jiǎn)單但同時(shí)也很重要,掌握好才是最關(guān)鍵的!
下面來(lái)看下效果圖:
這里可以看到,在鼠標(biāo)hover的時(shí)候會(huì)有一個(gè)透明度的變化和一個(gè)盒子陰影!并且在右下角會(huì)實(shí)時(shí)的顯示出小方塊移動(dòng)時(shí)橫縱坐標(biāo)的變化!

可以看到有一個(gè)盒子陰影

在鼠標(biāo)單擊按住的時(shí)候會(huì)變紅,然后可以拖動(dòng)小塊隨意移動(dòng)

我們?cè)诳创a之前可以先了解下jquery中的基本知識(shí)(選擇器,css控制器什么的)和offset()和clientX,clientY。思路很簡(jiǎn)單,就是分別監(jiān)聽(tīng)鼠標(biāo)的 mousedown,mouseup,mousemove這三個(gè)事件,通過(guò)判斷div移動(dòng)之前的坐標(biāo),div移動(dòng)之后的坐標(biāo)(offset獲得)和鼠標(biāo)移動(dòng)前后的坐標(biāo)(clientX和clientY獲得)判斷div在body里的具體坐標(biāo)位置,然后設(shè)置div在body里左邊和上邊的距離(left,top)。代碼思路在代碼里很詳細(xì)!希望大家好好理解!
附上代碼:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>拖動(dòng)圖片</title>
<style>
html {
height: 100%;
}
body {
margin: 0px;
padding: 0rem;
border: 0rem;
height: 100%;
width: 100%;
position: relative;
/* 取消默認(rèn)的輸入事件,不然會(huì)一直出現(xiàn)‘I'一樣的光標(biāo) */
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
#drag {
height: 200px;
width: 200px;
background: teal;
border: none;
border-radius: 1rem;
/* 一定要是absolute */
position: absolute;
opacity: 0.8;
}
#drag:hover {
box-shadow: 0 8px 12px 0 rgba(16, 49, 231, 0.4);
opacity: 1;
cursor: pointer;
}
input {
width: 12rem;
height: 2rem;
font-size: 1.5rem;
border: 2px solid #aaa;
}
#input1 {
display: block;
position: absolute;
bottom: 1.2rem;
right: 1rem;
}
#input2 {
display: block;
position: absolute;
bottom: 1.2rem;
right: 16rem;
}
</style>
</head>
<body>
<div id="drag">
</div>
<input type="text" id="input1" name="y" placeholder="y軸的坐標(biāo)為">
<input type="text" id="input2" name="x" placeholder="x軸的坐標(biāo)為">
<!-- 引入內(nèi)部jquery,大家使用可以引入CDN -->
<script src="jquery-3.5.1.min.js"></script>
<script>
var client_x = 0;
var client_y = 0;
var offset_x = 0;
var offset_y = 0;
var moving = false;
// 利用jquery獲得div這個(gè)元素
var drag = $('#drag');
// 添加監(jiān)聽(tīng)事件
drag.on({
// 鼠標(biāo)抬起事件
mouseup: function(e) {
moving = false;
// 為div添加一個(gè)css樣式
$("#drag").css("background", 'teal');
},
// 鼠標(biāo)按下事件
mousedown: function(e) {
moving = true;
// this代表的是 div
var offset = $(this).offset();
// offset() 方法設(shè)置或返回被選元素相對(duì)于文檔的偏移坐標(biāo)
offset_x = offset.left;
offset_y = offset.top;
// clientX 事件屬性返回當(dāng)事件被觸發(fā)時(shí)鼠標(biāo)指針相對(duì)于瀏覽器頁(yè)面的水平坐標(biāo)
client_x = e.clientX;
// clientX 事件屬性返回當(dāng)事件被觸發(fā)時(shí)鼠標(biāo)指針相對(duì)于瀏覽器頁(yè)面的垂直坐標(biāo)
client_y = e.clientY;
drag.css("background", 'rgb(179, 43, 19)');
},
// 鼠標(biāo)移動(dòng)事件
mousemove: function(e) {
if (moving) {
// 為div添加一個(gè)css樣式
drag.css({
left: offset_x + (e.clientX - client_x),
top: offset_y + (e.clientY - client_y)
});
// 設(shè)置并顯示input標(biāo)簽內(nèi)x,y軸的坐標(biāo)
$(':input[name="x"]').val(offset_x + (e.clientX - client_x));
$(':input[name="y"]').val(offset_y + (e.clientY - client_y));
drag.css("cursor", "pointer");
}
}
});
</script>
</body>
</html>
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- JQuery Dialog(JS 模態(tài)窗口,可拖拽的DIV)
- JQuery UI的拖拽功能實(shí)現(xiàn)方法小結(jié)
- jQuery拖拽div實(shí)現(xiàn)思路
- jQuery使用drag效果實(shí)現(xiàn)自由拖拽div
- 如何使用jQuery Draggable和Droppable實(shí)現(xiàn)拖拽功能
- 簡(jiǎn)單的jquery拖拽排序效果實(shí)現(xiàn)代碼
- jQuery插件實(shí)現(xiàn)文件上傳功能(支持拖拽)
- JQuery之拖拽插件實(shí)現(xiàn)代碼
- jquery實(shí)現(xiàn)拖拽調(diào)整Div大小
- jQuery EasyUI API 中文文檔 - Draggable 可拖拽
相關(guān)文章
jQuery的ztree仿windows文件新建和拖拽功能的實(shí)現(xiàn)代碼
zTree 是一個(gè)依靠 jQuery 實(shí)現(xiàn)的多功能 “樹(shù)插件”。優(yōu)異的性能、靈活的配置、多種功能的組合是 zTree 最大優(yōu)點(diǎn)。這篇文章主要介紹了jQuery的ztree仿windows文件新建和拖拽功能的實(shí)現(xiàn)代碼,需要的朋友可以參考下2018-12-12
jquery插件之easing 動(dòng)態(tài)菜單
jQuery Easing Plugin 是一個(gè)簡(jiǎn)單的為對(duì)象擴(kuò)展高級(jí)屬性和選項(xiàng)的jQuery插件。2010-08-08
JQuery 控制內(nèi)容長(zhǎng)度超出規(guī)定長(zhǎng)度顯示省略號(hào)
這篇文章主要介紹JQuery如何實(shí)現(xiàn)控制內(nèi)容長(zhǎng)度超出規(guī)定長(zhǎng)度顯示省略號(hào),需要的朋友可以參考下2014-05-05
jQuery如何將選中的對(duì)象轉(zhuǎn)化為原始的DOM對(duì)象
在一個(gè)頁(yè)面上選擇元素返回的集合是jQuery對(duì)象而不是原始的DOM對(duì)象,那么如何將其轉(zhuǎn)為DOM對(duì)象呢?下面有個(gè)不錯(cuò)的方法,大家可以嘗試操作下2014-06-06
jQuery EasyUI 中文API Layout(Tabs)
發(fā)布jQuery EasyUI 中文API—Layout(Tabs)總結(jié),需要的朋友可以參考下。2010-04-04
jQuery實(shí)現(xiàn)默認(rèn)是閉合的FAQ展開(kāi)效果菜單
這篇文章主要介紹了jQuery實(shí)現(xiàn)默認(rèn)是閉合的FAQ展開(kāi)效果菜單,涉及jQuery中slideUp及slideDown用法的使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-09-09
input:checkbox多選框?qū)崿F(xiàn)單選效果跟radio一樣
checkbox是多選,怎么才能讓他變成單選,效果跟radio一樣呢,本菜鳥(niǎo)就自己寫(xiě)了個(gè)小程序,代碼很簡(jiǎn)單2014-06-06

