日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
PHP+MySQL+jQuery實(shí)現(xiàn)隨意拖動(dòng)層

之前我有文章:jQuery實(shí)現(xiàn)拖動(dòng)布局并將排序結(jié)果保存到數(shù)據(jù)庫(kù),文中以項(xiàng)目為示例,講解了實(shí)現(xiàn)拖動(dòng)布局的方法。本文與之不同之處在于可以任意拖動(dòng)頁(yè)面位置,原理就是通過(guò)拖動(dòng)將拖動(dòng)后層的相對(duì)位置left,top和z-index三個(gè)參數(shù)更新到數(shù)據(jù)表中對(duì)應(yīng)的記錄,頁(yè)面通過(guò)CSS解析每個(gè)層不同的位置。請(qǐng)看具體實(shí)現(xiàn)步驟。

桐梓ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書(shū)未來(lái)市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)的ssl證書(shū)銷(xiāo)售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:028-86922220(備注:SSL證書(shū)合作)期待與您的合作!

準(zhǔn)備MySQL數(shù)據(jù)表

首先需要準(zhǔn)備一張表notes,用來(lái)記錄層的內(nèi)容,背景色和坐標(biāo)等信息。

 
 
 
 
  1. CREATE TABLE IF NOT EXISTS `notes` (   
  2.   `id` int(11) NOT NULL auto_increment,   
  3.   `content` varchar(200) NOT NULL,   
  4.   `color` enum('yellow','blue','green') NOT NULL default 'yellow',   
  5.   `xyz` varchar(100) default NULL,   
  6.   PRIMARY KEY  (`id`)   
  7. ) ENGINE=MyISAM  DEFAULT CHARSET=utf8;  

然后向表中插入幾條記錄,注意xyz字段表示的是層的xyz坐標(biāo)的組合,格式為"x|y|z"。

drag.php

在drag.php中,需要讀取notes表中的記錄,顯示在drag.php頁(yè)面中,代碼如下:

 
 
 
 
  1. include_once('connect.php'); //鏈接數(shù)據(jù)庫(kù)   
  2. $notes = '';     
  3. $left='';     
  4. $top='';     
  5. $zindex='';     
  6. $query = mysql_query("select * from notes order by id desc");   
  7. while($row=mysql_fetch_array($query)){   
  8.     list($left,$top,$zindex) = explode('|',$row['xyz']);    
  9.     $notes.= '   
  10.     
  11. .$zindex.'">   
  12.         '.$row['id'].'.'.htmlspecialchars($row['content']).'   
  13.     
';   
  • }  
  • 然后將讀取出來(lái)的$notes現(xiàn)在在div中。

     
     
     
     
    1.    
    2.        
      

    注意,我在生成的每個(gè)DIV.note中定義了位置,即設(shè)置該div的left,top和z-index值。

    CSS

     
     
     
     
    1. .demo{position:relative; height:500px; margin:20px; border:1px dotted #d3d3d3}   
    2. .note{width:150px; height:150px; position:absolute; margin-top:150px; padding:10px;   
    3.  overflow:hidden; cursor:move; font-size:16px; line-height:22px;}   
    4. .note span{margin:2px}   
    5.    
    6. .yellow{background-color:#FDFB8C;border:1px solid #DEDC65;}   
    7. .blue{background-color:#A6E3FC;border:1px solid #75C5E7;}   
    8. .green{background-color:#A5F88B;border:1px solid #98E775;}  

    有了樣式之后,然后運(yùn)行drag.php,這時(shí)就可以看到頁(yè)面中排列的的幾個(gè)層,但是還不能拖動(dòng),因?yàn)檫€要加入jQuery。

    jQuery

    首先需要載入jquery庫(kù)和jquery-ui插件以及global.js。

     
     
     
     
    1.    
    2.   

    然后再global.js加入代碼:

     
     
     
     
    1. $(function(){   
    2.     var tmp;   
    3.        
    4.     $('.note').each(function(){   
    5.         tmp = $(this).css('z-index');   
    6.         if(tmp>zIndex) zIndex = tmp;   
    7.     })   
    8.     make_draggable($('.note'));   
    9. });   
    10. var zIndex = 0;  

    global.js中,首先在$(function()里定義了一個(gè)變量tmp,通過(guò)判斷每個(gè)div.note的z-index值,保證拖動(dòng)時(shí),該DIV在最上層(即z-index為***值),就是不會(huì)被別的層覆蓋。

    并且設(shè)置zIndex的初始值為0。

    接下來(lái),寫(xiě)了一個(gè)函數(shù)make_draggable();該函數(shù)調(diào)用jquery ui插件的Draggable方法,處理拖動(dòng)范圍,透明度及拖動(dòng)停止后執(zhí)行的更新操作。

     
     
     
     
    1. function make_draggable(elements){   
    2.     elements.draggable({   
    3.         opacity: 0.8,   
    4.         containment:'parent',   
    5.         start:function(e,ui){ ui.helper.css('z-index',++zIndex); },   
    6.         stop:function(e,ui){   
    7.             $.get('update_position.php',{   
    8.                   x        : ui.position.left,   
    9.                   y        : ui.position.top,   
    10.                   z        : zIndex,   
    11.                   id    : parseInt(ui.helper.find('span.data').html())   
    12.             });   
    13.         }   
    14.     });   
    15. }  

    當(dāng)拖動(dòng)時(shí),將當(dāng)前層的z-index屬性設(shè)置為***值,即保證當(dāng)前層在最上面,不被其他層覆蓋,并且設(shè)置了拖動(dòng)范圍和透明度,當(dāng)停止拖動(dòng)時(shí),向后臺(tái)update_position.php發(fā)送一個(gè)ajax請(qǐng)求,傳遞的參數(shù)有x,y,z和id的值。接下來(lái)我們來(lái)看update_position.php的處理。

    update_position.php保存拖動(dòng)位置

    update_position.php需要做的是,獲取前臺(tái)通過(guò)ajax請(qǐng)求發(fā)來(lái)的數(shù)據(jù),更新數(shù)據(jù)表中相應(yīng)的字段內(nèi)容。

     
     
     
     
    1. include_once('connect.php');   
    2. if(!is_numeric($_GET['id']) || !is_numeric($_GET['x']) || !is_numeric($_GET['y']) ||    
    3. !is_numeric($_GET['z']))   
    4. die("0");   
    5.    
    6. $id = intval($_GET['id']);   
    7. $x = intval($_GET['x']);   
    8. $y = intval($_GET['y']);   
    9. $z = intval($_GET['z']);   
    10.    
    11. mysql_query("UPDATE notes SET xyz='".$x."|".$y."|".$z."' WHERE id=".$id);   
    12.    
    13. echo "1";  

    如此完成了拖動(dòng)并實(shí)時(shí)保存的效果。

    原文鏈接:http://www.helloweba.com/view-blog-120.html

    【編輯推薦】

    1. jQuery拖動(dòng)布局實(shí)現(xiàn)排序結(jié)果同步數(shù)據(jù)庫(kù)
    2. jQuery的.bind()、.live()和.delegate()之間區(qū)別
    3. 分享7個(gè)用jQuery重寫(xiě)的經(jīng)典在線小游戲
    4. 25個(gè)超棒的jQuery日歷和日期選取插件
    5. 分享10個(gè)超炫的jQuery網(wǎng)站

    分享名稱(chēng):PHP+MySQL+jQuery實(shí)現(xiàn)隨意拖動(dòng)層
    URL鏈接:http://m.5511xx.com/article/cdspces.html