从两侧向中间拼合的JavaScript图片切换效果

(写在文前的只言片语、意书情殇)长歌破晓穿云过,响彻碧霄振九天.------Jason Zhang

web开发已现世多年,技术成熟且学习平台广泛,笔者针对其中细节从本质上进行解释.力求透彻.

左右.gif

html部分


    <div id="fade_focus">
        <div class="loading">Loading...<br />![](loading.gif)</div>
        <ul>
            <li>![](wall1.jpg)</li>
            <li>![](wall2.jpg)</li>
            <li>![](wall3.jpg)</li>
            <li>![](wall4.jpg)</li>
        </ul>
    </div>

css部分


          .d1 {
            width: 444px;
            height: auto;
            overflow: hidden;
            border: #666666 2px solid;
            background-color: #000000;
            position: relative;
        }
        
        .left {
            width: 222px;
            height: 209px;
            overflow: hidden;
            position: absolute;
            z-index: 500;
            top: 0px;
            left: -222px;
        }
        
        .right {
            width: 222px;
            height: 209px;
            overflow: hidden;
            position: absolute;
            z-index: 503;
            background-position: right top;
            background-repeat: no-repeat;
            right: -222px;
            top: 0px;
        }
        
        .loading {
            width: 444px;
            border: #666666 2px solid;
            background-color: #000000;
            color: #FFCC00;
            font-size: 12px;
            height: 179px;
            text-align: center;
            padding-top: 30px;
            font-family: Verdana, Arial, Helvetica, sans-serif;
            font-weight: bold;
        }
        
        .d2 {
            width: 100%;
            height: 209px;
            overflow: hidden;
        }
        
        .num_list {
            position: absolute;
            width: 100%;
            left: 0px;
            bottom: -1px;
            background-color: #000000;
            color: #FFFFFF;
            font-size: 12px;
            padding: 4px 0px;
            height: 20px;
            overflow: hidden;
            z-index: 1000;
        }
        
        .num_list span {
            display: inline-block;
            height: 16px;
            padding-left: 6px;
        }
        
        img {
            border: 0px;
        }
        
        ul {
            display: none;
        }
        
        .button {
            position: absolute;
            z-index: 1003;
            right: 0px;
            bottom: 2px;
            font-size: 13px;
            font-weight: bold;
            font-family: Arial, Helvetica, sans-serif;
        }
        
        .b1,
        .b2 {
            background-color: #666666;
            display: block;
            float: left;
            padding: 2px 6px;
            margin-right: 3px;
            color: #FFFFFF;
            text-decoration: none;
            cursor: pointer;
        }
        
        .b2 {
            color: #FFCC33;
            background-color: #FF6633;
        }

JavaScript原生部分


            var s = function() {
                var interv = 2000; //切换时间
                var interv2 = 10; //速速
                var opac1 = 80; //文字背景透明度
                var source = "fade_focus" //焦点轮换容器id
                function getTag(tag, obj) {
                    if(obj == null) {
                        return document.getElementsByTagName(tag)
                    } else {
                        return obj.getElementsByTagName(tag)
                    }
                }

                function getid(id) {
                    return document.getElementById(id)
                };
                var opac = 0,
                    j = 0,
                    t = 63,
                    num = -2,
                    scton = 0,
                    timer, timer2, timer3;
                var id = getid(source);
                id.removeChild(getTag("div", id)[0]);
                var li = getTag("li", id);
                var div = document.createElement("div");
                var title = document.createElement("div");
                var span = document.createElement("span");
                var button = document.createElement("div");
                var left = document.createElement("div");
                var right = document.createElement("div");
                button.className = "button";
                for(var i = 0; i < li.length; i++) {
                    var a = document.createElement("a");
                    a.innerHTML = i + 1;
                    a.onclick = function() {
                        clearTimeout(timer);
                        clearTimeout(timer2);
                        clearTimeout(timer3);
                        j = parseInt(this.innerHTML) - 2;
                        t = 63;
                        slide();
                    };
                    a.className = "b1";
                    a.onmouseover = function() {
                        this.className = "b2"
                    };
                    a.onmouseout = function() {
                        this.className = "b1";
                        sc(j)
                    };
                    button.appendChild(a);
                }
                //控制透明度
                function alpha(obj, n) {
                    if(document.all) {
                        obj.style.filter = "alpha(opacity=" + n + ")";
                    } else {
                        obj.style.opacity = (n / 100);
                    }
                }
                //控制焦点按钮
                function sc(n) {
                    for(var i = 0; i < li.length; i++) {
                        button.childNodes[i].className = "b1"
                    };
                    button.childNodes[n].className = "b2";
                }
                title.className = "num_list";
                title.appendChild(span);
                alpha(title, opac1);
                id.className = "d1";
                div.className = "d2";
                left.className = "left";
                right.className = "right";
                id.appendChild(div);
                id.appendChild(left);
                id.appendChild(right);
                id.appendChild(title);
                id.appendChild(button);
                //滑动图片
                var slide = function() {
                    var im = -222;
                    var k = 21;
                    if(j < li.length - 1) {
                        j++
                    } else {
                        j = 0
                    };
                    change_dis(1);
                    sc(j);
                    left.style.backgroundImage = "url(" + getTag("img", li[j])[0].src + ")";
                    right.style.backgroundImage = "url(" + getTag("img", li[j])[0].src + ")";

                    function run() {
                        if(k > 1) {
                            k--
                        };
                        im += k;
                        if(im > 0) {
                            im = 0
                        };
                        left.style.left = String(im) + "px";
                        right.style.right = String(im) + "px";
                        if(im < 0) {
                            timer = setTimeout(run, interv2)
                        } else {
                            span.innerHTML = getTag("img", li[j])[0].alt;
                            scrolltxt();
                            change_dis();
                            timer2 = setTimeout(slide, interv)
                        }
                    }
                    run();
                }
                var change_dis = function(n) {
                    if(n > 0) {
                        left.style.display = "block";
                        right.style.display = "block";
                    } else {
                        left.style.display = "none";
                        right.style.display = "none";
                        div.innerHTML = li[j].innerHTML;
                    }
                }
                var scrolltxt = function() {
                    t += num;
                    span.style.marginTop = t + "px";
                    if(num < 0 && t > 3) {
                        timer3 = setTimeout(scrolltxt, interv2)
                    } else {
                        t = 63
                    }
                };
                slide();
            }
            //初始化
        window.onload = s;

                                              笔没墨了!!!

预知详情,请关注下集!!!!!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容