最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

jquery實(shí)現(xiàn)百葉窗效果

 更新時(shí)間:2017年01月12日 09:28:12   作者:木風(fēng)622  
本文主要分享了jquery實(shí)現(xiàn)百葉窗效果的示例代碼。具有一定的參考價(jià)值,下面跟著小編一起來看下吧

今天試著用jq寫了下圖片百葉窗效果,就是鼠標(biāo)經(jīng)過那張圖,那張圖顯示,其他圖片縮小~

最開始看效果的時(shí)候覺得好復(fù)雜,以為是寬度的變化寫的動(dòng)畫,但是后來細(xì)想,如果是寬度變化,那么圖片變窄的時(shí)候肯定會(huì)失真了,后來經(jīng)過學(xué)習(xí),發(fā)現(xiàn)原來原理很簡單:

基本原理就是,將圖片都絕對定位到盒子里,然后分別定位,平分整個(gè)盒子,圖片就會(huì)顯示一種層疊效果了(本案例是通過left值控制位置);然后通過jq控制,當(dāng)鼠標(biāo)經(jīng)過某張圖片的時(shí)候這張圖片完全顯示(即left值進(jìn)行變化),其他圖片的left值也進(jìn)行相應(yīng)的改變。

文字描述起來很難懂的樣子,先上html和css布局效果

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Document</title>
</head>
<body>
<style type="text/css">
div{
 width: 420px;
 height: 186px;
 border: 2px solid #ccc;
 overflow: hidden;
 position: relative;
 margin: 100px auto;
}
img{
 border: none;
 display: block;
 position: absolute;
 top: 0;
}
img:nth-of-type(1){
 left: 0;
}
img:nth-of-type(2){
 left: 84px;
}
img:nth-of-type(3){
 left: 168px;
}
img:nth-of-type(4){
 left: 252px;
}
img:nth-of-type(5){
 left: 336px;
}
</style>
<div class="box">
 <img src="http://tupian.enterdesk.com/2013/mxy/10/12/1/17.jpg">
 <img src="http://tupian.enterdesk.com/2013/mxy/07/0715/1/7.jpg">
 <img src="http://src.house.sina.com.cn/imp/imp/deal/5c/fa/e/afb00d1b581922fa567f9d65bfd_p1_mk1.jpg">
 <img src="http://www.wallcoo.com/nature/wild_field_01/wallpapers/1440x900/3787717_Wild_field_v1224236762.jpg">
 <img src="http://pic31.nipic.com/20130628/10700765_164502542117_2.jpg">
</div>
</body>
</html>

布局很簡單,接下來就是jq控制各個(gè)圖片相對位置的變化了。

起始位置:五張圖片的 left 值在css已經(jīng)寫好,就是平分了整個(gè)盒子的寬度;

鼠標(biāo)經(jīng)過時(shí)候:經(jīng)過的那張圖片完全顯示,即占據(jù)寬度280px(圖片的寬度是280px),剩余的寬度是  (盒子寬度-280px)/剩余的圖片數(shù)量,根據(jù)所得值確定各個(gè)圖片的終止位置,left值;

感覺自己說的好復(fù)雜,先看下鼠標(biāo)講過某張圖的時(shí)候的動(dòng)畫效果:

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Document</title>
</head>
<body>
<style type="text/css">
div{
 width: 420px;
 height: 186px;
 border: 2px solid #ccc;
 overflow: hidden;
 position: relative;
 margin: 100px auto;
}
img{
 border: none;
 display: block;
 position: absolute;
 top: 0;
}
img:nth-of-type(1){
 left: 0;
}
img:nth-of-type(2){
 left: 84px;
}
img:nth-of-type(3){
 left: 168px;
}
img:nth-of-type(4){
 left: 252px;
}
img:nth-of-type(5){
 left: 336px;
}
</style>
<div class="box">
 <img src="http://tupian.enterdesk.com/2013/mxy/10/12/1/17.jpg">
 <img src="http://tupian.enterdesk.com/2013/mxy/07/0715/1/7.jpg">
 <img src="http://src.house.sina.com.cn/imp/imp/deal/5c/fa/e/afb00d1b581922fa567f9d65bfd_p1_mk1.jpg">
 <img src="http://www.wallcoo.com/nature/wild_field_01/wallpapers/1440x900/3787717_Wild_field_v1224236762.jpg">
 <img src="http://pic31.nipic.com/20130628/10700765_164502542117_2.jpg">
</div>
<script type="text/javascript" src="https://code.jquery.com/jquery-1.11.3.js"></script>
<script type="text/javascript">
var lefts;
var idx;
$("img").each(function(){
 $(this).mouseenter(function(e) {
 idx = $(this).index();
 lefts = idx * 35;
 //當(dāng)前圖片的變化
 $(this).stop(true).animate({"left" : idx * 35}, 1000);
 });
})

當(dāng)前圖片能夠愉快的玩耍了,接下來的重點(diǎn)就是其余圖片怎么運(yùn)動(dòng)。

此時(shí),我們可以把剩余的圖片分成左右兩部分,用jq 的  ":lt()" 和 ":gt()"方法寫出剩余部分的效果。這里有一個(gè)小小的坑,自己也是繞了半天,最后還是別人提醒的才繞出來。

以當(dāng)前圖片左側(cè)動(dòng)畫效果為例,最開始我是這么寫的

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Document</title>
</head>
<body>
<style type="text/css">
div{
 width: 420px;
 height: 186px;
 border: 2px solid #ccc;
 overflow: hidden;
 position: relative;
 margin: 100px auto;
}
img{
 border: none;
 display: block;
 position: absolute;
 top: 0;
}
img:nth-of-type(1){
 left: 0;
}
img:nth-of-type(2){
 left: 84px;
}
img:nth-of-type(3){
 left: 168px;
}
img:nth-of-type(4){
 left: 252px;
}
img:nth-of-type(5){
 left: 336px;
}
</style>
<div class="box">
 <img src="http://tupian.enterdesk.com/2013/mxy/10/12/1/17.jpg">
 <img src="http://tupian.enterdesk.com/2013/mxy/07/0715/1/7.jpg">
 <img src="http://src.house.sina.com.cn/imp/imp/deal/5c/fa/e/afb00d1b581922fa567f9d65bfd_p1_mk1.jpg">
 <img src="http://www.wallcoo.com/nature/wild_field_01/wallpapers/1440x900/3787717_Wild_field_v1224236762.jpg">
 <img src="http://pic31.nipic.com/20130628/10700765_164502542117_2.jpg">
</div>
<script type="text/javascript" src="https://code.jquery.com/jquery-1.11.3.js"></script>
<script type="text/javascript">
var lefts;
var idx;
$("img").each(function(){
 $(this).mouseenter(function(e) {
 idx = $(this).index();
 lefts = idx * 35;
 //當(dāng)前圖片的變化
 $(this).stop(true).animate({"left" : idx * 35}, 1000);
  $(“img:lt( idx )“).each(function(){
 $(this).stop(true).animate({"left" : ($(this).index()) * 35}, 1000)
 })
 });
})

看上去沒有什么錯(cuò)誤,見證奇跡~~~奇跡~~跡~~~然而并沒有什么奇跡,原因就是  $(“img:lt( idx )“) 這種寫法,里面的idx已經(jīng)不是變量了,所以無法獲取當(dāng)前的 idx 值,我們可以在外面定義一個(gè)變量,同時(shí)用 + 連接 lt 和變量 idx,再把變量引入進(jìn)去即可。

因此更改后如下:

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Document</title>
</head>
<body>
<style type="text/css">
div{
 width: 420px;
 height: 186px;
 border: 2px solid #ccc;
 overflow: hidden;
 position: relative;
 margin: 100px auto;
}
img{
 border: none;
 display: block;
 position: absolute;
 top: 0;
}
img:nth-of-type(1){
 left: 0;
}
img:nth-of-type(2){
 left: 84px;
}
img:nth-of-type(3){
 left: 168px;
}
img:nth-of-type(4){
 left: 252px;
}
img:nth-of-type(5){
 left: 336px;
}
</style>
<div class="box">
 <img src="http://tupian.enterdesk.com/2013/mxy/10/12/1/17.jpg">
 <img src="http://tupian.enterdesk.com/2013/mxy/07/0715/1/7.jpg">
 <img src="http://src.house.sina.com.cn/imp/imp/deal/5c/fa/e/afb00d1b581922fa567f9d65bfd_p1_mk1.jpg">
 <img src="http://www.wallcoo.com/nature/wild_field_01/wallpapers/1440x900/3787717_Wild_field_v1224236762.jpg">
 <img src="http://pic31.nipic.com/20130628/10700765_164502542117_2.jpg">
</div>
<script type="text/javascript" src="https://code.jquery.com/jquery-1.11.3.js"></script>
<script type="text/javascript">
var lefts;
var idx;
var imgL; 
$("img").each(function(){
 $(this).mouseenter(function(e) {
 idx = $(this).index();
  imgL = "img:lt(" + idx + ")"
 lefts = idx * 35;
 //當(dāng)前圖片的變化
 $(this).stop(true).animate({"left" : idx * 35}, 1000);
  $(imgL).each(function(){
 $(this).stop(true).animate({"left" : ($(this).index()) * 35}, 1000)
 })
 });
})

這樣奇跡就出現(xiàn)了~~ 同樣的道理,右側(cè)也是同樣的方法。

最終代碼如下:

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Document</title>
</head>
<body>
<style type="text/css">
div{
 width: 420px;
 height: 186px;
 border: 2px solid #ccc;
 overflow: hidden;
 position: relative;
 margin: 100px auto;
}
img{
 width:280px;
 height:186px;
 border: none;
 display: block;
 position: absolute;
 top: 0;
}
img:nth-of-type(1){
 left: 0;
}
img:nth-of-type(2){
 left: 84px;
}
img:nth-of-type(3){
 left: 168px;
}
img:nth-of-type(4){
 left: 252px;
}
img:nth-of-type(5){
 left: 336px;
}
</style>
<div class="box">
 <img src="http://tupian.enterdesk.com/2013/mxy/10/12/1/17.jpg">
 <img src="http://tupian.enterdesk.com/2013/mxy/07/0715/1/7.jpg">
 <img src="http://src.house.sina.com.cn/imp/imp/deal/5c/fa/e/afb00d1b581922fa567f9d65bfd_p1_mk1.jpg">
 <img src="http://www.wallcoo.com/nature/wild_field_01/wallpapers/1440x900/3787717_Wild_field_v1224236762.jpg">
 <img src="http://pic31.nipic.com/20130628/10700765_164502542117_2.jpg">
</div>
<script type="text/javascript" src="https://code.jquery.com/jquery-1.11.3.js"></script>
<script type="text/javascript">
//精簡之后的方法
var lefts;
var idx;
var imgL; 
var imgR;
$("img").each(function(){
 $(this).mouseenter(function(e) {
 idx = $(this).index();
 imgL = "img:lt(" + idx + ")" //獲取當(dāng)前左側(cè)的所有圖片,如果直接用 $("img:lt(idx)"),idx會(huì)被當(dāng)做字符串,獲取不到對應(yīng)的值
 imgR = "img:gt(" + idx + ")" //獲取當(dāng)前右側(cè)的所有圖片
 lefts = idx * 35;
 //當(dāng)前圖片的變化
 $(this).stop(true).animate({"left" : idx * 35}, 1000);
 //左側(cè)圖片的變化
 $(imgL).each(function(){
 $(this).stop(true).animate({"left" : ($(this).index()) * 35}, 1000)
 })
 //右側(cè)圖片的變化
 $(imgR).each(function(){
 $(this).stop(true).animate({"left" : ($(this).index()+7) * 35}, 1000)
 })
 });
})
$("img").each(function(){
 $(this).mouseleave(function(){
 $("img").each(function(){
 $(this).stop(true).animate({"left" : ($(this).index())*84}, 1000);
 })
 });
})
</script>
</body>
</html>

鼠標(biāo)移出效果,就是恢復(fù)到最開始的狀態(tài),就不在敘述了。

方法可能不是最簡單的方法,說的也可能不甚詳盡,希望大神多多指教,我也多多學(xué)習(xí)~~~

ps: 圖片不知道怎么加上來,稍后看下再改吧。歡迎各位加入交流學(xué)習(xí)前端群 466039913

以上就是本文的全部內(nèi)容,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,同時(shí)也希望多多支持腳本之家!

相關(guān)文章

  • Jquery index()方法 獲取相應(yīng)元素索引值

    Jquery index()方法 獲取相應(yīng)元素索引值

    昨天做一個(gè)Jqery效果,要獲取相應(yīng)元素的索引值,暈,又忘記了?,F(xiàn)在記錄下來,以后再次忘記好查怎么獲取相應(yīng)元素的索引值
    2012-10-10
  • jQuery回調(diào)函數(shù)的定義及用法實(shí)例

    jQuery回調(diào)函數(shù)的定義及用法實(shí)例

    這篇文章主要介紹了jQuery回調(diào)函數(shù)的定義及用法,以實(shí)例形式詳細(xì)分析了回調(diào)函數(shù)的原理與實(shí)現(xiàn)技巧,具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2014-12-12
  • JQuery實(shí)現(xiàn)文字無縫滾動(dòng)效果示例代碼(Marquee插件)

    JQuery實(shí)現(xiàn)文字無縫滾動(dòng)效果示例代碼(Marquee插件)

    本篇文章主要介紹了JQuery實(shí)現(xiàn)文字無縫滾動(dòng)效果示例代碼(Marquee插件),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。
    2017-03-03
  • jQuery cdn使用介紹

    jQuery cdn使用介紹

    如果您不希望下載并存放jQuery,那么也可以通過 CDN(內(nèi)容分發(fā)網(wǎng)絡(luò))引用它,下面是具體實(shí)現(xiàn),有類似需求的各位可以參考下哈,希望對你有所幫助
    2013-05-05
  • 簡單的jquery左側(cè)導(dǎo)航欄和頁面選中效果

    簡單的jquery左側(cè)導(dǎo)航欄和頁面選中效果

    這篇文章主要介紹一個(gè)簡單的jquery左側(cè)導(dǎo)航欄和頁面選中效果,此功能需引用jquery,需要的朋友可以參考下
    2014-08-08
  • 用jQuery中的ajax分頁實(shí)現(xiàn)代碼

    用jQuery中的ajax分頁實(shí)現(xiàn)代碼

    去年的時(shí)候剛接觸Jquery,也就做界面特效用了下,對其很有興趣,迫于現(xiàn)在項(xiàng)目中不怎么用,對其甚是想念呀,這不沒抽點(diǎn)時(shí)間再來看看Juery中好玩的東西。
    2011-09-09
  • jQuery實(shí)現(xiàn)頁面滾動(dòng)時(shí)層智能浮動(dòng)定位實(shí)例探討

    jQuery實(shí)現(xiàn)頁面滾動(dòng)時(shí)層智能浮動(dòng)定位實(shí)例探討

    在博客或者微博上面也會(huì)見到這個(gè)效果,所以客戶就也想要這樣的效果了,接下來為大家詳細(xì)介紹下浮動(dòng)定位實(shí)現(xiàn)的過程,感興趣的朋友可以參考下哈
    2013-03-03
  • jQuery EasyUI API 中文文檔 - Form表單

    jQuery EasyUI API 中文文檔 - Form表單

    jQuery EasyUI API 中文文檔 - Form表單,使用jQuery EasyUI的朋友可以參考下。
    2011-10-10
  • 詳解jQuery的表單驗(yàn)證插件--Validation

    詳解jQuery的表單驗(yàn)證插件--Validation

    jQuery Validate 插件為表單提供了強(qiáng)大的驗(yàn)證功能,讓客戶端表單驗(yàn)證變得更簡單,同時(shí)提供了大量的定制選項(xiàng),滿足應(yīng)用程序各種需求。本文主要對表單驗(yàn)證插件-Validation進(jìn)行案例分析,詳細(xì)介紹,具有很好的參考價(jià)值,需要的朋友一起來看下吧
    2016-12-12
  • jQuery函數(shù)的等價(jià)原生函數(shù)代碼示例

    jQuery函數(shù)的等價(jià)原生函數(shù)代碼示例

    原生方法明顯要比jQuery方法快,因?yàn)閖Query方法要處理瀏覽器兼容以及其他一些事情,如果你針對的是現(xiàn)代瀏覽器,那么使用原生方法會(huì)使性能有很大的提升
    2013-05-05

最新評論

桐城市| 孟连| 银川市| 阿合奇县| 山阳县| 岳普湖县| 隆回县| 上饶市| 东山县| 桂平市| 定远县| 盘锦市| 嫩江县| 抚顺县| 昂仁县| 沽源县| 淳化县| 新营市| 扎囊县| 桐梓县| 邹平县| 休宁县| 泽普县| 江陵县| 佛教| 驻马店市| 沾益县| 门源| 天柱县| 同江市| 永仁县| 贵港市| 龙海市| 溆浦县| 江油市| 金沙县| 宣武区| 武山县| 香港| 湖州市| 永济市|