2014-03-30 31 views
0

HTML破動畫()算法

<ul class="wrap"> 
    <li title="Lorem ipsum dolor sit amet"></li> 
    <li title="consectetur adipisicing elit"></li> 
    <li title="incididunt ut labore et dolore magna aliqua"></li> 
    <li title="Ut enim ad minim veniam"></li> 
    <li title="quis nostrud exercitation ullamco"></li> 
    <li title="laboris nisi ut aliquip ex ea commodo"></li> 
    <li title="Duis aute irure dolor in reprehenderit"></li> 
    <li title=" Excepteur sint occaecat cupidatat non"></li> 
    <div class="sub"> 
     <div class="bg"></div> 
    </div> 
</ul> 

CSS

*{ 
    padding: 0; 
    margin: 0; 
    border: none; 
} 

body{ 
    padding: 100px; 
} 


ul{ 
    list-style: none; 
    overflow: hidden; 
    position: relative; 
} 

li{ 
    width: 220px; 
    height: 220px; 
    background: rgba(0, 0, 0, 0.6); 
    position: relative; 
    overflow: hidden; 
    cursor: pointer; 
    float: left; 
    margin-right: 20px; 
    margin-bottom: 20px; 
    display: block; 
} 

.sub{ 
    width: 210px; 
    height: 210px; 
    background: #ff3030; 
    color: #fff; 
    padding: 5px; 
    position: absolute; 
    display: none; 
} 

JQUERY

var li = $('.wrap').children('li'), 
    sub = $('.sub'); 

li.on('mouseover', function() { 
    sub.show(); 
    var left = $(this).offset().left, 
     top = $(this).offset().top, 
     text = $(this).attr('title'), 
     bg = $('.bg'); 
    sub.stop().animate({ 
     left: left - $('.wrap').offset().left, 
     top: top - $('.wrap').offset().top 
    }); 
    bg.stop().animate({ 
     opacity: 0 
    }, function() { 
     bg.text(text); 
     bg.animate({ 
      opacity: 1 
     }); 
    }); 
}).on('mouseleave', function() { 
    sub.fadeOut(); 
}); 

這是小提琴 http://jsfiddle.net/GTHM4/

它BETT呃看起來全寬 http://jsfiddle.net/GTHM4/embedded/result/

正如你所看到的問題是「破」工作「鼠標離開」事件,以及格「BG」總是「想要」去了......怎麼了?

+0

這只是一個建議,但你已經注意到,當你得到li元素的div元素頂部appers上懸停事件,這意味着,該懸停li的事件並啓動mouseleave事件,然後div消失並再次懸停事件,這是無限的,您必須控制何時您確實想要發生該事件。 – Xdevelop

+0

究竟是期望的效果?紅色的div應該眨眼嗎? –

+0

也許,我會更努力的,thanx幫助和建議。 Tilwin Joy,理想的效果是在li上添加bg,並在光標不在li時隱藏這個bg。 – Aziz

回答

0

它工作正常

var li = $('.wrap').children('li'), 
      sub = $('.sub'), 
    wrap = $('.wrap'); 

     wrap.on('mouseover','li', function() { 
      sub.show(); 
      var left = $(this).offset().left, 
       top = $(this).offset().top, 
       text = $(this).attr('title'), 
       bg = $('.bg'); 
      sub.stop().animate({ 
       left: left - $('.wrap').offset().left, 
       top: top - $('.wrap').offset().top 
      }); 
      bg.stop().animate({ 
       opacity: 0 
      }, function() { 
       bg.text(text); 
       bg.animate({ 
        opacity: 1 
       }); 
      }); 
     }).on('mouseleave', function() { 
      sub.fadeOut(); 
     }); 

演示http://jsfiddle.net/fazalrasel/GTHM4/1/

+0

對不起,但是有一個依賴於wrap,但是bg應該在光標離開li時退出,但不能換行。 – Aziz

+0

你能否清楚你想要的是什麼?很難理解你的英語。你說bg總是想去......你可以通過我建議的事件代表來解決它......當光標離開li時,你的意思是** bg應該淡出,但不能包裹** –