js實(shí)現(xiàn)圖片拖動(dòng)改變順序附圖
更新時(shí)間:2014年05月13日 17:57:37 作者:
需要改變多個(gè)元素的位置,可以通過元素拖動(dòng)來實(shí)現(xiàn),下面以圖片拖動(dòng)為例,用jQuery來實(shí)現(xiàn),需要的朋友可以參考下
在web頁面中,需要改變多個(gè)元素的位置,可以通過元素拖動(dòng)來實(shí)現(xiàn)。HTML5中加入了一個(gè)全局屬性draggable,通過設(shè)置true/false來控制元素是否可拖動(dòng)。
下面以圖片拖動(dòng)為例,用jQuery來實(shí)現(xiàn):頁面上有多個(gè)圖片,把一個(gè)圖片拖動(dòng)到其他兩個(gè)圖片中間,就可以將這個(gè)圖片的位置插入到兩圖之間。
<!DOCTYPE html>
<html>
<head>
<style>
.img-div img {
width:200px;
height:200px;
float: left;
}
.img-div {
float: left;
}
.drop-left,.drop-right {
width: 50px;
height: 200px;
float: left;
}
</style>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>
<script>
$(document).ready(function() {
// 正在拖動(dòng)的圖片的父級(jí)DIV
var $srcImgDiv = null;
// 開始拖動(dòng)
$(".img-div img").bind("dragstart", function() {
$srcImgDiv = $(this).parent();
});
// 拖動(dòng)到.drop-left,.drop-right上方時(shí)觸發(fā)的事件
$(".drop-left,.drop-right").bind("dragover", function(event) {
// 必須通過event.preventDefault()來設(shè)置允許拖放
event.preventDefault();
});
// 結(jié)束拖動(dòng)放開鼠標(biāo)的事件
$(".drop-left").bind("drop", function(event) {
event.preventDefault();
if($srcImgDiv[0] != $(this).parent()[0]) {
$(this).parent().before($srcImgDiv);
}
});
$(".drop-right").bind("drop", function(event) {
event.preventDefault();
if($srcImgDiv[0] != $(this).parent()[0]) {
$(this).parent().after($srcImgDiv);
}
});
});
</script>
</head>
<body>
<div class="img-div">
<div class="drop-left"></div>
<img src="http://photos.tuchong.com/38538/f/6864556.jpg" draggable="true">
<div class="drop-right"></div>
</div>
<div class="img-div">
<div class="drop-left"></div>
<img src="http://photos.tuchong.com/349669/f/6695960.jpg" draggable="true">
<div class="drop-right"></div>
</div>
<div class="img-div">
<div class="drop-left"></div>
<img src="http://photos.tuchong.com/349669/f/6683901.jpg" draggable="true">
<div class="drop-right"></div>
</div>
<div class="img-div">
<div class="drop-left"></div>
<img src="http://photos.tuchong.com/349669/f/5121337.jpg" draggable="true">
<div class="drop-right"></div>
</div>
</body>
</html>
dragstart是開始拖動(dòng)元素的事件,dragover是拖動(dòng)到元素上方的事件,drop是拖動(dòng)結(jié)束松開鼠標(biāo)的事件。
draggable="true"表示img元素是可以拖動(dòng)的,不過實(shí)際上img默認(rèn)就是可拖動(dòng)的,所以這個(gè)屬性也可以去掉,如果要拖動(dòng)div元素那么就需要設(shè)置draggable="true"。
class為drop-left和drop-right的div元素放在圖片的左右側(cè),用于接收其他圖片拖動(dòng)到這個(gè)位置。
下面以圖片拖動(dòng)為例,用jQuery來實(shí)現(xiàn):頁面上有多個(gè)圖片,把一個(gè)圖片拖動(dòng)到其他兩個(gè)圖片中間,就可以將這個(gè)圖片的位置插入到兩圖之間。
復(fù)制代碼 代碼如下:
<!DOCTYPE html>
<html>
<head>
<style>
.img-div img {
width:200px;
height:200px;
float: left;
}
.img-div {
float: left;
}
.drop-left,.drop-right {
width: 50px;
height: 200px;
float: left;
}
</style>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>
<script>
$(document).ready(function() {
// 正在拖動(dòng)的圖片的父級(jí)DIV
var $srcImgDiv = null;
// 開始拖動(dòng)
$(".img-div img").bind("dragstart", function() {
$srcImgDiv = $(this).parent();
});
// 拖動(dòng)到.drop-left,.drop-right上方時(shí)觸發(fā)的事件
$(".drop-left,.drop-right").bind("dragover", function(event) {
// 必須通過event.preventDefault()來設(shè)置允許拖放
event.preventDefault();
});
// 結(jié)束拖動(dòng)放開鼠標(biāo)的事件
$(".drop-left").bind("drop", function(event) {
event.preventDefault();
if($srcImgDiv[0] != $(this).parent()[0]) {
$(this).parent().before($srcImgDiv);
}
});
$(".drop-right").bind("drop", function(event) {
event.preventDefault();
if($srcImgDiv[0] != $(this).parent()[0]) {
$(this).parent().after($srcImgDiv);
}
});
});
</script>
</head>
<body>
<div class="img-div">
<div class="drop-left"></div>
<img src="http://photos.tuchong.com/38538/f/6864556.jpg" draggable="true">
<div class="drop-right"></div>
</div>
<div class="img-div">
<div class="drop-left"></div>
<img src="http://photos.tuchong.com/349669/f/6695960.jpg" draggable="true">
<div class="drop-right"></div>
</div>
<div class="img-div">
<div class="drop-left"></div>
<img src="http://photos.tuchong.com/349669/f/6683901.jpg" draggable="true">
<div class="drop-right"></div>
</div>
<div class="img-div">
<div class="drop-left"></div>
<img src="http://photos.tuchong.com/349669/f/5121337.jpg" draggable="true">
<div class="drop-right"></div>
</div>
</body>
</html>
dragstart是開始拖動(dòng)元素的事件,dragover是拖動(dòng)到元素上方的事件,drop是拖動(dòng)結(jié)束松開鼠標(biāo)的事件。
draggable="true"表示img元素是可以拖動(dòng)的,不過實(shí)際上img默認(rèn)就是可拖動(dòng)的,所以這個(gè)屬性也可以去掉,如果要拖動(dòng)div元素那么就需要設(shè)置draggable="true"。
class為drop-left和drop-right的div元素放在圖片的左右側(cè),用于接收其他圖片拖動(dòng)到這個(gè)位置。

您可能感興趣的文章:
- js 鼠標(biāo)拖動(dòng)對(duì)象 可讓任何div實(shí)現(xiàn)拖動(dòng)效果
- javascript 事件處理、鼠標(biāo)拖動(dòng)效果實(shí)現(xiàn)方法詳解
- js實(shí)現(xiàn)可拖動(dòng)DIV的方法
- 比較精簡的Javascript拖動(dòng)效果函數(shù)代碼
- JS實(shí)現(xiàn)彈出浮動(dòng)窗口(支持鼠標(biāo)拖動(dòng)和關(guān)閉)實(shí)例詳解
- js實(shí)現(xiàn)懸浮窗效果(支持拖動(dòng))
- JS拖動(dòng)鼠標(biāo)畫出方框?qū)崿F(xiàn)鼠標(biāo)選區(qū)的方法
- JS實(shí)現(xiàn)可縮放、拖動(dòng)、關(guān)閉和最小化的浮動(dòng)窗口完整實(shí)例
- 鼠標(biāo)拖動(dòng)動(dòng)態(tài)改變表格的寬度的js腳本 兼容ie/firefox
- JS實(shí)現(xiàn)音量控制拖動(dòng)
相關(guān)文章
javascript計(jì)算星座屬相(十二生肖屬相)示例代碼
本文介紹了使用javascript計(jì)算星座和屬相的示例,這個(gè)可以用在用戶注冊(cè)的時(shí)候顯示出來,大家參考使用吧2014-01-01ES6?關(guān)鍵字?let?和?ES5?及關(guān)鍵字?var?的區(qū)別解析
var可以穿透控制語句、條件語句這樣的作用域,導(dǎo)致變量沖突經(jīng)常發(fā)生,這篇文章主要介紹了ES6?關(guān)鍵字?let?和?ES5?及關(guān)鍵字?var?的區(qū)別,需要的朋友可以參考下2022-09-09javascript獲取指定區(qū)間范圍隨機(jī)數(shù)的方法
下面小編就為大家?guī)硪黄猨avascript獲取指定區(qū)間范圍隨機(jī)數(shù)的方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-09-09終于解決了IE8不支持?jǐn)?shù)組的indexOf方法
今天,測(cè)試報(bào)過來一個(gè)js bug, 在IE8下有個(gè)js錯(cuò)誤,但是在其它瀏覽器下(Firefox, Chrome, IE9)下面都很正常。后來調(diào)試發(fā)現(xiàn)原因是在IE8下,js數(shù)組沒有indexOf方法。2013-04-04使用uniapp打包微信小程序時(shí)主包和vendor.js過大解決(uniCloud的插件分包)
每個(gè)使用分包小程序必定含有一個(gè)主包,所謂的主包,即放置默認(rèn)啟動(dòng)頁面/TabBar頁面,以及一些所有分包都需用到公共資源/JS 腳本,下面這篇文章主要給大家介紹了關(guān)于使用uniapp打包微信小程序時(shí)主包和vendor.js過大解決的相關(guān)資料,,需要的朋友可以參考下2023-02-02IE與Firefox在JavaScript上的7個(gè)不同寫法小結(jié)
盡管那需要用長串的、沉悶的不同分支代碼來應(yīng)付不同瀏覽器的日子已經(jīng)過去,偶爾還是有必要做一些簡單的區(qū)分和目標(biāo)檢測(cè)來確保某塊代碼能在用戶的機(jī)器上正常運(yùn)行。2009-09-09inquirer.js一個(gè)用戶與命令行交互的工具詳解
這篇文章主要介紹了inquirer.js一個(gè)用戶與命令行交互的工具詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-05-05