国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

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

來源:懂視網 責編:小采 時間:2020-11-27 22:13:16
文檔

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

jQuery實現百度圖片移入移出內容提示框上下左右移動的效果:閑來無聊,看到百度圖片hover的時候提示框的效果,遂想試一試自己能否實現。 百度圖片hover的效果: 需求: 1. 當鼠標從圖片上部移入的時候,提示框從上部移到正常位置。從上部移出的時候,提示框從正常位置移到上部。 2. 當鼠標從圖片左部移入的時候,提
推薦度:
導讀jQuery實現百度圖片移入移出內容提示框上下左右移動的效果:閑來無聊,看到百度圖片hover的時候提示框的效果,遂想試一試自己能否實現。 百度圖片hover的效果: 需求: 1. 當鼠標從圖片上部移入的時候,提示框從上部移到正常位置。從上部移出的時候,提示框從正常位置移到上部。 2. 當鼠標從圖片左部移入的時候,提

閑來無聊,看到百度圖片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實現百度圖片移入移出內容提示框上下左右移動的效果,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

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

jQuery實現百度圖片移入移出內容提示框上下左右移動的效果:閑來無聊,看到百度圖片hover的時候提示框的效果,遂想試一試自己能否實現。 百度圖片hover的效果: 需求: 1. 當鼠標從圖片上部移入的時候,提示框從上部移到正常位置。從上部移出的時候,提示框從正常位置移到上部。 2. 當鼠標從圖片左部移入的時候,提
推薦度:
標簽: 圖片 百度 實現
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 2022国产精品福利在线观看 | 日本三级韩国三级韩级在线观看 | 538精品在线视频 | 精品一区二区三区免费观看 | 久久激情网 | 国内精品久久久久久久97牛牛 | 日韩欧美在线免费观看 | 在线看欧美 | 欧美性xxxx极品高清 | 九九九影院 | 国产一区在线免费观看 | 国产国语高清在线视频二区 | 久久久久无码国产精品一区 | 一二三高清区线路1 | 国产视频高清 | 日本国产在线观看 | 毛片视频网站 | 美女牲交视频一级毛片 | 国产日韩一区二区三区 | 国产成人高清亚洲一区91 | 亚洲 欧美 自拍 另类 欧美 | 欧美精品在线观看 | 欧美精品一区二区三区四区 | 真实和子乱视频 | 亚洲国产成人精品区 | 美女牲交视频一级毛片 | 国内精品伊人久久久久妇 | 四虎影视最新地址 | 国产成人乱码一区二区三区在线 | 日韩视频一区二区三区 | 日本高清在线播放一区二区三区 | www.亚洲一区 | 欧美视频免费在线 | 日韩电影免费在线观看网址 | 福利视频一区二区牛牛 | 中文亚洲欧美日韩无线码 | 91岛国| 欧美激情hd| 久久久久亚洲精品成人网小说 | 一区二区网站 | 91在线一区二区 |