Day11(節(jié)點(diǎn)屬性候址,緩動(dòng)動(dòng)畫,無縫焦點(diǎn)輪播)

父級(jí)
parentNode
兄弟 nextSibling previousSibling
子節(jié)點(diǎn) firstChild lastChild
孩子節(jié)點(diǎn) childNodes children
創(chuàng)建節(jié)點(diǎn) document.createElement(“l(fā)i”)纽匙;
插入節(jié)點(diǎn) appendChild insertBefore(插入的節(jié)點(diǎn),參照節(jié)點(diǎn))拍谐;
移出節(jié)點(diǎn) removeChild()
克隆節(jié)點(diǎn) cloneNode(ture&&false);

設(shè)置節(jié)點(diǎn)屬性

1.獲取節(jié)點(diǎn)屬性

getAttribute(屬性) 獲得節(jié)點(diǎn)屬性
//可以獲取屬性烛缔,沒法獲取樣式。例如href ,type轩拨,class践瓷,id,name

2. 設(shè)置節(jié)點(diǎn)屬性

SetAttribute(“屬性”,“值”)亡蓉;
比如我們想把box的class由box1改成box2晕翠,那么就
setAttribute(‘clas’,‘box2’)

3.刪除節(jié)點(diǎn)屬性

removeAttribute(‘屬性’)砍濒;

 var box = document.getElementById("box");

    box.getAttribute("id");         //  得到 id 屬性
    alert(box.getAttribute("id"));

    box.setAttribute("id","text");     //  設(shè)置/修改 id 屬性
    alert(box.getAttribute("id"));

    box.removeAttribute("id");     // 刪除id屬性
    alert(box.getAttribute("id"));

緩動(dòng)動(dòng)畫

就是將勻速的動(dòng)畫變成由快到慢或者由慢到快的非勻速動(dòng)畫崖面;
緩動(dòng)動(dòng)畫可以通過緩動(dòng)公式來達(dá)成元咙,數(shù)學(xué)好的可以自己做都行,這里只是叫一個(gè)方法
其實(shí)就是等差數(shù)列
I= 10,10,10,10,10,10
等差數(shù)列
I=10,8,6,4,2,0巫员;
一個(gè)盒子庶香,他的初始值為0;要他緩動(dòng)的走到500px的地方

初始值設(shè)為leader ,目標(biāo)值設(shè)為target

緩動(dòng)公式:Leader=leader+(target-leader)/10;

    <style>
        #box{
            width: 100px;
            height: 100px;
            background: pink;
            position: relative;
        }
    </style>


<div id="box"></div>
<!--<button id="btn">緩動(dòng)</button>-->

<script>
    //   點(diǎn)擊按鈕向右緩動(dòng)

//    var btn = document.getElementById("btn");
//    var box = document.getElementById("box");
//    var leader = 0, targer = 1000;
//    var time;
//    btn.onclick = function(){
//        time = setInterval(fun,30);
//    };
//    function fun(){
//        leader = leader + (targer - leader) / 10;
//        box.style.left = leader + "px";
//        if(leader>1000) {
//            clearInterval(time);
//        }
//    }

//點(diǎn)擊div 放大縮小
    var box = document.getElementById("box");
    var leader = 100, targer = 500;
    var time = null;
    var flag = true;
    box.onclick = function(){
        show();
    };
    function show(){
        clearInterval(time);
        flag ? targer = 500:targer = 100;
        time = setInterval(fun,10);
        function fun(){
            leader = leader + (targer - leader) / 10;
            box.style.width = leader + "px";
            box.style.height = leader + "px";
            console.log(leader);
            if(Math.round(leader)>=500||Math.round(leader)<=100){
                clearInterval(time);
            }
        }
        flag ? flag = false : flag = true;

    }

</script>

之前简识,我們講過函數(shù)自己調(diào)用自己赶掖,叫做遞歸調(diào)用

今天,學(xué)習(xí)一個(gè)新東西七扰,叫做回調(diào)函數(shù)奢赂,牢記 重要程度:**********

當(dāng)前函數(shù)執(zhí)行完之后,再執(zhí)行另一個(gè)函數(shù)颈走,就叫做回調(diào)函數(shù)

<button id="btn1">變色</button>
<button id="btn2">不變色</button>
</body>
<script>
    var btn1 = document.getElementById("btn1");
    var btn2 = document.getElementById("btn2");
    var body = document.getElementsByTagName("body")[0];
    function a(t,t2){
        alert(t);
        if(!t2){
            b();
        }else{
            c();
        }
    }
    function b (){
        body.style.background = "pink";
    }
    function c (){
        body.style.background = "";
    }

    btn1.onclick  = function(){
        a("變色")
    };
    btn2.onclick  = function(){
        a("不變色","sorry")
    }

最簡(jiǎn)單的無縫焦點(diǎn)輪播圖

布局
<div class="box" id="box">
    <ul id="ul">
        <li>![](images/img_01.jpg)</li>
        <li>![](images/img_02.jpg)</li>
        <li>![](images/img_03.jpg)</li>
        <li>![](images/img_04.jpg)</li>
        <li>![](images/img_05.jpg)</li>
        <li>![](images/img_01.jpg)</li>
    </ul>
    <div id="icons"></div>
    <!--<div class="btn">-->
        <!--<button id="left"></button>-->
        <!--<button id="right"></button>-->
    <!--</div>-->
</div>
css清單
*{
    margin: 0;padding: 0;
}
.box{
    margin:40px auto;
    width: 800px;
    height: 300px;
    position: relative;
    overflow: hidden;
}
ul{
    list-style: none;
    position: absolute;
    width: 4800px;
}
li{
    float: left;
}
button{
    border: none;
    outline: none;
    color: transparent;
}
.btn{
    display: none;
}
.box:hover .btn{
    display: block;
    opacity: 0.8;
}
#left,#right{
    width:39px;height:79px;
    background:url(../images/left_right.png) no-repeat;
    cursor:pointer;
    position:absolute;
    top: 36%;
}
#left{
    left:0;
    background-position:-17px -10px;
}
#right{
    right:0;background-position:-64px -10px;
}

#icons{
    position: absolute;
    bottom: 10px;
    left: 42%;
}
span{
    display: inline-block;
    width: 10px;
    height: 10px;
    background-color: #efefef;
    border-radius: 50%;
    margin: 10px;
    cursor: pointer;
}
.ys{
   background-color: orangered;
}
javascript清單
<script>
    var ul = document.getElementsByTagName("ul")[0];
    var icons = document.getElementById("icons");
//    var btn_left = document.getElementById("left");
//    var btn_right = document.getElementById("right");
    var timer = null;   //  定時(shí)器的值膳灶;
    var count = 0 ;  //  圖片的索引值;
    var leader = 0, target;

    for(var i = 1;i<ul.children.length;i++){   // 遍歷添加焦點(diǎn)
        var span = document.createElement("span");
        icons.appendChild(span);
    }
    var spans = icons.children;
    spans[0].setAttribute("class","ys");
    setTimeout(fun,2000);
    function fun(){
        count++;
        if(count>5){
            count = 1;
            leader = 0;
            ul.style.left = "0px";
        }
        target = count * -800;
        timer = setInterval(function(){
            leader = leader + (target - leader) / 10;
            ul.style.left = leader + "px";
            if(Math.round(leader) <= count*-800){
                clearInterval(timer);
                setTimeout(fun,2000);
            }
        },1);
        for(var k = 0; k < spans.length; k++) {//循環(huán)遍歷每一個(gè)小圓點(diǎn)
            spans[k].removeAttribute('class');//把所有的小圓點(diǎn)樣式清除掉
        }
        count>4?spans[0].setAttribute('class', 'ys'):spans[count].setAttribute('class', 'ys');
    }
</script>

優(yōu)點(diǎn)立由,寫得快轧钓,無縫輪播
缺點(diǎn),只能自己輪播锐膜,無法控制
這種寫法毕箍,只適用于自動(dòng)輪播
真正做焦點(diǎn)輪播(就是可以通過小圓點(diǎn)和左右按鈕控制的輪播,肯定要用節(jié)點(diǎn)做道盏,而不是用一排圖片做)而柑;

元素.offsetWidth

獲得元素的自身寬度

緩動(dòng)公式2
var speed;//步長(zhǎng)
Speed=(目標(biāo)值-本身)/8;
本身=本身+speed荷逞;

demo 點(diǎn)擊圖片放大縮小

<div class="box" id="box">

        ![](images/1.jpg)
        ![](images/2.jpg)
        ![](images/3.jpg)
        ![](images/4.jpg)

</div>
<div id="show"></div>
<style>
        *{
            margin: 0;padding: 0;
        }
        html{
            width: 100%;
            height: 100%;
        }
        body{
            width: 100%;
            height: 100%;
        }
        .box{
            width: 1100px;
        }
        .box img{
            float: left;
        }
        #show{
            width: 100%;
            height: 100%;
            background: #555;
            opacity: 0.5;
            z-index: 1;
            display: none;
        }
        .cur{
            position: absolute;
            top: 50%;
            left: 50%;
            transform: translate(-50%,-50%);
        }
    </style>
<script>
    var box = document.getElementById("box");
    var imgs = box.getElementsByTagName("img");
    var mask = document.getElementById("mask");
    var timer = null;
    var leader = 256;
    var target = 1000;
    for(var i = 0;i<imgs.length;i++){
        imgs[i].onclick = function(){
            var curImg = this.cloneNode(true);
            document.body.appendChild(curImg);
            curImg.setAttribute("class","cur");
            show.style.display = "block";

            animate(curImg,target);

            curImg.onclick = function(){
                var that = this;
                animate(that,leader,function(){
                    that.parentNode.removeChild(that);
                    show.style.display = "none";
                })
            }
        }
    }
    function animate(obj,dest,fun){
        clearInterval(timer);
        var speed;
        timer = setInterval(function(){
            speed = (dest - obj.offsetWidth)/8;
            if(speed>0){
                speed = Math.ceil(speed);
            }else{
                speed = Math.floor(speed);
            }
            if(obj.offsetWidth != dest){
                obj.style.width = obj.offsetWidth + speed + "px";
            }else{
                clearInterval(timer);
                if(fun){
                    fun();
                }
            }
        },30)
    }
</script>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末媒咳,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子种远,更是在濱河造成了極大的恐慌伟葫,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,104評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件院促,死亡現(xiàn)場(chǎng)離奇詭異筏养,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)常拓,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門渐溶,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人弄抬,你說我怎么就攤上這事茎辐。” “怎么了?”我有些...
    開封第一講書人閱讀 168,697評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵拖陆,是天一觀的道長(zhǎng)弛槐。 經(jīng)常有香客問我,道長(zhǎng)依啰,這世上最難降的妖魔是什么乎串? 我笑而不...
    開封第一講書人閱讀 59,836評(píng)論 1 298
  • 正文 為了忘掉前任,我火速辦了婚禮速警,結(jié)果婚禮上叹誉,老公的妹妹穿的比我還像新娘。我一直安慰自己闷旧,他們只是感情好长豁,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,851評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著忙灼,像睡著了一般匠襟。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上该园,一...
    開封第一講書人閱讀 52,441評(píng)論 1 310
  • 那天酸舍,我揣著相機(jī)與錄音,去河邊找鬼爬范。 笑死,一個(gè)胖子當(dāng)著我的面吹牛弱匪,可吹牛的內(nèi)容都是我干的青瀑。 我是一名探鬼主播,決...
    沈念sama閱讀 40,992評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼萧诫,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼斥难!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起帘饶,我...
    開封第一講書人閱讀 39,899評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤哑诊,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后及刻,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體镀裤,經(jīng)...
    沈念sama閱讀 46,457評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,529評(píng)論 3 341
  • 正文 我和宋清朗相戀三年缴饭,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了暑劝。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,664評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡颗搂,死狀恐怖担猛,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤傅联,帶...
    沈念sama閱讀 36,346評(píng)論 5 350
  • 正文 年R本政府宣布先改,位于F島的核電站,受9級(jí)特大地震影響蒸走,放射性物質(zhì)發(fā)生泄漏仇奶。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,025評(píng)論 3 334
  • 文/蒙蒙 一载碌、第九天 我趴在偏房一處隱蔽的房頂上張望猜嘱。 院中可真熱鬧,春花似錦嫁艇、人聲如沸朗伶。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)论皆。三九已至,卻和暖如春猾漫,著一層夾襖步出監(jiān)牢的瞬間点晴,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工悯周, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留粒督,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,081評(píng)論 3 377
  • 正文 我出身青樓禽翼,卻偏偏與公主長(zhǎng)得像屠橄,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子闰挡,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,675評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容