亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

jQuery實現百度圖片移入移出內容提示框上下左右移動的效果

2019-11-19 13:42:55
字體:
來源:轉載
供稿:網友

閑來無聊,看到百度圖片hover的時候提示框的效果,遂想試一試自己能否實現。

百度圖片hover的效果:

需求:

  1. 當鼠標從圖片上部移入的時候,提示框從上部移到正常位置。從上部移出的時候,提示框從正常位置移到上部。

  2. 當鼠標從圖片左部移入的時候,提示框從左部移到正常位置。從左部移出的時候,提示框從正常位置移到左部

  3. 當鼠標從圖片右部移入的時候,提示框從右部移到正常位置。從右部移出的時候,提示框從正常位置移到右部

  4. 當鼠標從圖片下部移入的時候,提示框從下部移到正常位置。從下部移出的時候,提示框從正常位置移到下部

先上實現的效果圖:

實現原理:

  1. 把圖片看做一個矩形,把這個矩形,按對角線分成四份,每一份對應上下左右的部分。

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

  3. 以div左上角為原點,水平和豎直方向做坐標軸。

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

如圖:

 說明:

  1) β,θ是移入的點與x軸的夾角,求這兩個角與 α 的關系,才能知道到底是在哪個區域

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

  3)不管是鼠標從哪個區域移入或移出,只要求到移入的點與 x 軸的夾角的大小關系,就能正確判斷。

夾角判斷所在區域: 

   當 0 < β  ≤  α,移入的點在 1 和 4 區域,

   當 α < β  ≤ 90,移入的點在 2 和 3 區域,

   當 0 < θ  ≤  α,移入的點在 1 和 2 區域,

   當 α < θ  ≤ 90,移入的點在 3 和 4 區域,

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

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

1. html

<div class="box"> <img src="upimg/comm.png"/> <div class="innerBox">  <div class="inner"></div> </div></div>

說明:box是裝圖片的一個列表,innerBox是裝提示框的盒子,inner是提示框的內容,inner也要設置絕對定位是因為只有這樣才能設置top和left值。實際上就相當于給人錯覺提示框innerBox在移動,實際上是提示框里的內容inner在移動。

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)})//獲取在第幾區域function getdirection(obj,e){ var bleft=obj.offset().left;//距離左部的大小 var btop=obj.offset().top;//距離頂部的大小 var li_w=obj.width();//每個圖片的寬度 var li_h=obj.height();//每個圖片的高度 var evt=e||window.event; var x=evt.pageX-bleft;//鼠標在該圖片中的x坐標 var y=evt.pageY-btop;//鼠標在該圖片中的y坐標 x=Math.abs(x);//這里是防止移出的時候,x的值為負(bleft的值大于pageX) y=Math.abs(y);//與上同理 if(x>li_w){  x=li_w-(x-li_w);//這里是防止在第四部分移出的時候,pageX的值大于圖片的長度,所以需要用到長度減去多余的部分就是在第四區域的對稱位置 } 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   })  }) }}

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

總結:對比自己做的和百度的圖片效果,發現百度的動畫給人明顯的要舒服點,估計是因為移出的時候,我直接設置css,導致動畫不連貫原因,還有個就是stop()導致動畫直接結束,所以還有可以修改的地方。這里只介紹一個思路

以上所述是小編給大家介紹的jQuery實現百度圖片移入移出內容提示框上下左右移動的效果,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲精品资源美女情侣酒店| 亚洲综合日韩在线| 69精品小视频| 国产精品av网站| 91久久久久久国产精品| 亚洲第一男人天堂| 国精产品一区一区三区有限在线| 中文字幕av一区二区| 在线观看91久久久久久| 欧美大码xxxx| 日韩亚洲成人av在线| 九九久久综合网站| 亚洲精品videossex少妇| 国产精品色悠悠| 久久综合88中文色鬼| 91产国在线观看动作片喷水| 日韩在线不卡视频| 91精品久久久久久久久青青| 日韩久久精品电影| 亚洲人成在线一二| 欧洲成人性视频| 亚洲第一av网站| 久久九九亚洲综合| 日本欧美爱爱爱| 日韩av在线看| 91亚洲精品久久久| 5278欧美一区二区三区| 欧洲成人午夜免费大片| 日韩欧美在线视频| 亚洲欧洲在线视频| 亚洲视频国产视频| 亚洲精品久久久久久下一站| 国产精品国产福利国产秒拍| 国产精品美女呻吟| 九色91av视频| 亚洲国产精品一区二区久| 欧美日韩国产激情| 久久九九有精品国产23| 久久久噜噜噜久久中文字免| 亚洲qvod图片区电影| 国产一区二区在线免费| 亚洲国产成人精品电影| 亚洲女人初尝黑人巨大| 久操成人在线视频| 91美女片黄在线观| 亚洲色图av在线| 欧美激情一区二区三区高清视频| 2019中文字幕在线免费观看| 日韩中文字幕在线播放| 清纯唯美日韩制服另类| 57pao成人国产永久免费| 亚洲成人av片| 国产欧美日韩中文字幕在线| 欧美大全免费观看电视剧大泉洋| 国产日韩欧美在线播放| 欧美国产日韩一区二区三区| 国产成人久久久精品一区| 成人午夜黄色影院| 日韩精品免费视频| 久久久免费精品| 亚洲一区美女视频在线观看免费| 裸体女人亚洲精品一区| 国产欧美精品va在线观看| 性色av一区二区三区免费| 亚洲美女动态图120秒| 日韩电影免费在线观看中文字幕| 另类天堂视频在线观看| 亚洲欧美日韩网| 亚洲欧美国产视频| 国产美女扒开尿口久久久| 中文日韩电影网站| 亚洲欧洲自拍偷拍| 国产精品日本精品| 精品国产电影一区| 亚洲色图18p| 一区二区三区www| 中文字幕欧美日韩精品| 日韩女优在线播放| 亚洲成人xxx| 精品国产乱码久久久久久虫虫漫画| 欧美午夜精品久久久久久久| 伊人男人综合视频网| 国产一区私人高清影院| 国产精品99久久久久久人| 日韩女在线观看| 国产91精品高潮白浆喷水| 97激碰免费视频| 国产精品一区二区3区| 81精品国产乱码久久久久久| 国产精品久久久久久久久久三级| 91精品国产网站| 91成人在线播放| 欧美香蕉大胸在线视频观看| 久久久亚洲成人| 久久精品国产免费观看| 亚洲热线99精品视频| 久久久亚洲天堂| 97超碰蝌蚪网人人做人人爽| 亚洲欧洲偷拍精品| 九九综合九九综合| 欧美精品中文字幕一区| xxxxx91麻豆| 在线观看中文字幕亚洲| 自拍偷拍亚洲欧美| 欧美日韩中国免费专区在线看| 亚洲va欧美va在线观看| 国产成人极品视频| 国内精品模特av私拍在线观看| 亚洲成人激情图| 亚洲视频在线观看网站| 91网在线免费观看| 日韩中文字幕亚洲| 亚洲精品国产成人| 日韩精品一区二区视频| 亚洲一区二区中文字幕| 久久精品亚洲热| 欧美在线视频导航| 久久久噜久噜久久综合| 亚洲999一在线观看www| 亚洲精品网站在线播放gif| 九九九热精品免费视频观看网站| 国产精品69av| 日韩黄色在线免费观看| 亚洲国产中文字幕久久网| 国产精品久久视频| 国产精品18久久久久久麻辣| 国产精品久久999| 成人免费xxxxx在线观看| 久久久久国产视频| 国产成人精品视频在线观看| 一区二区亚洲欧洲国产日韩| 亚洲一区国产精品| 国内免费久久久久久久久久久| 亚洲最大福利网站| 亚洲精品xxx| 国产精品黄色影片导航在线观看| 91牛牛免费视频| 亚洲www在线| 欧美视频一区二区三区…| 久久国产天堂福利天堂| 91精品在线国产| 奇门遁甲1982国语版免费观看高清| 久久久久久国产精品久久| 久久成人18免费网站| 国产视频精品自拍| 亚洲欧美国产高清va在线播| 亚洲欧美国产制服动漫| 欧美性高潮在线| 亚洲性夜色噜噜噜7777| 亚洲国产成人爱av在线播放| 最近日韩中文字幕中文| 色七七影院综合| 国产日韩精品综合网站| 日韩在线欧美在线国产在线| 欧美在线一级va免费观看| 欧美大片在线影院| 国产中文字幕亚洲| 91在线视频导航| 国产视频久久久久| 欧美日韩亚洲91| 国产成人久久久| 国产精品福利片| 国产一区二区丝袜高跟鞋图片| 亚洲a级在线观看|