<html>
<head>
<title></title>
<style type="text/css">
    #center {
        position: absolute;
    }
    #slider {
        position: absolute;
        width: 600px;  /*메뉴 가로크기*/
        height: 300px; /*메뉴 세로크기*/
        left: 0px;
        top: 0px;
        overflow: hidden;
    }
    #slider .slide {
        position: absolute;
        top: 0px;
        height: 300px;
        width: 400px;
        background: #000;
        overflow: hidden;
        border-left: #000 solid 1px;
        cursor: default;
    }
    #slider .title   { /*서브메뉴제목*/
        color: #FFF;
        font-weight: bold;
        font-size: 13px;
        font-family:verdana;
        letter-spacing:-1px;

    }
    #slider .backgroundText {
        position: absolute;
        width: 100%;
        height: 100%;
        top: 100%;
        background: #000;
        filter: alpha(opacity=40);
        opacity: 0.4;
    }
    #slider .text {
        position: absolute;
        top: 1%;
        top: 100%;
        color: #FFF;
        font-family: verdana;
        font-size: 11px;
        width: 250px;
        left: 10px;
    }
    #slider .diapo {
        position: absolute;
        filter: alpha(opacity=100);
        opacity: 1;
        visibility: hidden;
    }
</style>

<script type="text/javascript">
/* ==== slider nameSpace ==== */
var slider = function() {
    /* ==== private methods ==== */
    function getElementsByClass(object, tag, className) {
        var o = object.getElementsByTagName(tag);
        for ( var i = 0, n = o.length, ret = []; i < n; i++) {
            if (o[i].className == className) ret.push(o[i]);
        }
        if (ret.length == 1) ret = ret[0];
        return ret;
    }
    function setOpacity (obj,o) {
        if (obj.filters) obj.filters.alpha.opacity = Math.round(o);
        else obj.style.opacity = o / 100;
    }
    /* ==== Slider Constructor ==== */
    function Slider(oCont, speed, iW, iH, oP) {
        this.slides = [];
        this.over   = false;
        this.S      = this.S0 = speed;
        this.iW     = iW;
        this.iH     = iH;
        this.oP     = oP;
        this.oc     = document.getElementById(oCont);
        this.frm    = getElementsByClass(this.oc, 'div', 'slide');
        this.NF     = this.frm.length;
        this.resize();
        for (var i = 0; i < this.NF; i++) {
            this.slides[i] = new Slide(this, i);
        }
        this.oc.parent = this;
        this.view      = this.slides[0];
        this.Z         = this.mx;
        /* ==== on mouse out event ==== */
        this.oc.onmouseout = function () {
            this.parent.mouseout();
            return false;
        }
    }
    Slider.prototype = {
        /* ==== animation loop ==== */
        run : function () {
            this.Z += this.over ? (this.mn - this.Z) * .5 : (this.mx - this.Z) * .5;
            this.view.calc();
            var i = this.NF;
            while (i--) this.slides[i].move();
        },
        /* ==== resize  ==== */
        resize : function () {
            this.wh = this.oc.clientWidth;
            this.ht = this.oc.clientHeight;
            this.wr = this.wh * this.iW;
            this.r  = this.ht / this.wr;
            this.mx = this.wh / this.NF;
            this.mn = (this.wh * (1 - this.iW)) / (this.NF - 1);
        },
        /* ==== rest  ==== */
        mouseout : function () {
            this.over      = false;
            setOpacity(this.view.img, this.oP);
        }
    }
    /* ==== Slide Constructor ==== */
    Slide = function (parent, N) {
        this.parent = parent;
        this.N      = N;
        this.x0     = this.x1 = N * parent.mx;
        this.v      = 0;
        this.loaded = false;
        this.cpt    = 0;
        this.start  = new Date();
        this.obj    = parent.frm[N];
        this.txt    = getElementsByClass(this.obj, 'div', 'text');
        this.img    = getElementsByClass(this.obj, 'img', 'diapo');
        this.bkg    = document.createElement('div');
        this.bkg.className = 'backgroundText';
        this.obj.insertBefore(this.bkg, this.txt);
        if (N == 0) this.obj.style.borderLeft = 'none';
        this.obj.style.left = Math.floor(this.x0) + 'px';
        setOpacity(this.img, parent.oP);
        /* ==== mouse events ==== */
        this.obj.parent = this;
        this.obj.onmouseover = function() {
            this.parent.over();
            return false;
        }
    }
    Slide.prototype = {
        /* ==== target positions ==== */
        calc : function() {
            var that = this.parent;
            // left slides
            for (var i = 0; i <= this.N; i++) {
                that.slides[i].x1 = i * that.Z;
            }
            // right slides
            for (var i = this.N + 1; i < that.NF; i++) {
                that.slides[i].x1 = that.wh - (that.NF - i) * that.Z;
            }
        },
        /* ==== HTML animation : move slides ==== */
        move : function() {
            var that = this.parent;
            var s = (this.x1 - this.x0) / that.S;
            /* ==== lateral slide ==== */
            if (this.N && Math.abs(s) > .5) {
                this.obj.style.left = Math.floor(this.x0 += s) + 'px';
            }
            /* ==== vertical text ==== */
            var v = (this.N < that.NF - 1) ? that.slides[this.N + 1].x0 - this.x0 : that.wh - this.x0;
            if (Math.abs(v - this.v) > .5) {
                this.bkg.style.top = this.txt.style.top = Math.floor(2 + that.ht - (v - that.Z) * that.iH * that.r) + 'px';
                this.v = v;
                this.cpt++;
            } else {
                if (!this.pro) {
                    /* ==== adjust speed ==== */
                    this.pro = true;
                    var tps = new Date() - this.start;
                    if(this.cpt > 1) {
                        that.S = Math.max(2, (28 / (tps / this.cpt)) * that.S0);
                    }
                }
            }
            if (!this.loaded) {
                if (this.img.complete) {
                    this.img.style.visibility = 'visible';
                    this.loaded = true;
                }
            }
        },
        /* ==== light ==== */
        over : function () {
            this.parent.resize();
            this.parent.over = true;
            setOpacity(this.parent.view.img, this.parent.oP);
            this.parent.view = this;
            this.start = new Date();
            this.cpt = 0;
            this.pro = false;
            this.calc();
            setOpacity(this.img, 100);
        }
    }
    /* ==== public method - script initialization ==== */
    return {
        init : function() {
            // create instances of sliders here
            // parameters : HTMLcontainer name, speed (2 fast - 20 slow), Horizontal ratio, vertical text ratio, opacity
            this.s1 = new Slider("slider", 12, 1.84/3, 1/3.2, 70);
            setInterval("slider.s1.run();", 16);
        }
    }
}();

</script>
</head>

<body onload="slider.init();">
<div id="center">
    <div id="slider">
        <div class="slide">
            <img class="diapo" src="http://www.blueb.co.kr/SRC/javascript/image8/m001.gif" alt="">
            <div class="text">
                  <span class="title">SUB MENU 1</span><br>
                    | smenu 1 | smenu2 | smenu3 | smenu4 |
            </div>
        </div>
        <div class="slide">
            <img class="diapo" src="http://www.blueb.co.kr/SRC/javascript/image8/m002.gif" alt="">
            <div class="text">
                  <span class="title">SUB MENU 2</span><br>
                    | smenu 1 | smenu2 | smenu3 | smenu4 |
            </div>
        </div>
        <div class="slide">
            <img class="diapo" src="http://www.blueb.co.kr/SRC/javascript/image8/m003.gif" alt="">
            <div class="text">
                  <span class="title">SUB MENU 3</span><br>
                    | smenu 1 | smenu2 | smenu3 | smenu4 |
            </div>
        </div>
        <div class="slide">
            <img class="diapo" src="http://www.blueb.co.kr/SRC/javascript/image8/m004.gif" alt="">
            <div class="text">
                  <span class="title">SUB MENU 4</span><br>
                    | smenu 1 | smenu2 | smenu3 | smenu4 |
            </div>
        </div>
        <div class="slide">
            <img class="diapo" src="http://www.blueb.co.kr/SRC/javascript/image8/m005.gif" alt="">
            <div class="text">
                  <span class="title">SUB MENU 5</span><br>
                    | smenu 1 | smenu2 | smenu3 | smenu4 |

            </div>
        </div>
        <div class="slide">
            <img class="diapo" src="http://www.blueb.co.kr/SRC/javascript/image8/m006.gif" alt="">
            <div class="text">
                  <span class="title">SUB MENU 6</span><br>
                    | smenu 1 | smenu2 | smenu3 | smenu4 |
            </div>
        </div>
        <div class="slide">
            <img class="diapo" src="http://www.blueb.co.kr/SRC/javascript/image8/m007.gif" alt="">
            <div class="text">
                  <span class="title">SUB MENU 7</span><br>
                    | smenu 1 | smenu2 | smenu3 | smenu4 |
            </div>
        </div>
        <div class="slide">
            <img class="diapo" src="http://www.blueb.co.kr/SRC/javascript/image8/m008.gif" alt="">
            <div class="text">
                  <span class="title">SUB MENU 8</span><br>
                    | smenu 1 | smenu2 | smenu3 | smenu4 |
            </div>
        </div>
        <div class="slide">
            <img class="diapo" src="http://www.blueb.co.kr/SRC/javascript/image8/m009.gif" alt="">
            <div class="text">
                  <span class="title">SUB MENU 9</span><br>
                    | smenu 1 | smenu2 | smenu3 | smenu4 |
            </div>
        </div>

    
    </div>
</div>


<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
</body>
</html>

 

+ Recent posts