Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Käsekönig

1x Contest-Sieger

  • »Käsekönig« ist der Autor dieses Themas
  • Private Nachricht senden

1

08.11.2017, 23:39

CSS: Position relative - Lücke entfernen

Ich bin gerade dabei, ein mobiles Menü zu basteln. Dazu habe ich schon ein paar Dinge aus Tutorials umgesetzt, so dass es bereits die Funktionsweise hat, die ich haben möchte.

Testweise habe ich die Seite hier hochgeladen: Testseite

Macht man das Fenster schmäler, erscheinen die drei Balken für das mobile Menü. Beim Öffnen erscheinen drei Unterpunkte (Listenelemente). Um die weiteren Unterpunkte zu öffnen, gibt es das "+", das, wenn es nicht speziell positioniert worden wäre, einfach unterhalb von "Radsport" stünde, da dieses "+" ein div ist, das direkt nach dem Link "Radsport" steht. Ich habe nun durch position: relative versucht, dieses div da hin zu schieben, wo ich es haben möchte, was auch ganz gut klappt - allerdings bleibt da trotzdem eine Lücke.
Im Internet lassen sich dazu auch viele Tips finden (so wie das Verschieben durch negative margins, wie ich das gemacht habe, etc.), allerdings bringe ich damit die Lücke nicht weg.

Hat jemand eine Idee, wie ich das schaffe? Oder gibt es eine andere (einfache ;) ) Möglichkeit, das so hinzubekommen, wie man sich so ein mobiles Menü eben vorstellt?

EDIT: Und mit einfach meine ich nicht, einfach etwas komplett fertiges oder einen Baukasten zu nehmen, auch wenn das natürlich einfach wäre. ;) Sondern eben selbst geschrieben und so, dass ich es selbst verstehe, weshalb das nun so ist.

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

2

08.11.2017, 23:43

Kannst du mal auf einem Screenshot markieren, welche Lücke du meinst?

3

09.11.2017, 07:44

Am Ende deiner CSS-Datei (~ Zeile 124):

Quellcode

1
2
3
4
5
plusminus {
    float: right;
    margin-top: -50px;
    margin-right: 5px;
}

Wobei du das Ganze durch die Verwendung von Hintergrundbildern (für Plus und Minus), anstatt dieser seltsamen DIV-Konstrukte auch deutlich einfacher haben könntest. ;)

David
Er meint wohl jene vertikale Lücke
fka tm

Käsekönig

1x Contest-Sieger

  • »Käsekönig« ist der Autor dieses Themas
  • Private Nachricht senden

4

09.11.2017, 09:09

Danke für den Tipp, Michael, so funktioniert es. :) Wieso nimmt das Element aber praktisch keinen Platz ein, wenn ich es floate? Ich habe ja bei .topnav ul li die Listenelemente auch mit float: left, so dass sie im "normalen" Menü nebeneinander stehen (das nächste kommt so weit nach links, bis es am vorherigen anstößt).
Meinst du, mit Bildern für die "+", "-" und "Balken" Elemente wäre es besser? Ich habe das mit den Balken so in einem Tutorial gefunden und war davon recht begeistert, weil damit eben auch so eine Animation möglich war. Und die habe ich mir dann für das "+" und "-" selbst zusammengebastelt.

Er meint wohl jene vertikale Lücke

Genau diese Lücke meinte ich, danke. :)

5

09.11.2017, 11:22

Float nimmt deine DIVs aus dem Fluss der Elemente. Implizit hast du dann wieder display: block (afaik).
Wenn du schon dabei bist, deine Seite Responsive zu machen, würde ich dir empfehlen, auf ein Layout mit Grid oder Flexbox umzusteigen.
Spart dir das Rumgefrickel mit Abhängigkeiten (Parent- und Child-Elemente), Clearfixes usw. usf..

Bilder (vergiss das mit den Hintergrundbildern, Fehler von mir) für das Auf- und Zuklappen von Menüs vereinfachen deine HTML-Struktur und sparen ggf. auch CSS.
Die Animationen kannst du ja beibehalten. Per Javascript und/oder CSS. Animierte SVGs wären dafür ebenfalls ein Ansatz.
fka tm

Käsekönig

1x Contest-Sieger

  • »Käsekönig« ist der Autor dieses Themas
  • Private Nachricht senden

6

09.11.2017, 15:33

Über Grid Layouts habe ich schon etwas gelesen. Im Prinzip mach ich damit ja nur ein Raster und positionier die verschiedenen Elemente wie zB Menü, Hauptartikel, Footer, Sidebar und was man halt so alles möchte in jeweils eine Zelle. Für ein kleineres Fenster (mobile) muss ich dann nur das Raster anders anordnen, richtig?

Was ist da momentan der aktuellste Stand oder wird ein Flexbox Layout gleichermaßen wie ein Grid Layout eingesetzt? Gibt es dazu eventuell gute Tutorials oder ein Buch, das mir so Basics beibringt? Am besten wäre natürlich etwas mit praktischen Beispielen wie "ein Menü könnte man so und so gestalten", etc.

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

7

09.11.2017, 16:48

Das Menü verschiebt den Content der Seite. Das ist denke ich nicht gewollt oder? Soll heißen, beim öffnen eines Untermenüs werden bei mir die ersten beiden TEst Ausgaben von Links nach rechts neben das Untermenü geschoben. Dabei sollte das Menü vermutlich über dem Inhalt der Seite liegen oder nicht?
Guck dir vielleicht mal Codecademy an. Die haben ganz gute Kurse bei denen unter anderem auch solche Menüs entwickelt werden.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

H5::

Treue Seele

Beiträge: 368

Wohnort: Kiel

  • Private Nachricht senden

8

09.11.2017, 18:28

Vergiss deine Gäste nicht. Grid ist toll und lernenswert, aber auch noch etwas problematisch. Zumindes wenn du den IE 11 mit an Bord haben möchtest.

Quellcode

1
2
3
4
5
6
7
8
9
10
## Grid [caniuse](https://caniuse.com/#feat=css-grid)
- [Grid by Example](https://gridbyexample.com/)
- [A Complete Guide to Grid](https://css-tricks.com/snippets/css/complete-guide-grid/)
- [mdn](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Grid_Layout)
- [CSS Grid Layout Module ](https://www.w3.org/TR/css-grid-1/)

## Flexbox [caniuse](https://caniuse.com/#feat=flexbox)
- [A Complete Guide to Flexbox](https://css-tricks.com/snippets/css/a-guide-to-flexbox/)
- [mdn](https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/Flexbox)
- [CSS Flexible Box Layout](https://www.w3.org/TR/css-flexbox-1/)

Sorry die Liste ist in md und ich habe gerade keine Zeit sie in Forum geeignete Form zu wandeln. Hoffe aber sie hilft etwas
:love: := Go;

Käsekönig

1x Contest-Sieger

  • »Käsekönig« ist der Autor dieses Themas
  • Private Nachricht senden

9

10.11.2017, 12:46

Das Menü verschiebt den Content der Seite. Das ist denke ich nicht gewollt oder?

Richtig, das war auch nur ein Test. Mittlerweile habe ich es bereits auf meiner Seite eingebaut - funktioniert nun wie es soll, auch wenn es vielleicht noch nicht ganz top aussieht, tausend mal besser als zuvor aber allemal. ;)
Codeacademy hat ein paar Tutorials, allerdings ist für einige davon leider eine kostenpflichtige Mitgliedschaft notwendig.

@H5:: Danke für die Liste, da kann ich mir bestimmt einige Tips holen :)

Ein gutes und modernes Buch zu dem Thema wäre super, denn das kann ich eventuell bei uns in der Bibliothek ausborgen, falls vorhanden. Super wäre soetwas im Stile von "C++ für Spieleprogrammierer", wo man auch so Dinge lernt wie ein Spiel besteht aus einer Schleife mit Render und Update, etc.

Werbeanzeige