真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

jQuery如何實(shí)現(xiàn)百度圖片移入移出內(nèi)容提示框上下左右移動(dòng)的效果-創(chuàng)新互聯(lián)

小編給大家分享一下jQuery如何實(shí)現(xiàn)百度圖片移入移出內(nèi)容提示框上下左右移動(dòng)的效果,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

成都創(chuàng)新互聯(lián)專注于九龍坡企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站開(kāi)發(fā),商城網(wǎng)站定制開(kāi)發(fā)。九龍坡網(wǎng)站建設(shè)公司,為九龍坡等地區(qū)提供建站服務(wù)。全流程定制開(kāi)發(fā),專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,成都創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)

百度圖片hover的效果:

jQuery如何實(shí)現(xiàn)百度圖片移入移出內(nèi)容提示框上下左右移動(dòng)的效果

需求:

  1. 當(dāng)鼠標(biāo)從圖片上部移入的時(shí)候,提示框從上部移到正常位置。從上部移出的時(shí)候,提示框從正常位置移到上部。

  2. 當(dāng)鼠標(biāo)從圖片左部移入的時(shí)候,提示框從左部移到正常位置。從左部移出的時(shí)候,提示框從正常位置移到左部

  3. 當(dāng)鼠標(biāo)從圖片右部移入的時(shí)候,提示框從右部移到正常位置。從右部移出的時(shí)候,提示框從正常位置移到右部

  4. 當(dāng)鼠標(biāo)從圖片下部移入的時(shí)候,提示框從下部移到正常位置。從下部移出的時(shí)候,提示框從正常位置移到下部

先上實(shí)現(xiàn)的效果圖:

jQuery如何實(shí)現(xiàn)百度圖片移入移出內(nèi)容提示框上下左右移動(dòng)的效果

實(shí)現(xiàn)原理:

  1. 把圖片看做一個(gè)矩形,把這個(gè)矩形,按對(duì)角線分成四份,每一份對(duì)應(yīng)上下左右的部分。

  2. 獲取鼠標(biāo)移入div之后的坐標(biāo),獲取該div離瀏覽器頂部和左部的距離,就能知道在該div中,鼠標(biāo)移入的坐標(biāo)。

  3. 以div左上角為原點(diǎn),水平和豎直方向做坐標(biāo)軸。

  4. 算出移入的點(diǎn)與x軸的夾角 β 和 θ。再與 α 角做比較,最后判斷是在哪個(gè)范圍內(nèi)的。

如圖:

jQuery如何實(shí)現(xiàn)百度圖片移入移出內(nèi)容提示框上下左右移動(dòng)的效果

 說(shuō)明:

  1) β,θ是移入的點(diǎn)與x軸的夾角,求這兩個(gè)角與 α 的關(guān)系,才能知道到底是在哪個(gè)區(qū)域

  2)已知條件:x,y,x0,y0。分別代表圖片寬和高,移入的x,y坐標(biāo)。

  3)不管是鼠標(biāo)從哪個(gè)區(qū)域移入或移出,只要求到移入的點(diǎn)與 x 軸的夾角的大小關(guān)系,就能正確判斷。

夾角判斷所在區(qū)域: 

   當(dāng) 0 < β  ≤  α,移入的點(diǎn)在 1 和 4 區(qū)域,

   當(dāng) α < β  ≤ 90,移入的點(diǎn)在 2 和 3 區(qū)域,

   當(dāng) 0 < θ  ≤  α,移入的點(diǎn)在 1 和 2 區(qū)域,

   當(dāng) α < θ  ≤ 90,移入的點(diǎn)在 3 和 4 區(qū)域,

那么,要判斷在 1 區(qū)域里面的話,滿足的條件就必須為:0 < β  ≤  α,0 < θ  ≤  α  以此類推。。。

原理搞清楚了,就可以上代碼了。

1. html


 
 
  
 

說(shuō)明:box是裝圖片的一個(gè)列表,innerBox是裝提示框的盒子,inner是提示框的內(nèi)容,inner也要設(shè)置絕對(duì)定位是因?yàn)橹挥羞@樣才能設(shè)置top和left值。實(shí)際上就相當(dāng)于給人錯(cuò)覺(jué)提示框innerBox在移動(dòng),實(shí)際上是提示框里的內(nèi)容inner在移動(dòng)。

2. css

*{
 padding:0;
 margin: 0;
}
.box{
 width: 300px;
 height: 300px;
 background: skyblue;
 float: left;
 position: relative;
 overflow: hidden;
 margin:10px 10px 0 0;
}
.innerBox{
 position: absolute;
 bottom: 0;
 left: 0;
 width: 100%;
 height: 40px;
}
img{
 width: 100%;
}
.inner{
 position: absolute;
 top:40px;
 left: 0;
 width: 100%;
 height: 40px;
 background: red;
}

3. js

$('.box').hover(function(e){
 getIn($(this),e)
},function(e){
 getOut($(this),e)
})
//獲取在第幾區(qū)域
function getdirection(obj,e){
 var bleft=obj.offset().left;//距離左部的大小
 var btop=obj.offset().top;//距離頂部的大小
 var li_w=obj.width();//每個(gè)圖片的寬度
 var li_h=obj.height();//每個(gè)圖片的高度
 var evt=e||window.event;
 var x=evt.pageX-bleft;//鼠標(biāo)在該圖片中的x坐標(biāo)
 var y=evt.pageY-btop;//鼠標(biāo)在該圖片中的y坐標(biāo)
 x=Math.abs(x);//這里是防止移出的時(shí)候,x的值為負(fù)(bleft的值大于pageX)
 y=Math.abs(y);//與上同理
 if(x>li_w){
  x=li_w-(x-li_w);//這里是防止在第四部分移出的時(shí)候,pageX的值大于圖片的長(zhǎng)度,所以需要用到長(zhǎng)度減去多余的部分就是在第四區(qū)域的對(duì)稱位置
 }
 var Alltan=Math.atan(li_h/li_w);//這是α
 var leftTan=Math.atan(y/x);//這是β
 var rightTan=Math.atan(y/(li_w-x));//這是θ
 if(0<=leftTan&&leftTan<=Alltan&&0<=rightTan&&rightTan<=Alltan){
  console.log("在第一部分")
  return 1;
 }else if(Alltan<=leftTan&&leftTan<=Math.asin(1)&&0<=rightTan&&rightTan<=Alltan){
  console.log("在第二部分");
  return 2;
 }else if(Alltan<=leftTan&&leftTan<=Math.asin(1)&&Alltan<=rightTan&&rightTan<=Math.asin(1)){
  console.log("在第三部分");
  return 3;
 }else if(0<=leftTan&&leftTan<=Alltan&&Alltan<=rightTan&&rightTan<=Math.asin(1)){
  console.log("在第四部分");
  return 4;
 }
}
//移入
function getIn(obj,e){
 var statu=getdirection(obj,e);
 var li_w=obj.width();
 var that=obj.find('.inner');
 var child_h=that.height();
 if(statu===1){
  that.css({
   "left":0,
   "top":-child_h
  }).stop().animate({
   "top":0
  },200)
 }else if(statu===2){
  that.css({
   "left":-li_w,
   "top":0
  }).stop().animate({
   "left":0
  },200)
 }else if(statu===3){
  that.stop().animate({
   "top":0
  },200)
 }else if(statu===4){
  that.css({
   "left":li_w,
   "top":0
  }).stop().animate({
   "left":0
  },200)
 }
}
//移出
function getOut(obj,e){
 var statu=getdirection(obj,e);
 var li_w=obj.width();
 var that=obj.find('.inner');
 var child_h=that.height();
 if(statu===1){
  that.stop().animate({
   "top":-child_h
  },200,function(){
   $(this).css({
    "left":0,
    "top":child_h
   })
  })
 }else if(statu===2){
  that.stop().animate({
   "left":-li_w
  },200,function(){
   $(this).css({
    "left":0,
    "top":child_h
   })
  })
 }else if(statu===3){
  that.stop().animate({
   "top":child_h
  },200)
 }else if(statu===4){
  that.stop().animate({
   "left":li_w
  },200,function(){
   $(this).css({
    "left":0,
    "top":child_h
   })
  })
 }
}

說(shuō)明:Math.asin(1) 表示 90度的反正弦值,由于tan90不存在,所以換成sin90了。

總結(jié):對(duì)比自己做的和百度的圖片效果,發(fā)現(xiàn)百度的動(dòng)畫(huà)給人明顯的要舒服點(diǎn),估計(jì)是因?yàn)橐瞥龅臅r(shí)候,我直接設(shè)置css,導(dǎo)致動(dòng)畫(huà)不連貫原因,還有個(gè)就是stop()導(dǎo)致動(dòng)畫(huà)直接結(jié)束,所以還有可以修改的地方。這里只介紹一個(gè)思路

jquery是什么

jquery是一個(gè)簡(jiǎn)潔而快速的JavaScript庫(kù),它具有獨(dú)特的鏈?zhǔn)秸Z(yǔ)法和短小清晰的多功能接口、高效靈活的css選擇器,并且可對(duì)CSS選擇器進(jìn)行擴(kuò)展、擁有便捷的插件擴(kuò)展機(jī)制和豐富的插件,是繼Prototype之后又一個(gè)優(yōu)秀的JavaScript代碼庫(kù),能夠用于簡(jiǎn)化事件處理、HTML文檔遍歷、Ajax交互和動(dòng)畫(huà),以便快速開(kāi)發(fā)網(wǎng)站。

以上是“jQuery如何實(shí)現(xiàn)百度圖片移入移出內(nèi)容提示框上下左右移動(dòng)的效果”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


標(biāo)題名稱:jQuery如何實(shí)現(xiàn)百度圖片移入移出內(nèi)容提示框上下左右移動(dòng)的效果-創(chuàng)新互聯(lián)
網(wǎng)站路徑:http://weahome.cn/article/jigho.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部