jQuery實作仿Google首頁拖曳效果的方法_jquery
本文實例講述了jQuery實作仿Google首頁拖曳效果的方法。分享給大家供大家參考。具體如下:
這裡用jQuery.js庫寫了一個仿Google首頁拖曳的特效程式碼
<!DOCTYPE html> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"/> <title>用JQUERY实现的仿Google首页拖动特效</title> <style type="text/css"> #div_width{ width:98%; margin:0 auto; } *{ margin:0px; padding:0px; } #div_left,#div_right,#div_center{ float:left; width:28%; height:900px; margin:0 3px; } #div_center{ width:38%; } .can_move{ border:1px solid blue; width:100%; margin:5px 0; min-height:150px; } .center_width{ height:200px; } p{ height:30px; color:#fff; line-height:30px; background:#000; cursor:move; } #xuxian{ /*虚线框*/ border:1px dashed #000; margin:5px 0; } </style> <script src="js/jquery.js"></script> <script> //<![CDATA[ window.onload=function(){ var mouse_down=false; //鼠标时候按下 var x_old=null; //按下鼠标时鼠标的坐标 var y_old=null; var div_move=null; //正在移动的div var div_move_width=null; //正在移动的div的宽 var div_move_height=null; //正在移动的div的高 var xuxian="<div id='xuxian'></div>"; //虚线框 document.oncontextmenu=new Function('event.returnValue=false;'); //禁止右键 document.onselectstart=new Function('event.returnValue=false;'); //禁止选中 //当鼠标按下的时候 $("p").mousedown(function(e){ mouse_down=true; //鼠标按下 div_move=$(this).parent(); //指定当前div为正在移动的div div_move_width=div_move.width(); div_move_height=div_move.height(); x_old=e.pageX-$(this).offset().left; //获取鼠标坐标 y_old=e.pageY-$(this).offset().top; //把当前div的position改成absolute div_move.css({ position:'absolute', zIndex:'10', width:div_move_width, height:div_move_height, top:div_move.offset().top, left:div_move.offset().left }); //将虚线框添加到正在移动的div之前的位置 div_move.before(xuxian); $("#xuxian").css({ width:'100%', height:div_move_height }); }); //移动鼠标 $(document).mousemove(function(e){ if(!mouse_down) return false; var _x=e.pageX; var _y=e.pageY; var div_right_div=$("#div_right>div").not(div_move).not("#xuxian"); div_move.css({ //改变正在移动div的top和left top:_y-y_old, left:_x-x_old }); /*注意,因为鼠标当前始终在正在移动的div上面, 所以,鼠标移动不会触发其他元素的mouseenter,mouseleave,mouseover 和mouseout事件,要想达到同样的效果, 只能根据鼠标的坐标来判断鼠标是否进入其他元素*/ var left_left=$("#div_left").offset().left; //确定左边div_left容器的位置 var left_width=$("#div_left").width(); var right_left=$("#div_right").offset().left; //确定右边div_right容器的位置 var right_width=$("#div_right").width(); var center_left=$("#div_center").offset().left; //确定中间div_center容器的位置 var center_width=$("#div_center").width(); //判断鼠标坐标是否进入左边div_left容器 if(_x>left_left&&_x<(left_left+left_width)){ /*选定左边div_left容器下的最后一个可移动div, 不包含当前正在移动的div元素和虚线框*/ var div_left_last=$("#div_left>div").not(div_move).not("#xuxian").filter(":last"); if(div_left_last.length>=1){ //判断时候左边div_left容器下时候有可移动div元素 if(_y>(div_left_last.offset().top+div_left_last.height())){ //判断鼠标是否在左边div_left容器最后一个元素的下边 $("#xuxian").remove(); //如果是,移除之前添加的虚线框 div_left_last.after(xuxian); //把虚线框添加为左边div_left容器的最后一个子元素 $("#xuxian").css({ //设定虚线框的高和宽 width:'100%', height:div_move_height }); }else{ //如果鼠标不在左边div_left容器最后一个元素的下边, //那么,循环判定鼠标是否进入左边div_left容器下的可移动div元素里面 var div_left_div=$("#div_left>div").not(div_move).not("#xuxian"); for(var i=0;i<div_left_div.length;i++){ if(_y>div_left_div.eq(i).offset().top&&(_y<div_left_div.eq(i).offset().top+div_left_div.eq(i).height())){ $("#xuxian").remove(); //如果是,删除之前添加的虚线框 div_left_div.eq(i).before(xuxian); //把虚线框添加到当前鼠标进入的div元素的前面 $("#xuxian").css({ //设定虚线框的高和宽 width:'100%', height:div_move_height }); break; //退出循环 } } } }else{//如果左边div_left容器下面没有任何可移动div元素 var div_left_div=$("#div_left>div").not(div_move).not("#xuxian"); if(div_left_div.length==0){ $("#xuxian").remove(); //移除之前添加的虚线框 $("#div_left").append(xuxian); //把虚线框添加为左边div_left容器的子元素 $("#xuxian").css({ width:'100%', height:div_move_height }); } } }else if(_x>center_left&&_x<(center_left+center_width)){ //判断鼠标是否进入中间div_center容器 /*选定中间div_center容器下的最后一个可移动div, 不包含当前正在移动的div元素和虚线框*/ var div_center_last=$("#div_center>div").not(div_move).not("#xuxian").filter(":last"); if(div_center_last.length>=1){ //判断中间div_center容器的下面时候有可移动div子元素 if(_y>(div_center_last.offset().top+div_center_last.height())){ //判断鼠标是否在中间div_center容器的最后一个可移动div子元素的下边 $("#xuxian").remove(); //如果是,删除之前添加的虚线框 div_center_last.after(xuxian); //把虚线框添加为中间div_center容器的最后一个div子元素 $("#xuxian").css({ //设定虚线框的宽和高 width:'100%', height:div_move_height }); }else{ //如果鼠标不在中间div_center容器最后一个可移动div子元素的下边, //则循环判断鼠标进入的是哪一个iv子元素 var div_center_div=$("#div_center>div").not(div_move).not("#xuxian"); for(var i=0;i<div_center_div.length;i++){ if(_y>div_center_div.eq(i).offset().top&&(_y<div_center_div.eq(i).offset().top+div_center_div.eq(i).height())){ $("#xuxian").remove(); //找到鼠标进入的div子元素,删除之前添加的虚线框 div_center_div.eq(i).before(xuxian); //把虚线框添加到当前鼠标进入的div子元素的前面 $("#xuxian").css({ //设定虚线框的宽度和高度 width:'100%', height:div_move_height }); break; //退出循环 } } } }else{ //如果中间div_center容器的中间没有可移动的div子元素 var div_center_div=$("#div_center>div").not(div_move).not("#xuxian"); if(div_center_div.length==0){ $("#xuxian").remove(); //删除之前添加的虚线框 $("#div_center").append(xuxian); //把虚线框添加为中间div_center的最后一个div元素 $("#xuxian").css({ width:'100%', height:div_move_height }); } } }else if(_x>right_left&&_x<(right_left+right_width)){ //判断鼠标是否进入右边div_right容器 /*选定右边div_right容器下的最后一个可移动div, 不包含当前正在移动的div元素和虚线框*/ var div_right_last=$("#div_right>div").not(div_move).not("#xuxian").filter(":last"); if(div_right_last.length>=1){ //判断右边div_right容器下边是否有可移动的div子元素 if(_y>(div_right_last.offset().top+div_right_last.height())){ //判断鼠标时候在右边div_right容器最后一个可移动div元素的下边 $("#xuxian").remove(); //如果是,删除之前添加的虚线框 div_right_last.after(xuxian); //添加虚线框为右边div_right容器的最后一个元素 $("#xuxian").css({ //设定虚线框的宽和高 width:'100%', height:div_move_height }); }else{ //如果鼠标不在右边div_right容器最后一个可移动div元素的下边, //则循环判断鼠标进入到右边div_right容器下哪个可移动div元素里面 for(var i=0;i<div_right_div.length;i++){ if(_y>div_right_div.eq(i).offset().top&&(_y<div_right_div.eq(i).offset().top+div_right_div.eq(i).height())){ $("#xuxian").remove(); //找到鼠标进入的div元素,删除之前添加的虚线框 div_right_div.eq(i).before(xuxian); //把虚线框添加到鼠标进入的div元素的前面 $("#xuxian").css({ //设定宽和高 width:'100%', height:div_move_height }); break; //退出循环 } } } }else{ //如果右边div_right元素的下边没有可移动的div子元素 if(div_right_div.length==0){ $("#xuxian").remove(); //删除之前添加的虚线框 $("#div_right").append(xuxian); //把虚线框添加为右边div_right容器的子元素 $("#xuxian").css({ //设定虚线框的宽和高 width:'100%', height:div_move_height }); } } } }).mouseup(function(){ mouse_down=false; //鼠标松开 $("#xuxian").before(div_move); //将当前正在移动的div元素添加到虚线框的前面 div_move.css({ //更改正在移动div元素的position和宽 position:'static', width:'100%' }); $("#xuxian").remove(); //删除虚线框 return false; }); } //]]> </script> </head> <body> <div id="div_width"> <div id="div_left"> <div class="can_move"> <p>音乐</p> </div> <div class="can_move"> <p>活动</p> </div> </div> <div id="div_center"> <div class="can_move center_width"> <p>科技</p> </div> </div> <div id="div_right"> <div class="can_move"> <p>新闻</p> </div> <div class="can_move"> <p>元素</p> </div> </div> </div> </body> </html>
希望本文所述對大家的jQuery程式設計有所幫助。

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

jQuery引用方法詳解:快速上手指南jQuery是一個受歡迎的JavaScript庫,被廣泛用於網站開發中,它簡化了JavaScript編程,並為開發者提供了豐富的功能和特性。本文將詳細介紹jQuery的引用方法,並提供具體的程式碼範例,幫助讀者快速上手。引入jQuery首先,我們需要在HTML檔案中引入jQuery函式庫。可以透過CDN連結的方式引入,也可以下載

jQuery中如何使用PUT請求方式?在jQuery中,發送PUT請求的方法與發送其他類型的請求類似,但需要注意一些細節和參數設定。 PUT請求通常用於更新資源,例如更新資料庫中的資料或更新伺服器上的檔案。以下是在jQuery中使用PUT請求方式的具體程式碼範例。首先,確保引入了jQuery庫文件,然後可以透過以下方式發送PUT請求:$.ajax({u

jQuery是一款廣泛應用於前端開發的快速、小巧、功能豐富的JavaScript庫。自2006年發布以來,jQuery已成為眾多開發者的首選工具之一,但在實際應用中,它也不乏一些優點和缺點。本文將深度剖析jQuery的優勢與劣勢,並結合具體的程式碼範例進行說明。優點:1.簡潔的語法jQuery的語法設計簡潔明了,可以大幅提升程式碼的可讀性和編寫效率。比如,

標題:jQuery小技巧:快速修改頁面所有a標籤的文字在網頁開發中,我們經常需要對頁面中的元素進行修改和操作。使用jQuery時,有時候需要一次修改頁面中所有a標籤的文字內容,這樣可以節省時間和精力。以下將介紹如何使用jQuery快速修改頁面所有a標籤的文本,同時給出具體的程式碼範例。首先,我們需要引入jQuery庫文件,確保在頁面中引入了以下程式碼:<

標題:使用jQuery修改所有a標籤的文字內容jQuery是一款受歡迎的JavaScript庫,被廣泛用於處理DOM操作。在網頁開發中,經常會遇到需要修改頁面上連結標籤(a標籤)的文字內容的需求。本文將介紹如何使用jQuery來實現這個目標,並提供具體的程式碼範例。首先,我們需要在頁面中引入jQuery庫。在HTML檔案中加入以下程式碼:

jQuery如何移除元素的height屬性?在前端開發中,經常會遇到需要操作元素的高度屬性的需求。有時候,我們可能需要動態改變元素的高度,而有時候又需要移除元素的高度屬性。本文將介紹如何使用jQuery來移除元素的高度屬性,並提供具體的程式碼範例。在使用jQuery操作高度屬性之前,我們首先需要了解CSS中的height屬性。 height屬性用於設定元素的高度

jQuery是一種流行的JavaScript庫,被廣泛用於處理網頁中的DOM操作和事件處理。在jQuery中,eq()方法是用來選擇指定索引位置的元素的方法,具體使用方法和應用場景如下。在jQuery中,eq()方法選擇指定索引位置的元素。索引位置從0開始計數,即第一個元素的索引是0,第二個元素的索引是1,依此類推。 eq()方法的語法如下:$("s

如何判斷jQuery元素是否具有特定屬性?在使用jQuery操作DOM元素時,常會遇到需要判斷元素是否具有某個特定屬性的情況。在這種情況下,我們可以藉助jQuery提供的方法來輕鬆實現這項功能。以下將介紹兩種常用的方法來判斷一個jQuery元素是否具有特定屬性,並附上具體的程式碼範例。方法一:使用attr()方法和typeof運算子//判斷元素是否具有特定屬
