KOMPOOS.NL

docking menu

home » javascripts » image-effects » dock-menu.html

sitemap


  1. dock 1
  2. dock 2
  3. dock 3
  4. dock 4
  5. dock 5
  6. dock 6
  7. dock 7
  8. dock 8

uitleg procedure

Om het docking menu op een pagina te plaatsen, moet je de css van de procedure in de head-sectie plaatsen, de html-code in de body-sectie en het javascript zo laag als mogelijk (ook) in de body-sectie van de pagina. Voeg zoveel li's toe (of haal weg) als je wilt, en vervang de img's door jouw eigen plaatjes.

css voor procedure


<style type="text/css">
        .docking-class{
                list-style:none;
                position:relative;
                margin:0px auto;}
        .docking-class li,.dock a{
                display:inline;}
        .docking-class img{
                display:block;
                border:none;
                width:0px;
                height:0px;
                position:absolute;
                top:auto;
                left:auto;}
</style>

html code voor dock procedure


<ul id="dock" class="docking-class">
        <li><a href="#" title="dock voorbeeld 1"><img src='http://static.dns5.nl/dock-1.jpg' alt="dock 1"></a></li>
        <li><a href="#" title="dock voorbeeld 2"><img src='http://static.dns5.nl/dock-1.jpg' alt="dock 2"></a></li>
        <li><a href="#" title="dock voorbeeld 3"><img src='http://static.dns5.nl/dock-1.jpg' alt="dock 3"></a></li>
        <li><a href="#" title="dock voorbeeld 4"><img src='http://static.dns5.nl/dock-1.jpg' alt="dock 4"></a></li>
        <li><a href="#" title="dock voorbeeld 5"><img src='http://static.dns5.nl/dock-1.jpg' alt="dock 5"></a></li>
        <li><a href="#" title="dock voorbeeld 6"><img src='http://static.dns5.nl/dock-1.jpg' alt="dock 6"></a></li>
        <li><a href="#" title="dock voorbeeld 7"><img src='http://static.dns5.nl/dock-1.jpg' alt="dock 7"></a></li>
        <li><a href="#" title="dock voorbeeld 8"><img src='http://static.dns5.nl/dock-1.jpg' alt="dock 8"></a></li>
</ul>

javascript voor docking menu


<script>
/*global window: false */
var i,
j,
nieuwe_dock;
function $(id) {
    if (document.getElementById) {
        return document.getElementById(id);
    } else if (document.all) {
        return document.all[id];
    }
}
function dock(id) {
    this.snelheid = 10;
    this.soepel = 10;
    this.min = 40;
    this.max = 80;
    var img,
    afmeting = [];
    if (typeof(id) != 'string') {
        id = 'dock';
    }
    this.init = function() {
        var self = this;
        this.dock = $(id);
        afmeting.def = Math.floor((this.max - this.min) / 3);
        for (i = 0; i < 4; i++) {
            afmeting[i] = 1 * this.min + i * afmeting.def;
        }
        img = this.dock.getElementsByTagName('img');
        this.dock.style.height = afmeting[3] + "px";
        this.dock.style.width = (afmeting[0] * (img.length - 1)) + "px";
        for (i = 0; i < img.length; i++) {
            img[i].now = {
                left: 0,
                top: 0,
                size: afmeting[0]
            };
            img[i].target = {
                left: 0,
                top: 0,
                size: afmeting[0]
            };
            img[i].onmouseover = function(e) {
                e = window.event ? event: e;
                e = e.srcElement ? e.srcElement: e.target;
                for (i = 0; i < img.length; i++) {
                    if (e == img[i]) {
                        self.doe_dock(i);
                        break;
                    }
                }
            };
            img[i].onmouseout = function() {
                self.doe_dock( - 1);
            };
        }
        this.doe_dock( - 1);
        var doe_dock = function() {
            self.dock_funktie();
        };
        setTimeout(doe_dock, this.snelheid);
    };
    this.dock_funktie = function() {
        var self = this;
        for (i = 0; i < img.length; i++) {
            img[i].now.left = ((this.soepel - 1) * img[i].now.left + img[i].target.left) / this.soepel;
            img[i].style.left = Math.floor(img[i].now.left) + 'px';
            img[i].now.top = ((this.soepel - 1) * img[i].now.top + img[i].target.top) / this.soepel;
            img[i].style.top = Math.floor(img[i].now.top) + 'px';
            img[i].now.size = ((this.soepel - 1) * img[i].now.size + img[i].target.size) / this.soepel;
            img[i].style.width = Math.floor(img[i].now.size) + 'px';
            img[i].style.height = Math.floor(img[i].now.size) + 'px';
        }
        var doe_dock = function() {
            return function() {
                self.dock_funktie();
            };
        } (i);
        setTimeout(doe_dock, this.snelheid);
    };
    this.doe_dock = function(m) {
        for (i = 0; i < img.length; i++) {
            img[i].target.size = afmeting[0];
            for (j = 0; j < afmeting.length - 1; j++) {
                if (m > -1 && m < img.length && Math.abs(m - i) == j) {
                    img[i].target.size = afmeting[afmeting.length - 1 - j];
                }
            }
            img[i].target.top = afmeting[3] - img[i].target.size;
        }
        var n = m > 2 ? 2: m;
        if (n > -1) {
            img[0].target.left = -(1 / 2) * (afmeting[0] + afmeting.def * (n * (4 - (1 / 2) * n) + 3));
        } else {
            img[0].target.left = 0;
        }
        for (i = 1; i < img.length; i++) {
            img[i].target.left = img[i - 1].target.left + img[i - 1].target.size;
        }
    };
}
nieuwe_dock = new dock();
window.onload = function() {
    nieuwe_dock.init();
};
</script>
Gebruik voor alle voorbeelden op de http://kompoos.nl een valide html5 pagina.