JS基礎(chǔ)學(xué)習(xí):輪播圖完善/offset系列/圖片跟隨鼠標(biāo)

案例:圖片跟隨鼠標(biāo)飛

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <style>
            img{
                position: absolute;
            }
        </style>
    </head>
    <body>
        <img id="im" src="images/01.jpg" alt="">
        <script src="js/common.js"></script>
        <script>
            document.onmousemove = function(e) {
                my$('im').style.left = e.clientX + "px";
                my$('im').style.top = e.clientY + "px";
            };
        </script>
    </body>
</html>

直接通過(guò)document獲取元素

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>啊娃娃</title>
    </head>
    <body>
        <script>
            // 獲取的是元素---標(biāo)簽
            console.log(document.body);
            // 獲取的 是標(biāo)簽中的值
            console.log(document.title);
            document.title = "修改了";
            //獲取html
            console.log(document.documentElement)
        </script>
    </body>
</html>

offset系列

offsetWidth:獲取元素的寬
offsetHeight:獲取元素的高
offsetLeft:獲取元素距離左邊的距離
offsetTop:獲取元素距離上面的距離

  • 沒(méi)有脫離文檔流:
    offsetLeft:父級(jí)元素margin+父級(jí)元素padding+父級(jí)元素border+自己的margin
  • 脫離文檔流:
    主要是自己的left和自己的margin
        <div id="dv1" style="height: 20px;"></div>
        <div id="dv2"></div>
        <input type="button" value="顯示效果" id="btn">
        <script src="js/common.js"></script>
        <script>
            my$('btn').onclick = function() {
                // 在style標(biāo)簽中設(shè)置的樣式屬性獲取不到
                // 在style屬性中設(shè)置的樣式 可以獲取到.
                console.log(my$('dv1').style.height);

                // 獲取元素的寬和高,使用這個(gè)offset系列
                console.log(my$('dv1').offsetLeft);
            };
        </script>

案例:完整輪播圖

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <style type="text/css">
            * {
                padding: 0;
                margin: 0;
                list-style: none;
                border: 0;
            }

            .all {
                width: 500px;
                height: 200px;
                padding: 7px;
                border: 1px solid #ccc;
                margin: 100px auto;
                position: relative;
            }

            .screen {
                width: 500px;
                height: 200px;
                overflow: hidden;
                position: relative;
            }

            .screen li {
                width: 500px;
                height: 200px;
                overflow: hidden;
                float: left;
            }

            .screen ul {
                position: absolute;
                left: 0;
                top: 0px;
                width: 3000px;
            }

            .all ol {
                position: absolute;
                right: 10px;
                bottom: 10px;
                line-height: 20px;
                text-align: center;
            }

            .all ol li {
                float: left;
                width: 20px;
                height: 20px;
                background: #fff;
                border: 1px solid #ccc;
                margin-left: 10px;
                cursor: pointer;
            }

            .all ol li.current {
                background: #DB192A;
            }

            #arr {
                display: none;
            }

            #arr span {
                width: 40px;
                height: 40px;
                position: absolute;
                left: 5px;
                top: 50%;
                margin-top: -20px;
                background: #000;
                cursor: pointer;
                line-height: 40px;
                text-align: center;
                font-weight: bold;
                font-family: '黑體';
                font-size: 30px;
                color: #fff;
                opacity: 0.3;
                border: 1px solid #fff;
            }

            #arr #right {
                right: 5px;
                left: auto;
            }
        </style>

    </head>
    <body>
        <div class="all" id='box'>
            <div class="screen">
                <!--相框-->
                <ul>
                    <li><img src="images/1.jpg" width="500" height="200" /></li>
                    <li><img src="images/2.jpg" width="500" height="200" /></li>
                    <li><img src="images/3.jpg" width="500" height="200" /></li>
                    <li><img src="images/4.jpg" width="500" height="200" /></li>
                    <li><img src="images/5.jpg" width="500" height="200" /></li>
                </ul>
                <ol>
                </ol>
            </div>
            <div id="arr"><span id="left">&lt;</span><span id="right">&gt;</span></div>
        </div>
        <script src="js/common.js"></script>
        <script>
            // 最外面的div
            var box = my$('box');
            // 獲取相框
            var screen = box.children[0];
            // 焦點(diǎn)的div
            var arr = my$('arr');
            // 獲取相框的寬度
            var imgWidth = screen.offsetWidth;
            // 獲取ul
            var ulObj = screen.children[0];
            // 獲取ul中所有的li
            var list = ulObj.children;
            // 獲取ol
            var olObj = screen.children[1];
            var pic = 0;
            // 創(chuàng)建小按鈕
            for (i = 0; i < list.length; i++) {
                var liObj = document.createElement('li');
                liObj.setAttribute('index', i);
                olObj.appendChild(liObj);
                liObj.innerHTML = i + 1;
                liObj.onmouseover = function() {
                    for (j = 0; j < olObj.children.length; j++) {
                        olObj.children[j].removeAttribute('class');
                    }
                    this.className = "current";
                    pic = this.getAttribute('index');
                    animate(ulObj, -pic * imgWidth);
                };
            }
            olObj.children[0].className = "current";
            // 克隆一個(gè)ul中的第一個(gè)li,加入到ul中的最后
            ulObj.appendChild(ulObj.children[0].cloneNode(true))
            var timeId = setInterval(rightClick, 1000);
            box.onmouseover = function() {
                arr.style.display = "block";
                clearInterval(timeId);

            };
            box.onmouseout = function() {
                arr.style.display = "none";
                timeId = setInterval(rightClick, 1000);
            };
            my$('right').onclick = rightClick;

            function rightClick() {
                if (pic == list.length - 1) {
                    pic = 0;
                    ulObj.style.left = 0 + "px";
                }
                pic++;
                animate(ulObj, -pic * imgWidth);
                // 如果pic==5 此時(shí)顯示第6個(gè)圖(內(nèi)容是第一張圖),第一個(gè)小按鈕有顏色)
                if (pic == list.length - 1) {
                    olObj.children[olObj.children.length - 1].className = "";
                    olObj.children[0].className = "current";
                } else {
                    for (i = 0; i < olObj.children.length; i++) {
                        olObj.children[i].removeAttribute('class');
                    }
                    olObj.children[pic].className = "current";
                }
            }
            my$('left').onclick = function() {
                if (pic == 0) {
                    pic = 5;
                    ulObj.style.left = -pic * imgWidth + "px";
                }
                pic--;
                animate(ulObj, -pic * imgWidth);
                // 設(shè)置小按鈕的顏色
                for (i = 0; i < olObj.children.length; i++) {
                    // 所有的小按鈕干掉顏色
                    olObj.children[i].removeAttribute('class');
                }
                olObj.children[pic].className = "current";
            }


            
        </script>
    </body>
</html>

案例:無(wú)縫輪播圖

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <style>
            * {
                margin: 0;
                padding: 0;
            }

            ul {
                list-style: none;

            }

            img {
                vertical-align: top;
            }

            /*取消圖片底部3像素距離*/
            .box {
                width: 520px;
                height: 280px;
                margin: 100px auto;
                background-color: pink;
                border: 1px solid red;
                position: relative;
                overflow: hidden;
            }

            .box ul li {
                float: left;
            }

            .box ul {
                width: 2600px;
                position: absolute;
                left: 0;
                top: 0;
            }
        </style>

    </head>
    <body>
        <div class="box" id="screen">
            <ul>
                <li><img src="images/01.jpg" alt="" /></li>
                <li><img src="images/02.jpg" alt="" /></li>
                <li><img src="images/03.jpg" alt="" /></li>
                <li><img src="images/04.jpg" alt="" /></li>
                <li><img src="images/01.jpg" alt="" /></li>
            </ul>
        </div>
        <script src="js/common.js"></script>
        <script>
            function f1() {
                current -= 10;
                var ulObj = my$('screen').children[0];
                if (current < -1200) {
                    ulObj.style.left = 0 + "px";
                    current = 0;
                    console.log(current)
                } else {
                    ulObj.style.left = current + "px";
                }
            }
            var current = 0;
            var timeId =setInterval(f1, 20);
            my$('screen').onmouseover=function(){
                clearInterval(timeId);
            }
            my$('screen').onmouseout=function(){
                timeId =setInterval(f1, 20);
            }
        </script>
    </body>
</html>

案例:淘寶輪播圖

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <style>
            body,
            ul,
            ol,
            li,
            img {
                margin: 0;
                padding: 0;
                list-style: none;
            }

            #box {
                width: 520px;
                height: 280px;
                padding: 5px;
                position: relative;
                border: 1px solid #ccc;
                margin: 100px auto 0;
                overflow: hidden;
            }

            .ad {
                width: 520px;
                height: 280px;
                /*overflow: hidden;*/
                position: relative;
            }

            #box img {
                width: 520px;
            }

            .ad ol {
                position: absolute;
                right: 10px;
                bottom: 10px;
            }

            .ad ol li {
                width: 20px;
                height: 20px;
                line-height: 20px;
                border: 1px solid #ccc;
                text-align: center;
                background: #fff;
                float: left;
                margin-right: 10px;
                cursor: pointer;
                _display: inline;
            }

            .ad ol li.current {
                background: yellow;
            }

            .ad ul li {
                float: left;
            }

            .ad ul {
                position: absolute;
                top: 0;
                width: 2940px;
            }

            .ad ul li.current {
                display: block;
            }

            #focusD {
                display: none;
            }

            #focusD span {
                width: 40px;
                height: 40px;
                position: absolute;
                left: 5px;
                top: 50%;
                margin-top: -20px;
                background: #000;
                cursor: pointer;
                line-height: 40px;
                text-align: center;
                font-weight: bold;
                font-family: '黑體';
                font-size: 30px;
                color: #fff;
                opacity: 0.3;
                border: 1px solid #fff;
            }

            #focusD #right {
                right: 5px;
                left: auto;
            }
        </style>

    </head>
    <body>
        <div id="box" class="all">
            <div class="ad">
                <ul id="imgs">
                    <li><img src="images/1.jpg" /></li>
                    <li><img src="images/2.jpg" /></li>
                    <li><img src="images/3.jpg" /></li>
                    <li><img src="images/4.jpg" /></li>
                    <li><img src="images/5.jpg" /></li>
                </ul>
            </div>
            <!--相框-->
            <div id="focusD"><span id="left">&lt;</span><span id="right">&gt;</span>
            </div>
        </div>
        <script src="js/common.js"></script>
        <script>
            // 獲取最外面的div
            var box = my$('box');
            // 獲取相框
            var ad = box.children[0];
            // 獲取相框的寬度
            var imgWidth = ad.offsetWidth;
            // 獲取ul
            var ulObj = ad.children[0];
            // 獲取左右焦點(diǎn)的div
            var foncusD = my$('focusD');
            // 顯示和隱藏左右焦點(diǎn)的div---為box注冊(cè)事件
            box.onmouseover = function() {
                foncusD.style.display = "block";
            };
            box.onmouseout = function() {
                foncusD.style.display = "none";
            };
            // 點(diǎn)擊右邊按鈕
            var index = 0;
            my$('right').onclick = function() {
                if (index < ulObj.children.length - 1) {
                    index++;
                    animate(ulObj, -index * imgWidth);
                }
            };
            my$('left').onclick = function() {
                if (index > 0) {
                    index--;
                    animate(ulObj, -index * imgWidth);
                }
            };
            
             
        </script>
    </body>
</html>

demo地址:

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末胰坟,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌嘴秸,老刑警劉巖舀瓢,帶你破解...
    沈念sama閱讀 219,039評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件囤踩,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡缅糟,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)祷愉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)窗宦,“玉大人,你說(shuō)我怎么就攤上這事二鳄「昂” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,417評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵泥从,是天一觀的道長(zhǎng)句占。 經(jīng)常有香客問(wèn)我,道長(zhǎng)躯嫉,這世上最難降的妖魔是什么纱烘? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,868評(píng)論 1 295
  • 正文 為了忘掉前任杨拐,我火速辦了婚禮,結(jié)果婚禮上擂啥,老公的妹妹穿的比我還像新娘哄陶。我一直安慰自己,他們只是感情好哺壶,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,892評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布屋吨。 她就那樣靜靜地躺著,像睡著了一般山宾。 火紅的嫁衣襯著肌膚如雪至扰。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,692評(píng)論 1 305
  • 那天资锰,我揣著相機(jī)與錄音敢课,去河邊找鬼。 笑死绷杜,一個(gè)胖子當(dāng)著我的面吹牛直秆,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播鞭盟,決...
    沈念sama閱讀 40,416評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼圾结,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了齿诉?” 一聲冷哼從身側(cè)響起筝野,我...
    開(kāi)封第一講書(shū)人閱讀 39,326評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎鹃两,沒(méi)想到半個(gè)月后遗座,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,782評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡俊扳,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,957評(píng)論 3 337
  • 正文 我和宋清朗相戀三年途蒋,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片馋记。...
    茶點(diǎn)故事閱讀 40,102評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡号坡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出梯醒,到底是詐尸還是另有隱情宽堆,我是刑警寧澤,帶...
    沈念sama閱讀 35,790評(píng)論 5 346
  • 正文 年R本政府宣布茸习,位于F島的核電站畜隶,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜籽慢,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,442評(píng)論 3 331
  • 文/蒙蒙 一浸遗、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧箱亿,春花似錦跛锌、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,996評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至脑豹,卻和暖如春郑藏,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背晨缴。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,113評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工译秦, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留峡捡,地道東北人击碗。 一個(gè)月前我還...
    沈念sama閱讀 48,332評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像们拙,于是被迫代替她去往敵國(guó)和親稍途。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,044評(píng)論 2 355

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