Javascript Menü zu DORPDOWN Menü machen? - Komme nicht weiter

Xecuter

Semiprofi
Thread Starter
Mitglied seit
13.07.2013
Beiträge
1.937
Hallo!

Ich habe mir da was in den Kopf gesetzt...
Ich habe ein - für mich - sehr schönes Menü gefunden.
Leider nur eine Menüleiste, bestehend aus html code (is kalr denke ich), css und einem Javascript.
Das ist der html-part:
Code:
<div id="sse1">
  <div id="sses1">
    <ul>
      <li><a href="?menu=1&skin=2&p=Javascript-Menus">Javascript Menus</a></li>
      <li><a href="?menu=1&skin=2&p=Horizontal-Menus">Horizontal Menus</a></li>
      <li><a href="?menu=1&skin=2&p=Web-Menus">Web Menus</a></li>
    </ul>
  </div>
</div>

das das css dazu:
Code:
#sse1
{
    /*You can decorate the menu's container, such as adding background images through this block*/
    background-color: #222;
    height: 38px;
    padding: 15px;
    border-radius: 3px;
    box-sizing: content-box;
}
#sses1
{
    margin:0 auto;/*This will make the menu center-aligned. Removing this line will make the menu align left.*/
}
#sses1 ul 
{ 
    position: relative;
    list-style-type: none;
    float:left;
    padding:0;margin:0;
    border-bottom:solid 1px #6C0000;
}
#sses1 li
{
    float:left;
    list-style-type: none;
    padding:0;margin:0;background-image:none;
}
/*CSS for background bubble*/
#sses1 li.highlight
{
    background-color:#800;
    top:36px;
    height:2px;
    border-bottom:solid 1px #C00;
    z-index: 1;
    position: absolute;
    overflow:hidden;
}
#sses1 li a
{
    box-sizing: content-box;
    height:30px;
    padding-top: 8px;
    margin: 0 20px;/*used to adjust the distance between each menu item. Now the distance is 20+20=40px.*/
    color: #fff;
    font: normal 12px arial;
    text-align: center;
    text-decoration: none;
    float: left;
    display: block;
    position: relative;
    z-index: 2;
}

und das der javapart:
Code:
var sse1 = function () {
    var rebound = 20; //set it to 0 if rebound effect is not prefered
    var slip, k;
    return {
        buildMenu: function () {
            var m = document.getElementById('sses1');
            if(!m) return;
            var ul = m.getElementsByTagName("ul")[0];
            m.style.width = ul.offsetWidth+1+"px";
            var items = m.getElementsByTagName("li");
            var a = m.getElementsByTagName("a");

            slip = document.createElement("li");
            slip.className = "highlight";
            ul.appendChild(slip);

            var url = document.location.href.toLowerCase();
            k = -1;
            var nLength = -1;
            for (var i = 0; i < a.length; i++) {
                if (url.indexOf(a[i].href.toLowerCase()) != -1 && a[i].href.length > nLength) {
                    k = i;
                    nLength = a[i].href.length;
                }
            }

            if (k == -1 && /:\/\/(?:www\.)?[^.\/]+?\.[^.\/]+\/?$/.test) {
                for (var i = 0; i < a.length; i++) {
                    if (a[i].getAttribute("maptopuredomain") == "true") {
                        k = i;
                        break;
                    }
                }
                if (k == -1 && a[0].getAttribute("maptopuredomain") != "false")
                    k = 0;
            }

            if (k > -1) {
                slip.style.width = items[k].offsetWidth + "px";
                //slip.style.left = items[k].offsetLeft + "px";
                sse1.move(items[k]); //comment out this line and uncomment the line above to disable initial animation
            }
            else {
                slip.style.visibility = "hidden";
            }

            for (var i = 0; i < items.length - 1; i++) {
                items[i].onmouseover = function () {
                    if (k == -1) slip.style.visibility = "visible";
                    if (this.offsetLeft != slip.offsetLeft) {
                        sse1.move(this);
                    }
                }
            }

            m.onmouseover = function () {
                if (slip.t2)
                    slip.t2 = clearTimeout(slip.t2);
            };

            m.onmouseout = function () {
                if (k > -1 && items[k].offsetLeft != slip.offsetLeft) {
                    slip.t2 = setTimeout(function () { sse1.move(items[k]); }, 50);
                }
                if (k == -1) slip.t2 = setTimeout(function () { slip.style.visibility = "hidden"; }, 50);
            };
        },
        move: function (target) {
            clearInterval(slip.timer);
            var direction = (slip.offsetLeft < target.offsetLeft) ? 1 : -1;
            slip.timer = setInterval(function () { sse1.mv(target, direction); }, 15);
        },
        mv: function (target, direction) {
            if (direction == 1) {
                if (slip.offsetLeft - rebound < target.offsetLeft)
                    this.changePosition(target, 1);
                else {
                    clearInterval(slip.timer);
                    slip.timer = setInterval(function () {
                        sse1.recoil(target, 1);
                    }, 15);
                }
            }
            else {
                if (slip.offsetLeft + rebound > target.offsetLeft)
                    this.changePosition(target, -1);
                else {
                    clearInterval(slip.timer);
                    slip.timer = setInterval(function () {
                        sse1.recoil(target, -1);
                    }, 15);
                }
            }
            this.changeWidth(target);
        },
        recoil: function (target, direction) {
            if (direction == -1) {
                if (slip.offsetLeft > target.offsetLeft) {
                    slip.style.left = target.offsetLeft + "px";
                    clearInterval(slip.timer);
                }
                else slip.style.left = slip.offsetLeft + 2 + "px";
            }
            else {
                if (slip.offsetLeft < target.offsetLeft) {
                    slip.style.left = target.offsetLeft + "px";
                    clearInterval(slip.timer);
                }
                else slip.style.left = slip.offsetLeft - 2 + "px";
            }
        },
        changePosition: function (target, direction) {
            if (direction == 1) {
                //following +1 will fix the IE8 bug of x+1=x, we force it to x+2
                slip.style.left = slip.offsetLeft + Math.ceil(Math.abs(target.offsetLeft - slip.offsetLeft + rebound) / 10) + 1 + "px";
            }
            else {
                //following -1 will fix the Opera bug of x-1=x, we force it to x-2
                slip.style.left = slip.offsetLeft - Math.ceil(Math.abs(slip.offsetLeft - target.offsetLeft + rebound) / 10) - 1 + "px";
            }
        },
        changeWidth: function (target) {
            if (slip.offsetWidth != target.offsetWidth) {
                var diff = slip.offsetWidth - target.offsetWidth;
                if (Math.abs(diff) < 4) slip.style.width = target.offsetWidth + "px";
                else slip.style.width = slip.offsetWidth - Math.round(diff / 3) + "px";
            }
        }
    };
} ();

if (window.addEventListener) {
    window.addEventListener("load", sse1.buildMenu, false);
}
else if (window.attachEvent) {
    window.attachEvent("onload", sse1.buildMenu);
}
else {
    window["onload"] = sse1.buildMenu;
}

Jetzt hätte ich das gerne, das daraus ein DropDown Menü wird, bekomme es aber nicht hin.
Entweder das, was "droppen" soll, steht aufgeklappt in der 2. Zeile, oder es passiert einfach gar nichts...

Ich habe leider nicht viel Ahnung, und von Java ÜBERHAUPT keine. auch mit diversen Editoren komme ich hier nicht zurecht/weiter.

Daher bräuchte ich echt was "fertiges" - also keinen wink mit nem Zaunpfahl, was ich machen muss.

Bei dem Menü geht es mir ja auch eher um die rote Linie, wenn mir aber jemand eine Lösung mit der Linie OHNE den Javapart hat, bin ich damit natürlich auch einverstanden.
Aber ich finde auch mit google nichts was mich weiterhilft.
Ein Versuch gestern abend hat irgendwie die "Schrift" verschwinden lassen... - Nein, sie ist nicht einfach nur schwarz, und wenn man die Seite markiert, kann mans lesen, sie ist weg...

Ich verzweifel, und BEDANKE mich schonmal recht herzlich bei Euch für Eure Hilfe und Mühe.
 
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
Ich habe leider nicht viel Ahnung, und von Java ÜBERHAUPT keine.
Joa, du postest ja auch JavaScript-Code und sagst, dass du von Java keine Ahnung hast. Macht Sinn :d Ernsthaft: das sind zwei zwei komplett verschiedene Dinge.

Zu deinem Anliegen:
Schau dir mal Bootstrap an. Die haben ne recht hübsche Navigation, die man direkt über die Download-Seite anpassen kann ohne viel CSS/HTML/JS-Kenntnisse haben zu müssen.
 
GENAU! WEIL Ich von java KEINE Ahnung habe, frage ich ja.
HÄTTE ich Ahnung, müsste ich nicht fragen oder?

Ich will mir nicht zig menüs anschauen und basteln, solche Seiten gibt es Meterweise.

Ich WILL genau das gepostete um den dropdown part erweitert.

Denn diese TOLLEN Seiten mit ihren noch tolleren MenüMaker machen nicht das, was ich mir einbilde, und das steht oben.
Daher Danke Dir fürs lesen.

Gesendet von meinem GT-I9505 mit der Hardwareluxx App
 
Komm mal bisschen runter...

GENAU! WEIL Ich von java KEINE Ahnung habe, frage ich ja.
HÄTTE ich Ahnung, müsste ich nicht fragen oder?
Du redest von Java, willst aber JavaScript. Wie schon in meinem Beitrag oben erwähnt, sind das zwei unterschiedliche Dinge/Sprachen. Und nur, weil JavaScript das Wort "Java" beinhaltet, heißt das nicht, dass "Java" die korrekte Abkürzung für JavaScript ist - die ist nämlich einfach nur JS. Konkretisiert bedeutet das: du willst JavaScript und nicht Java.


Ich will mir nicht zig menüs anschauen und basteln, solche Seiten gibt es Meterweise.
Bootstrap ist nicht unbedingt "irgendein X-beliebiges". Das Teil wurde von Twitter entwickelt und ist eines der bekanntesten Frontend-Frameworks die es gibt - derartige Dinge gibt es dann nicht mehr ganz "meterweise".

Ich WILL genau das gepostete um den dropdown part erweitert.

Denn diese TOLLEN Seiten mit ihren noch tolleren MenüMaker machen nicht das, was ich mir einbilde, und das steht oben.
Daher bräuchte ich echt was "fertiges" - also keinen wink mit nem Zaunpfahl, was ich machen muss.
Ich habe leider nicht viel Ahnung, und von Java ÜBERHAUPT keine. auch mit diversen Editoren komme ich hier nicht zurecht/weiter.

Du suchst also jemanden, der dir sämtliche Arbeit abnimmt, das Teil für dich komplett implementiert und es dir dann zur Verfügung stellt. Ich muss dich hier ein wenig enttäuschen; ich bezweifle mal, dass das jemand einfach so macht - und sollte es nicht mehr unentgeltlich zugehen, fällt das hier unter "Jobbörse" - was dieses Forum nicht darstellt. Kurz gesagt: wenn du konkrete Fragen zu einem Problem mit der Umsetzung hast, bist du hier richtig - wenn du jemanden suchst, der für dich arbeitet, bist du hier leider falsch.
 
Nunja, JAVASCRIPT Menü.... steht doch so imTitel oder?
Und man kann auch echt alles auf die Goldwaage legen...

Nunja, ich suche TIPPS, wie das geht.
Sollte das jedoch NUR in JS realisierbar sein, wäre es nett, wenn mir jemand den Code dazu geben könnte.
zusammenmurksen werd ich das schon irgendwie.

Und hier wird NIEMAND gesucht, der mir das macht.

Und daher mache ichs kurz:
Haste was oder nicht?
Dann sag es, oder lass es bitte - DANKE.

Is ja nicht das einzige Forum hier.

Sollte das obige Menü jedoch auch mit CSS machbar sein, was ich dann aber leider auch nicht schaffe, wäre ich für diesen Part dankbar.
Denn mit CSS bekomme ich nen DD-Menü in.

BZW leigt mir beides vor, nur zusammen will es einfach nicht.

Ich habe auch ein JS-DD-Menü, aber auch wenn ich die parts im CSS Teil und JS Teil munter hinundherwürfel tut sich nix.

Sorry, mit Bootstrap kann ich erstmal nix anfangen. Das sind ja wieder nur irgendwelche Scripte, die ic verwenden muss/soll/darf/kann.
Inwiefern mir das aus meienm Skript nen DD-Menü macht entzieht sich hier wieder meiner Fähigkeiten und Kenntnisse.
 
Zuletzt bearbeitet:
So, ich hab da was bekommen.

2 Probleme sind jetzt noch:
1. Wenn ich auf das Untermenü fahre, dann hüpft der Slider wieder nach links.
2. Aus irgendeinem Grund habe ich nun Zwischen Slider und der grünen Linie einen kleinen Leerraum, den ich da gerne weghaben möchte...

Vielleicht weiß dann hier noch wer rat.
 

Anhänge

  • ben.zip
    8 KB · Aufrufe: 50
die obige zip-Datei ist eigentlich eine rar-Datei!
Also einfach umbenennen und entpacken...
 
O.K.
den Leerraum hab ich rausgebracht.

Jetzt muss ich nur noch das in den Griff bekommen, warum der Slider von gaaanz weit links angerannt kommt...

Jemand Tipps?
 
Lad das Mal iwo hoch (jsfiddle e.g.). ein zip lad ich mir net runter und schau das an;)
Und: ich würde Bootstrap nehmen, einfach ein geiles Framework!
 
Hab Dir mal ne PN geschrieben.

Keine Ahnung, was ein "Framework" sein soll....!
 
Man muss das Rad nicht neu erfinden, es haben sich schon andere, schlaue Leute mit dem Thema beschäftigt und eine super Lösung (Bootstrap siehe oben) entwickelt. Framework bedeutet einfach nur, dass man bereits funktionierenden Code geliefert bekommt. Übrigens kann man die Navigation dann trotzdem noch nach den eigenen Wünschen optisch anpassen. Gibt da ganz viele tolle Tutorials zu. Einfach mal googlen oder hier nachlesen. Bootstrap Navigationen/Menüs haben außerdem den Vorteil, dass sie sich der Screenbreite anpassen, Stichwort Responsive Design. Viel Erfolg noch, falls du mit Bootstrap arbeitest, bin ich auch bereit konkrete Fragen noch zu beantworten. :)
 
Zuletzt bearbeitet:
Vielen Dank,
Aber ich hab ja erstmal relativ wenig Erfahrung mit dem herkömmlichen, und dann jetzt noch gleich was neues...

Ich glaub da bin ich echt überfordert.

Ich mein, ich hab das jetzt auch schon ein Stückchen weiter hingebracht - soll heißen, soweit läufts.

Meine beiden Probleme sind jetzt:
1. Wenn im Menü "HOME" steht, und dann etwas, das länger ist, dann wird das überschrieben. Ich weiß nicht, wie ich das beschreiben soll, aber es wirkt so, als wären das Tabellen, und die weden nicht verbreitert, sondern überlappt.
2. Wird di aktive Seite mit dem Läufer markiert, aber irgendwie steht der Läufer immer auf "HOME", und zusätzlich auf der aktiven Seite.

n den ganzen Tts hat das aber einwandfrei funktioniert...
 
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh