|
|||
Responsive CSS Menü
Hallo,
ich habe bei einem Projekt ungefähr folgende Menüstruktur: responsive-menü - jsFiddle Wenn sich die Seitenbreite unter der max-width befindet, sollte auch das Menü angepasst werden. Mein Ziel ist es, die Abstände der Menüpunkte dynamisch zu ändern (bis eventuell nur mehr ein minimaler Abstand von ein paar px gegeben ist). Dies sollte soweit möglich sein, bis eben mein Menü (durch einen media query) anders dargestellt wird. Leider erhalte ich durch oben genanntes CSS kein befriedigendes Ergebnis, meine Frage, wie kann man dies besser lösen? Ausgegangen wird bei einer Seitengesamtbreite von 990px, die Menüleiste ist 100% breit, die einzelnen Menüpunkte haben links und rechts einen Padding in %. Danke |
Sponsored Links |
|
|||
Folgende Fehler:
HTML-Code:
* {line-height:1em;} HTML-Code:
body { font-size: 68.75%; } Wenn du anderen Elementen eine andere Grösse zuweisen willst kannst du das gerne machen, indem du die Elemente direkt ansprichst oder über eine ID bzw. Klasse. HTML-Code:
.wrapper { max-width: 990px; margin: 0 auto; } Die Max-width Eigenschaft ist hier schlecht gewählt. Wenn du das Menü 990px Breit haben willst, dann nimm eine Breite von 990 px. Über Media-Queries steuert du das Verhalten bei unterschiedlichen Darstellungsmodi der Browser. Sollte deine ganze Seite 990px breit sein, solltest du dein Konzept überdenken. Nutze den vollen Darstellungsbereich oder wähle einen zeitgemässen Wert. HTML-Code:
ul.dropdown > li { position: relative; display: inline-block; margin: 0 0 0 -2px; } Du kannst hier, wenn du dich nicht auf eine feste Breite des gesamten Menü festlegst, auch einen prozentualen Wert angeben und passt dann die Abstände flexibel zur Fenstergrösse(Viewport) an. HTML-Code:
ul.dropdown > li { padding: 12px 16px 11px; background: #CFCFCF; } HTML-Code:
ul.dropdown > li > a { display: block; text-decoration: none; text-transform: uppercase; color: #232A33; font-size: 1.091em; /* 12px */ }
__________________
"Wieso ist der Code schrott, ich dachte hier seien Profis..." Aus einem Forum. |
Sponsored Links |
|
|||
ich weiß jetzt gar nicht wo ich anfangen soll, aber ich schreibe dennoch auf alle deine Punkte eine Antwort:
1. line-height: 1em: diese ist gewollt und in Ordnung, da bei allen anderen Elementen wo der Text mehrzeilig sein kann, die line-height erhöht wird. 2. body font-size: 68.75%: dient als Ausgangslage, sind 11px (da von 16px ausgegangen wird), ist also auch richtig so. 3. Seitenbreite 990px: ist ebenfalls korrekt, da bei diesem Projekt Bilder in 990px Breite Pflicht sind und die Seite keinesfalls breiter sein darf!!!! 4. das -2px hebt den Standardabstand von display: inline-block auf (eine andere Idee hatte ich nicht), da der display: inline-block Abstand im IE aber nicht 2, sondern 3px sind, bin ich wieder auf float: left umgestiegen. 5. die 16px beim li sind natürlich Quatsch von mir, sorry, ich habe das auf 1% umgestellt, das war eben meine ursprüngliche Frage, da passen sich die Abstände nicht dynamisch an bei mir (habe das im jsFiddle geupdatet). 6. Die Schriftgröße von 1.091em dient als Hilfe für spätere Anpassungen, und bei einem Ausgangswert von 16px (Browser-Standard) und davon 68.75%, sind 1.091em sehr wohl 12px!!! Doch um nicht ganz aus den Fugen zu kommen, stelle ich hier noch einmal meine Frage: Wie schaffe ich es, dass die Abstände der einzelnen Menüpunkte sich von einem gewissen Wert, bis auf minimal 1px verkleinern? Ich will je nach vorhandener Fläche meine Menüpunkte bzw. deren Abstand so klein wie möglich halten. |
|
|||
Ehrlich gesagt habe ich kein Lust auf Diskussionen.
Wenn du eh alles besser weist warum fragst du dann hier nach Hilfe? Für mich hat sich das Thema hiermit erledigt. Vielleicht hilft dir ja jemand anderes.
__________________
"Wieso ist der Code schrott, ich dachte hier seien Profis..." Aus einem Forum. |
|
|||
Es geht nicht um etwas besser wissen, ich wollte nur aufschlüsseln warum es zu dem Code kam und warum diese Dinge (in meinen Augen) Sinn machen.
Du brauchst nicht in jedem Thread antworten, wenn du nicht Lust und Gedult dazu hast, auch in anderen Themen schriebst du schon ähnliche Antworten, dass du keine Lust hast dir den Code genau anzuschauen etc.! Dann lass es bleiben und Antworte wenn es dem Themenersteller auch hilft und nicht nur damit deine Beitragszähler erhöht werden. Auf meine ursprüngliche Frage, bist du nämlich überhaupt nicht eingegangen, deshalb finde ich deine Beiträge in diesem Thread bis jetzt auch relativ sinnlos. Danke |
|
|||
Danke für deine Antwort.
Ich habe es jetzt mit display: table (auf das UL) und display: table-cell (auf die LI's) gelöst. Mein Padding links und rechts (von 3px) wird jetzt als "Minimal-Padding" aufgenommen. Ist mehr Platz, so teilt sich der Padding automatisch auf, das war zwar ursprünglich nicht meine Denkweise, doch entspricht genau meiner Lösung die ich mir vorgestellt habe. Dadurch hat sich zwar ein weiteres Problem hervorgehoben, nämlich funktioniert im Firefox das relative positionieren auf table-cell Elemente nicht (was bei meinen Untermenüpunkten Auswirkung hat), dies habe ich jedoch mit jQuery lösen können. Media Queries kommen schon auch in Spiel, aber wenn ich, wie bisher, fixe px Werte als Padding verwendet hätte, hätte ich bei meinem horizontalen Menü relativ viele Media Queries einsetzen müssen, was ich nicht als vorteilhaft sehe. LG |
|
|||||||
edir: Tja, jetzt will ich absenden und merke, dass ich zu lange geschrieben habe. Angefangen habe ich vor Heikos Post -- ich lass jetzt trotzdem mal alles so stehen:
Zitat:
Ich versuch's nochmal: Zitat:
Ist das wirklich sinnvoll? Mehr Lesetoff zu sinnvoller line-height: Eric's Archived Thoughts: Unitless line-heights Zitat:
- Schriftgrößen in em beziehen sich immer auf den Vorfahren. Man muss also trotzdem rechnen, sobald nicht mehr body der Bezugspunkt ist. - User, die ein Userstylesheet verwenden, in dem body {font-size:100%!important} steht, bekommen eine "etwas" aufgeblasene Website zu sehen (Ja, User machen sowas -- weil sie Fitzelschriften nicht lesen können). Ein bischen aktueller Lesestoff dazu z.B.: How we learned to leave default font-size alone and embrace the em | Filament Group, Inc., Boston, MA Dein Wert hat noch nicht einmal den Vorteil, dass man damit leichter rechnen kann. Der Sinn erschließt sich also wirklich nicht. Solltest du wirklich "11px" als Grundschriftgröße für Fließtext verwenden wollen, sei noch gesagt: Das ist zu klein. iPad mini schonmal in der Hand gehabt? Die Zukunft wird wohl "rem" heißen, doch im Moment ist es das sinnvollste, wenn man als Grundgröße 100% verwendet (nicht 1em, denn der Vergrößerungsbug besteht bis in neuere IE-Versionen fort) Zitat:
Da du im Threadtitel das Wort "responsive" verwendest: Es gibt auch "responsive images". Niemand hier weiß, was das mal werden soll. Wir sehen nur ein Mini-Fragment -- und nur darauf können wir uns beziehen. Von diesem allgemeinen Standpunkt aus gesehen, sind feste Pixelangaben für Seitenbreiten nicht mehr zeitgemäß. Zitat:
Wenn man also in der Richtung etwas anpassen wollte, dann sind em die richtige Wahl. Zitat:
Sobald der User in seinem Browser die berühmten 16px ändert, ist es ohnehin vorbei mit der pixelgenauen Rechnerei. Es sind demnach Verhältnisse, von denen man ausgehen muss -- keine festen Pixelgrößen. (Deshalb funktioniert z.B. auch eine 35px-Höhe für etwas, das Text enthält, nicht.) Noch ergänzend zu dem, was explanator schon geschrieben hat:
Zitat:
Wenn ich dich richtig verstanden habe, möchtest du, dass sich dein Menü gleichmäßig über die verfügbare Breite verteilt. In Zukunft werden wir sowas mal mit Flexbox machen. Im Moment wäre ein erzwungener Blocksatz wohl noch der praktikablere Ansatz. Ich hatte vor einiger Zeit Ansätze dazu gepostet: http://xhtmlforum.de/68482-server-on...tml#post523146 (Die drei Links dort unterscheiden sich nur in der Angabe zum meta charset -- ist also egal, welchen du aufrufst) Das Grundprinzip liegt darin, mit einem generierten Element eine zweite Zeile zu erzeugen und so den Blocksatz in der ersten zu erzwingen.
__________________
Corina Rudel Online-Einsteigerkurs HTML/CSS | Buch: Fortgeschrittene CSS-Techniken |
|
|||
Mir ist jetzt nicht ganz klar, warum ich 100% als Schriftgröße verwenden sollte?
Ich habe lt. Designvorlage bei Schriftar "Tahoma" 11px (Desktop), meine 68.75% sind (von den 16px) 11px. Wenn jemand mit einem anderen Wert als 16px Standard fährt, passt sich das ja eh alles an, oder denke ich falsch? |
Sponsored Links |
|
|||
Zitat:
Zitat:
(Ja, ich weiß, dass man gegen Grafiker-Vorlagen manchmal wenig machen kann. Aber man sollte es wenigstens versuchen -- den Kunden ist es dann doch meist wichtiger, dass ihre Inhalte lesbar sind.) Zitat:
Die 990px in der Breite passen sich übrigens nicht an. Die Menüpunkte aber beispielsweise schon.
__________________
Corina Rudel Online-Einsteigerkurs HTML/CSS | Buch: Fortgeschrittene CSS-Techniken |
Sponsored Links |
|
|
Ähnliche Themen | ||||
Thema | Autor | Forum | Antworten | Letzter Beitrag |
CSS Menü - Anfänger benötigt Hilfe | mauricen | CSS | 2 | 24.01.2013 11:44 |
Problem mit CSS Dropline menü | horst77 | CSS | 1 | 12.08.2009 11:49 |
herunterfahrendes Menü mit CSS | Pablo | CSS | 1 | 27.12.2007 17:07 |
CSS Menü - Buttonfrage | Ralgar | CSS | 6 | 01.12.2006 17:14 |
Mysteriöses in CSS Dropdown Menü | ph!L | CSS | 3 | 21.07.2006 12:31 |