Sidemenu per Klick öffnen/schließen

  • Hallo,

    ich möchte mein Sidemenu per Klick öffnen und schließen.

    Es sieht so aus:


    Wenn man nun auf die drei Balken klickt soll es geschlossen werden, sodass es so aussieht:

    Leider habe ich kaum Ahnung von JS und jQuery.

    HTML:

    HTML
    <div id="sidemenu">  
    <ul>      
     <li><h2>HTML<img style="display: inline-block;margin-top: 15px; padding-left: 70px;float: right 0;width: 20px;height: 15px;" src="Grafiken/Hide-Show-Icon.png" onClick="HideMenuBar"/><h2></li>        
    <li><a class="active" href="HTML.html">HTML – Home</a></li>          
    <li><a href="Basics.html">Basics</a></li>      
    </ul>   
    </div>


    CSS:

    Die Werte, wie das Sidemenu verschoben wird habe ich.
    Ich brauche nur eine Funktion, die per Klick auf das Bild mit den drei Balken das Sidemenu so einklappen lässt.

    Vielen Dank im Voraus!

    Einmal editiert, zuletzt von Timowo (21. Januar 2016 um 17:48) aus folgendem Grund: HTML Code war durcheinander

    • Offizieller Beitrag

    Hallo,


    • Pack bitte mal den Inline-Style mit in die CSS, so erstellt man heute keine HTML-Seiten mehr.
    • Lege mini- und maximierte Pixelposition des Sidemenu fest.
    • Gib dem Image eine eindeutige Kennung, bspw. id="toggle-slidemenu".
    • Binde am besten jQuery ein, da Du eh schon davon gesprochen hast.

    Jetzt hast Du einigermaßen Vorbereitungen getroffen, um Dein Vorhaben mit Glück zu segnen.
    Mit jQuery definierst Du im HEAD des HTML-Dokuments einfach einen Click-EventHandler:


    Ich habe für das kleine Beispiel angenommen, daß der ausgeklappte Zustand des Menü am linken Bildschirmrand andockt und eingefahren etwa 50px stehen bleiben, daher die Werte 0 und -120.
    Durch das position:absolute sollte das so in etwas gehen. Es kann aber durchaus sein, daß Du die einzelnen jQuery-Funktionen nochmal selbst nachlesen musst, weil das hier nur aus der Hüfte geschossen war und lediglich eine Hilfestellung anstatt einer fertigen Lösung sein soll.

  • Vielen Dank erstmal für die Antwort!
    Habe soweit alles erledigt, nur was ist mit

    Zitat

    Lege mini- und maximierte Pixelposition des Sidemenu fest.

    gemeint?
    Scheint ja relativ wichtig zu sein, da es, ohne dies, nicht funktioniert.

    • Offizieller Beitrag

    Naja, ich gehe bei meinem Beispiel davon aus, daß Du einfach den DIV um eine bestimmte Anzahl Pixel ( 120 ) aus dem Bildschirm rausschiebst.
    Da ich nicht weiß, wie groß genau Dein Burger-Menu-Image ist und wie Du Dir die Abstände vorstellst, habe ich mich halt auf 120px festgelegt.
    Ob das passt, musst Du testen und evtl. anpassen

  • Ja, in meinem Beispiel habe ich bei #sidemenu einfach left: -137px rausgeschoben. Aber wann muss ich das wo so einstellen? Muss ich dafür ein zweites #sidemenu machen, oder wo muss ich das ändern?

    • Offizieller Beitrag

    Nein mit Festlegen meine ich das, was Du getan hast. Du hast ermittelt und festgelegt, daß er den DIV um 137px aus dem Bild raus schieben muß.
    Man kann das natürlich über Variablen verwalten, ist aber imho nur für diesen zweck nicht zwingend notwendig.

  • Ok, also muss ich da EIGENTLICH nichts mehr ändern...
    So sieht mein HTML-Code jetzt aus:

    Code
    <div class="line-vertical"></div>  <div id="sidemenu">
      <ul>
            <li><h2>HTML<img id="toggle-sidemenu" src="Grafiken/Hide-Show-Icon.png" onClick=" "/><h2></li>
              <li><a class="active" href="HTML.html">HTML – Home</a></li>
              <li><a href="Basics.html">Basics</a></li>
            </ul>
            </div>


    Aber was war jetzt eigentlich der Name von der "onClick"-Funktion?

  • Ach so, ok. Aber trotzdem funktioniert es nicht. :cry: Habe ich vielleicht irgendwo einen Fehler gemacht oder was vergessen?

    HTML:

    HTML
    <div id="sidemenu">  <ul>        <li><h2>HTML<img id="toggle-sidemenu" src="Grafiken/Hide-Show-Icon.png"/><h2></li>          <li><a class="active" href="HTML.html">HTML – Home</a></li>          <li><a href="Basics.html">Basics</a></li>        </ul>
    </div>

    JS:

    CSS:

    • Offizieller Beitrag

    Das weiß ich nicht, in den von Dir geposteten Abschnitten nicht!
    Aber ich habe mich auch an zwei drei Stellen vertan, deshalb sagte ich ja, daß es aus der Hüfte kam. ;)

    Damit Du meine Fehler nicht ausbügeln musst, hier mal im Ganzen, wie es funktioniert:

  • Tut mir leid, dass ich erst jetzt antworte. Vielen, vielen Dank! Funktioniert super! Nur eine Frage zum Skript: Gehören "_o..." etc zu jQery oder warum hast du das so benannt?

    • Offizieller Beitrag

    Hallo,

    Nein, Du kannst sie auch anders benennen.
    Das ist nur die Art, wie ich Variablenbezeichner benenne, in CamelCase beginnend mit einem Kürzel des Datentyps.
    So weiß ich immer, was für ein Datentyp ich dort zu erwarten habe. "o" steht für Object.

    Zusätzlich setze ich bei eigenen Variablen in JS noch ein Underscore davor, damit ich die im Fliesstext schneller von Funktions-/Methoden usw. unterscheiden kann.

    Wie gesagt, Du kannst es anders machen.
    ;)