日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

jquery+css實現移動端元素拖動排序_jquery

作者:sdvbbc ? 更新時間: 2022-04-27 編程語言

本文實例為大家分享了jquery+css實現移動端元素拖動排序的具體代碼,供大家參考,具體內容如下

1.近期需要實現一個選項進行拖動排序的頁面,頁面如下:

2.JSP頁面代碼:

?
? ? 
? ? ? ?
? ? ? ? ? ?
? ? ? ? ? ? ? ?
? ? ? ? ? ?
? ? ? ? ? ?
? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ?
支XX代扣
? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ?
微XX代扣
? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ?
XXX銀行代扣
? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ?
AAA銀行代扣
? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ?
CCC銀行代扣
? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ?
SSS銀行代扣
? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ?
? ? ? ? ? ?
? ? ? ?
? ?

3.css樣式代碼

?body {
? ? ? ? ? ? background-color: #ffffff; ? ?
? ? ? ? ? ? padding: 0;
? ? ? ? ? ? margin: 0;
? ? ? ? }
? ? ? ? .main{
? ? ? ? ? ? width: 100%;
? ? ? ? ? ? height: 100%;
? ? ? ? ? ? box-sizing: border-box;
? ? ? ? ? ? padding: 0px;
? ? ? ? }
? ? ? ? .drag-div{
? ? ? ? ? ? width: 100%;
? ? ? ? ? ? height:100%;
? ? ? ? ? ? overflow:auto;
? ? ? ? ? ? position: absolute;
? ? ? ? }
? ? ? ? .others{
? ? ? ? ? ? width: 100%;
? ? ? ? ? ? height: auto;
? ? ? ? ? ? background-color: #ddd000;
? ? ? ? ? ? position: relative;
? ? ? ? }
? ? ? ? .drag-div-elem{
? ? ? ? ? ? border-left: 1px solid #dddddd;
? ? ? ? ? ? border-right: 1px solid #dddddd;
? ? ? ? ? ? border-bottom:1px solid #dddddd;
? ? ? ? ? ? border-top: 1px solid #dddddd;
? ? ? ? ? ? width: 100%;
? ? ? ? ? ? height: 50px;
? ? ? ? ? ? background-color: #ffffff;
? ? ? ? ? ? position: absolute;
? ? ? ? }
? ? ? ? .drag-first-elem{
? ? ? ? ? ? border-top: 1px solid #dddddd;
? ? ? ? }
? ? ? ? .payway-info{
? ? ? ? ? ? width: 80%;
? ? ? ? ? ? height: 100%;
? ? ? ? ? ? float: left;
? ? ? ? ? ? padding-left: 15px;
? ? ? ? ? ? text-align: left;
? ? ? ? ? ? line-height: 50px;
? ? ? ? ? ? font-size: 20px;
? ? ? ? }
? ? ? ? .drag-elem-btn{
? ? ? ? ? ? width: 20%;
? ? ? ? ? ? max-width:60px;
? ? ? ? ? ? height: 48px;
? ? ? ? ? ? float: right;
? ? ? ? ? ? padding: 10px;
? ? ? ? ? ? border: 0px;
? ? ? ? }
? ? ? ? .drag-elem-btn-icon{
? ? ? ? ? ? width: 100%;
? ? ? ? ? ? height: 100%;
? ? ? ? ? ? border-left: 0px;
? ? ? ? ? ? border-right: 0px;
? ? ? ? ? ? border-top: 4px solid #dddddd;
? ? ? ? ? ? border-bottom:4px solid #dddddd;
? ? ? ? ? ? padding-bottom: 8px;
? ? ? ? ? ? padding-top: 8px;
? ? ? ? ? ? background-clip:content-box;
? ? ? ? ? ? background-color: ?#dddddd;
? ? ? ? }
? ? ? ? .show-top{
? ? ? ? ? ? z-index: 20;
? ? ? ? ? ? filter:alpha(Opacity=70);
? ? ? ? ? ? -moz-opacity:0.7;
? ? ? ? ? ? opacity: 0.7;
? ? ? ? ? ? box-shadow:#000 0px 5px 6px 3px ;
? ? ? ? }
? ? ? ? .drag-inset-div{
? ? ? ? ? ? background-color: #dddddd;
? ? ? ? }

4.js代碼

/**
?*?
?*/
var isdrag = true; ?//是否移動
var topHeight = $(".others").css("height"); ?//頭部div的高度
var topHeightInt = 0;
var elementHeight = $(".drag-div-elem").css("height"); ?//每一個移動元素DIV的高度
var elementHeightInt = 0;
var halfElementHeightInt = 0;
var startEleCssTopInt;//元素div的起始時的top值
var lastTouchTempY = null;//上一次滑動時元素觸摸點坐標
var startTouchY; //起始時的觸摸點坐標
var choseEleNum = null; //選擇的是第幾個元素
var eleMoveDistance = 0; ? //選擇元素相對于其他元素的距離
var isNeedMoveEle = true; ? //其他元素是否需要移動
var theMaxNumberAttr = null; //元素最大的number值
var theMinNumberAttr = null; //元素最小的number值
var theMaxMoveScope = null; ?//可以移動的最大范圍 ?,最小范圍為topHeightInt;
?
//開始移動
function dragStart(e) {
? ? isdrag = true;
? ? e.preventDefault();
? ? startTouchY = e.originalEvent.targetTouches[0].pageY;
? ? var obj = $(e.target);
? ? var paywayEleObj = obj.parents(".drag-div-elem");
? ? choseEleNum = $(paywayEleObj).attr("number");
? ? var startTouchCssTop = $(paywayEleObj).css("top");
? ? if (undefined == startTouchCssTop || null == startTouchCssTop
? ? ? ? ? ? || "auto" == startTouchCssTop) {
? ? ? ? startEleCssTopInt = topHeightInt;
? ? } else {
? ? ? ? startEleCssTopInt = parseInt(startTouchCssTop.substring(0,
? ? ? ? ? ? ? ? startTouchCssTop.length - 2));
? ? }
? ? $(paywayEleObj).addClass("show-top");
}
function dragMove(e) {
? ? var direction = "up";
? ? e.preventDefault();
? //獲取移動的距離
? ? var moveTouchY = e.originalEvent.targetTouches[0].pageY; //獲取第一個觸點
? ? console.log("moveTouchY==="+moveTouchY);
? ? console.log("lastTouchTempY==="+lastTouchTempY);
? ? if (isdrag) {
? ? ? ? var obj = $(e.target);
? ? ? ? var paywayEleObj = obj.parents(".drag-div-elem");
? ? ? ? //判斷是不是在可移動的范圍內
? ? ? ? if(moveTouchY < topHeightInt || moveTouchY > theMaxMoveScope){
? ? ? ? ? ? return;
? ? ? ? }
? ? ? ? //此次滑動的距離
? ? ? ? var distance = moveTouchY - startTouchY;
? ? ? ? eleMoveDistance = eleMoveDistance + Math.abs((moveTouchY - (null == lastTouchTempY?startTouchY:lastTouchTempY)));
? ? ? ? if(null == lastTouchTempY){
? ? ? ? ? ? //向上滑動
? ? ? ? ? ? if(startTouchY > moveTouchY){
? ? ? ? ? ? ? ? direction = "up";
? ? ? ? ? ? }else{
? ? ? ? ? ? ? ? direction = "down";
? ? ? ? ? ? }
? ? ? ? }else{
? ? ? ? ? ? //向上滑動
? ? ? ? ? ? if(lastTouchTempY > moveTouchY){
? ? ? ? ? ? ? ? direction = "up";
? ? ? ? ? ? }else{
? ? ? ? ? ? ? ? direction = "down";
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? var newCssTop = startEleCssTopInt + distance;
? ? ? ? if(newCssTop<0){
? ? ? ? ? ? return;
? ? ? ? }
? ? ? ? $(paywayEleObj).css({"top":newCssTop+"px"});
? ? ? ? console.log("eleMoveDistance==="+eleMoveDistance);
? ? ? ? //向下移動
? ? ? ? if("down" == direction && parseInt(theMaxNumberAttr) > parseInt(choseEleNum)){
? ? ? ? ? ? if(isNeedMoveEle && eleMoveDistance < elementHeightInt && eleMoveDistance >= halfElementHeightInt){
? ? ? ? ? ? ? ? isNeedMoveEle = false;
? ? ? ? ? ? ? ? var autoUpEleNum = parseInt(choseEleNum) + 1;
? ? ? ? ? ? ? ? var autoUpEleCssTop = $(".drag-div-elem[number='"+autoUpEleNum+"']").css("top");
? ? ? ? ? ? ? ? var autoUpEleCssTopInt = parseInt(autoUpEleCssTop.substring(0,autoUpEleCssTop.length-2));
? ? ? ? ? ? ? ? var autoUpEleNewTop = autoUpEleCssTopInt - (elementHeightInt + 1);
? ? ? ? ? ? ? ? $(".drag-div-elem[number='"+autoUpEleNum+"']").css({"top":autoUpEleNewTop+"px"});
? ? ? ? ? ? ? ? //換number
? ? ? ? ? ? ? ? $(".drag-div-elem[number='"+autoUpEleNum+"']").attr("number",choseEleNum);
? ? ? ? ? ? ? ? $(paywayEleObj).attr("number",autoUpEleNum);
? ? ? ? ? ? ? ? choseEleNum = autoUpEleNum;
? ? ? ? ? ? }else if(eleMoveDistance >= elementHeightInt){
? ? ? ? ? ? ? ? eleMoveDistance = 0;
? ? ? ? ? ? ? ? isNeedMoveEle = true;
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? //向上移動
? ? ? ? if("up" == direction && parseInt(theMinNumberAttr) < parseInt(choseEleNum)){
? ? ? ? ? ? if(isNeedMoveEle && eleMoveDistance < elementHeightInt && eleMoveDistance >= halfElementHeightInt){
? ? ? ? ? ? ? ? isNeedMoveEle = false;
? ? ? ? ? ? ? ? var autoUpEleNum = parseInt(choseEleNum) - 1;
? ? ? ? ? ? ? ? var autoUpEleCssTop = $(".drag-div-elem[number='"+autoUpEleNum+"']").css("top");
? ? ? ? ? ? ? ? var autoUpEleCssTopInt = parseInt(autoUpEleCssTop.substring(0,autoUpEleCssTop.length-2));
? ? ? ? ? ? ? ? var autoUpEleNewTop = autoUpEleCssTopInt + (elementHeightInt + 1);
? ? ? ? ? ? ? ? $(".drag-div-elem[number='"+autoUpEleNum+"']").css({"top":autoUpEleNewTop+"px"});
? ? ? ? ? ? ? ? //換number
? ? ? ? ? ? ? ? $(".drag-div-elem[number='"+autoUpEleNum+"']").attr("number",choseEleNum);
? ? ? ? ? ? ? ? $(paywayEleObj).attr("number",autoUpEleNum);
? ? ? ? ? ? ? ? choseEleNum = autoUpEleNum;
? ? ? ? ? ? }else if(eleMoveDistance >= elementHeightInt){
? ? ? ? ? ? ? ? eleMoveDistance = 0;
? ? ? ? ? ? ? ? isNeedMoveEle = true;
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? lastTouchTempY = moveTouchY;
? ? }
}
function dragEnd(e) {
? ? e.preventDefault();
? ? isdrag = false;
? ? lastTouchTempY = null;
? ? var obj = $(e.target);
? ? var paywayEleObj = obj.parents(".drag-div-elem");
? ? $(paywayEleObj).removeClass("show-top");
? ? //修正移動的元素的top
? ? var number = $(paywayEleObj).attr("number");
? ? var top = 0 + ( elementHeightInt + 1 ) * (parseInt(number)-1);
? ? $(paywayEleObj).css({"top":(top+topHeightInt)+"px"});
}
$(function(){
? ? topHeightInt = parseInt(topHeight.substring(0, topHeight.length - 2));
? ? elementHeightInt = parseInt(elementHeight.substring(0,elementHeight.length-2));
? ? halfElementHeightInt = parseInt(elementHeightInt+2) / 2;
? ? var elementDivArr = $(".drag-div").find(".drag-div-elem");
? ? theMinNumberAttr = $(elementDivArr[0]).attr("number");
? ? for(var i=0;i

原文鏈接:https://blog.csdn.net/sdvjbc/article/details/85048388

欄目分類
最近更新