基于CSS3和jQuery實(shí)現(xiàn)跟隨鼠標(biāo)方位的Hover特效
今天我們來(lái)學(xué)習(xí)如何通過(guò)CSS3的特性和jQuery來(lái)創(chuàng)建一個(gè)感知鼠標(biāo)滑動(dòng)方向的hover效果。當(dāng)鼠標(biāo)滑進(jìn)的時(shí)候,遮罩層會(huì)從上次鼠標(biāo)滑出的方向滑入,當(dāng)鼠標(biāo)滑出的時(shí)候,遮罩層會(huì)跟隨鼠標(biāo),從鼠標(biāo)滑出的方向滑出。這是一個(gè)十分有趣的效果。
我們使用無(wú)序列表來(lái)組織縮略圖和描述遮罩層:
<ul id="da-thumbs" class="da-thumbs"> <li> <a > <img src="images/7.jpg" /> <div><span>Natalie & Justin Cleaning by Justin Younger</span></div> </a> </li> <li> <!-- ... --> </li> <!-- ... --> </ul>
這些列表項(xiàng)將會(huì)向左浮動(dòng),并且相對(duì)定位,因?yàn)槲覀兘^對(duì)定位描述遮罩層:
.da-thumbs li {
float: left;
margin: 5px;
background: #fff;
padding: 8px;
position: relative;
box-shadow: 0 1px 3px rgba(0,0,0,0.1);
}
.da-thumbs li a,
.da-thumbs li a img {
display: block;
position: relative;
}
.da-thumbs li a {
overflow: hidden;
}
.da-thumbs li a div {
position: absolute;
background: rgba(75,75,75,0.7);
width: 100%;
height: 100%;
}
接下來(lái)我們將這樣做:根據(jù)鼠標(biāo)進(jìn)入的位置,我們將“from”樣式應(yīng)用給遮罩層,它設(shè)置了遮罩層的初始位置。然后我們將使用過(guò)渡并將添加最終狀態(tài)的樣式。這樣遮罩層就滑入了。當(dāng)我們離開(kāi)元素時(shí),我們?cè)俅螒?yīng)用“from”樣式給遮罩層(盡管現(xiàn)在實(shí)際上是滑出)并去除之前的最終狀態(tài)樣式。
嗯,以下就是這個(gè)小插件的核心:
this.$el.on( 'mouseenter.hoverdir, mouseleave.hoverdir', function( event ) {
var $el = $( this ),
$hoverElem = $el.find( 'div' ),
direction = self._getDir( $el, { x : event.pageX, y : event.pageY } ),
styleCSS = self._getStyle( direction );
if( event.type === 'mouseenter' ) {
$hoverElem.hide().css( styleCSS.from );
clearTimeout( self.tmhover );
self.tmhover = setTimeout( function() {
$hoverElem.show( 0, function() {
var $el = $( this );
if( self.support ) {
$el.css( 'transition', self.transitionProp );
}
self._applyAnimation( $el, styleCSS.to, self.options.speed );
} );
}, self.options.hoverDelay );
}
else {
if( self.support ) {
$hoverElem.css( 'transition', self.transitionProp );
}
clearTimeout( self.tmhover );
self._applyAnimation( $hoverElem, styleCSS.from, self.options.speed );
}
} );
我們主要是給列表項(xiàng)綁定‘mouseenter'和‘mouseleave'事件,通過(guò)_getDir函數(shù)我們獲得鼠標(biāo)滑進(jìn)或滑出的方向(想象檢測(cè)區(qū)域是個(gè)被分成四個(gè)三角形的矩形)。
你將會(huì)看到,在第二個(gè)demo中,我們添加了延遲,這樣當(dāng)鼠標(biāo)從一個(gè)角落移到另一個(gè)角落的時(shí)候不會(huì)發(fā)生太多的動(dòng)畫(huà)。
我希望你可以喜歡這個(gè)小特效并覺(jué)得很有用!
如果瀏覽器不支持CSS過(guò)渡將會(huì)使用jQuery動(dòng)畫(huà)。
以上所述是小編給大家介紹的基于CSS3和jQuery實(shí)現(xiàn)跟隨鼠標(biāo)方位的Hover特效,希望對(duì)大家有所幫助!
相關(guān)文章
JQuery頁(yè)面隨滾動(dòng)條動(dòng)態(tài)加載效果的簡(jiǎn)單實(shí)現(xiàn)(推薦)
下面小編就為大家?guī)?lái)一篇JQuery頁(yè)面隨滾動(dòng)條動(dòng)態(tài)加載效果的簡(jiǎn)單實(shí)現(xiàn)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-02-02
JQuery給元素添加/刪除節(jié)點(diǎn)比如select
本教程詳細(xì)介紹下jQuery添加/刪除Select的Option項(xiàng),感興趣的各位可以參考下哈2013-04-04
jQuery Mobile框架中的表單組件基礎(chǔ)使用教程
jQuery Mobile框架主要針對(duì)移動(dòng)端的Web UI設(shè)計(jì),其中豐富的表單組件調(diào)用起來(lái)也是相當(dāng)方便,接下來(lái)就為大家整理了一份jQuery Mobile框架中的表單組件基礎(chǔ)使用教程,需要的朋友可以參考下2016-05-05
jQuery實(shí)現(xiàn)自動(dòng)輸入email、時(shí)間和域名的方法
這篇文章主要介紹了jQuery實(shí)現(xiàn)自動(dòng)輸入email、時(shí)間和域名的方法,涉及jQuery表單操作的相關(guān)技巧,需要的朋友可以參考下2016-08-08
使用jQuery validate 驗(yàn)證注冊(cè)表單實(shí)例演示
Validation是jQuery的插件,提供的方法可以大大簡(jiǎn)化驗(yàn)證表單的工作,接下來(lái)為大家詳細(xì)介紹下使用方法,感興趣的各位可以參考下哈2013-03-03
jQuery內(nèi)容過(guò)濾選擇器與子元素過(guò)濾選擇器用法實(shí)例分析
這篇文章主要介紹了jQuery內(nèi)容過(guò)濾選擇器與子元素過(guò)濾選擇器用法,結(jié)合實(shí)例形式分析了jQuery內(nèi)容過(guò)濾選擇器與子元素過(guò)濾選擇器相關(guān)功能、原理及使用方法,需要的朋友可以參考下2019-02-02
jquery+ajax實(shí)現(xiàn)注冊(cè)實(shí)時(shí)驗(yàn)證實(shí)例詳解
這篇文章主要介紹了jquery+ajax實(shí)現(xiàn)注冊(cè)實(shí)時(shí)驗(yàn)證的方法,結(jié)合實(shí)例形式較為詳細(xì)的分析了jQuery基于ajax請(qǐng)求實(shí)現(xiàn)注冊(cè)時(shí)無(wú)刷新驗(yàn)證的相關(guān)技巧,需要的朋友可以參考下2015-12-12

