1. 程式人生 > 其它 >JQuery 黑馬案例 手風琴 ! Important(名片摺疊案例)

JQuery 黑馬案例 手風琴 ! Important(名片摺疊案例)

技術標籤:jquery自學html+css黑馬案例htmljquerycss3

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
<link
rel="stylesheet" href="index.css">
</head> <body> <div class="king-box"> <ul> <li class="current"> <a href=""> <!-- 設定定位poa的元素必須給自身寬高,因為設定完poa寬高預設是0 --> <
img
src="images/c1.jpg" alt="" class="small">
<img src="images/c.png" alt="" class="big"> </a> </li> <li> <a href=""> <
img
src="images/h1.jpg" alt="" class="small">
<img src="images/h.png" alt="" class="big"> </a> </li> <li> <a href=""> <img src="images/l1.jpg" alt="" class="small"> <img src="images/l.png" alt="" class="big"> </a> </li> <li> <a href=""> <img src="images/m1.jpg" alt="" class="small"> <img src="images/m.png" alt="" class="big"> </a> </li> <li> <a href=""> <img src="images/t1.jpg" alt="" class="small" > <img src="images/t.png" alt="" class="big"> </a> </li> <li> <a href=""> <img src="images/w1.jpg" alt="" class="small"> <img src="images/w.png" alt="" class="big"> </a> </li> <li> <a href=""> <img src="images/z1.jpg" alt="" class="small"> <img src="images/z.png" alt="" class="big"> </a> </li> </ul> </div> </body> <script src="jquery.min.js"></script> <script src="index.js"></script> <script> /*在此實現效果,當滑鼠移入時,當前移入的li中的small淡出,big淡入*/ /*其他兄弟類則相反,其他兄弟li中的big淡出,讓big的兄弟small淡入,順序不要寫反了,否則效果不一樣,仔細看明白效果之後再寫*/ /* $(function(){ 滑鼠移入事件mouseenter $('.king-box li').mouseenter(function(){ 效果有了,但是還需要其移入的寬度做變化,否則li的寬度為69,不夠大圖出來,因此看不出效果 觀察效果,發現一移上去,其移入的li變成由69變成224 $(this).stop().animate({ width:224 }).find('.small').stop().fadeOut().siblings('.big').stop().fadeIn() $(this).siblings('li').stop().animate({ width:69 經測試,都差不多,這兩種順序不同差別比較小,在此均可實現效果 }).find('.big').stop().fadeOut().siblings('.small').stop().fadeIn() 自做: 分割線—————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————— 原版: $(this).siblings('li').stop().animate({ width:69 }).find(".small").stop().fadeIn().siblings(".big").stop().fadeOut(); }) }) }) */ </script> </html>

/*在此實現效果,當滑鼠移入時,當前移入的li中的small淡出,big淡入*/
/*其他兄弟類則相反,其他兄弟li中的big淡出,讓big的兄弟small淡入,順序不要寫反了,否則效果不一樣,仔細看明白效果之後再寫*/ 
$(function(){               /*滑鼠移入事件mouseenter*/ 
    $('.king-box li').mouseenter(function(){
        /*效果有了,但是還需要其移入的寬度做變化,否則li的寬度為69,不夠大圖出來,因此看不出效果,肯定沒有動畫切換效果*/ 
        /*觀察效果,發現一移上去,其移入的li變成由69變成224*/ 
        $(this).stop().animate({
            width:224
        },300).find('.small').stop().fadeOut().siblings('.big').stop().fadeIn()

/*         $(this).siblings('li').stop().animate({
            width:69
        }).find('.big').stop().fadeOut().siblings('.small').stop().fadeIn() */
        $(this).siblings('li').stop().animate({
            width:69
        }).find(".small").stop().fadeIn().siblings(".big").stop().fadeOut();
    })

})


/**/ 
.king-box{
    background:url("./images/bg.png") no-repeat;
    width: 872px;
    height: 89px;
    margin: 200px auto;
}

.small{
    width: 69px;
    height: 69px;
    display: block;
    /*預設小的圖片顯示*/
}
/*1.調整大小對應圖片的大小*/
/*2.預設第一個有current類的才顯示big,其餘沒有的僅僅顯示small,隱藏big,已實現後半句話~*/
.big{
    width: 224px;
    height: 69px;
    display: none;
    /*display: block;會看到均處於li的最左邊??? 不,small的定位與big無關,small定位依據的li,而非big*/
    /*預設大的圖片隱藏*/
}

.king-box ul{
    height: 89px;
    padding-top: 10px;/*把整個ul中的所有li均擠下來,要不位置不對不好看*/
}

.king-box li{
    float: left;
    list-style: none;
}

/*預設第一個有current類的li內部才顯示big,其餘沒有的僅僅顯示small,隱藏big*/
/*3.接下來實現前半句話,為第一個新增類,使big顯示,small隱藏*/

li.current .big{
    display: block;
}
/*已實現前半句話*/
li.current .small{
    display: none;
/*    display:block; 測試為什麼要給.samll 加 poa用*/
}



/*4.將小圖片依據li定位到left0 top0上,為什麼必須給小圖.samll開poa定位??
———>目的就是因為每個img均為塊,經測試發現如果不給其中一個設定poa脫離文件流,兩個img同時有大圖片.big就會掉下來*/
.king-box li .small{
    position: absolute;
    /*設定定位後,必須給small自身寬高!!,為元素設定position時,如果沒有為其設定寬、高,則值預設為0*/
    left: 0px;
    height: 0px;
    width: 69px;
    height: 69px;
}

.king-box li{
    position: relative;     /*為li設定por,子絕父項,大圖是其sib(兄弟)*/
    /*脫離浮動了,必須給li一個寬高,否則圖片不顯示,因為內部的圖片是依據li定位的,li都沒了,沒發定位,就消失了*/
    width: 69px;
    height: 69px;
    /*這裡的li必須給寬高,因為需要與擁有current的li進行區別,滑鼠移入展開li寬度變化,其餘沒變的寬度必須是小的69(js中其他兄弟元素的animate效果)*/
    /*1.這裡給寬高的———>目的就是為了模擬讓未做動畫時的其他li元素均為69,即為縮起來小圖的寬高li,模擬其效果*/
    /*加了current的類,把width變成244,否則裝不下大圖*/
}

.king-box  li.current{
    /*必須提權,否則current類的li寬度給不上,就全是69*69的了*/
    width: 224px;/*加了current的類,把width變成244,否則裝不下大圖*/

    /*寫完js後回來,瞭解到current的含義,current類設定的寬度僅僅是第一個動畫開始前預留出的(動畫切換後大小的)開頭—
        ———>目的就是為了模擬第一個已經結束完動畫寬度由69到224
      因為一開始如果沒有current類,所有li的寬度均將是69,都是縮起來的.*/
}

在這裡插入圖片描述