zurück zur Startseite
  


Zurück XHTMLforum > (X)HTML und CSS > CSS
Seite neu laden Responsive CSS Menü

Antwort
 
LinkBack Themen-Optionen Ansicht
  #1 (permalink)  
Alt 18.05.2013, 23:36
Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 05.05.2013
Beiträge: 37
CaptainGerrard befindet sich auf einem aufstrebenden Ast
Standard 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
Mit Zitat antworten
Sponsored Links
  #2 (permalink)  
Alt 19.05.2013, 12:31
?!?
XHTMLforum-Kenner
 
Registriert seit: 20.03.2013
Beiträge: 1.638
explanator sorgt für eine eindrucksvolle Atmosphäreexplanator sorgt für eine eindrucksvolle Atmosphäre
Standard

Folgende Fehler:

HTML-Code:
* {line-height:1em;}
Die Zeilenhöhe sollte grösser sein als die Schrift, sonst klebt jede Zeile direkt unter der darüberliegenden. Das kann dann kein Mensch vernünftig lesen. Verwende einen praktikablen Wert, irgendwas zwischen 1.3 und 1.7em.

HTML-Code:
body {
	font-size: 68.75%;
}
Die optimale Schriftgrösse als Ausgangsgrösse ist 1em, bei kleineren Angaben muss der Benutzer immer zoomen.

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;
}
Der Wrapper bezieht sich nur auf das Menü und ist eigentlich überflüssig, da du das erste UL-Element ebenso verwenden kannst. Vergib dazu eine aussagekräftige ID wie Navigation oder Menue und übernimm die Eigenschaften des Wrappers für dieses UL.

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;
}
Der Linke Abstand der Menüpunkte ist hier mit 2px angegeben.
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;
}
Entgegen deiner Aussage sind die Innenabstände der Menüblöcke nicht pronzentual sondern fix mit Pixel angegeben.

HTML-Code:
ul.dropdown > li > a {
	display: block;
	text-decoration: none;
	text-transform: uppercase;
	color: #232A33;
	font-size: 1.091em; /* 12px */
}
Die Schriftgrösse 1.091em soll 12 Pixeln entsprechend. Bitte Lösche den Kommentar, diese Aussage ist falsch. Lese bei Wikipedia über Punktdichte nach.
__________________
"Wieso ist der Code schrott, ich dachte hier seien Profis..."
Aus einem Forum.
Mit Zitat antworten
Sponsored Links
  #3 (permalink)  
Alt 19.05.2013, 16:03
Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 05.05.2013
Beiträge: 37
CaptainGerrard befindet sich auf einem aufstrebenden Ast
Standard

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.
Mit Zitat antworten
  #4 (permalink)  
Alt 20.05.2013, 02:27
?!?
XHTMLforum-Kenner
 
Registriert seit: 20.03.2013
Beiträge: 1.638
explanator sorgt für eine eindrucksvolle Atmosphäreexplanator sorgt für eine eindrucksvolle Atmosphäre
Standard

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.
Mit Zitat antworten
  #5 (permalink)  
Alt 20.05.2013, 13:15
Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 05.05.2013
Beiträge: 37
CaptainGerrard befindet sich auf einem aufstrebenden Ast
Standard

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
Mit Zitat antworten
  #6 (permalink)  
Alt 20.05.2013, 20:03
Benutzerbild von heiko_rs
Erfahrener Benutzer
XHTMLforum-Kenner
 
Registriert seit: 18.09.2005
Ort: Berlin
Beiträge: 9.848
heiko_rs ist ein wunderbarer Anblickheiko_rs ist ein wunderbarer Anblickheiko_rs ist ein wunderbarer Anblickheiko_rs ist ein wunderbarer Anblickheiko_rs ist ein wunderbarer Anblickheiko_rs ist ein wunderbarer Anblickheiko_rs ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von explanator Beitrag anzeigen
Verwende einen praktikablen Wert, irgendwas zwischen 1.3 und 1.7em.
line-height am besten ohne Einheit, verhindert Vererbungsprobleme.

Zitat:
Zitat von CaptainGerrard Beitrag anzeigen
body font-size: 68.75%: dient als Ausgangslage, sind 11px (da von 16px ausgegangen wird)
Ist aber nur bedingt sinnvoll, da 1em nicht mehr 11px ist, wenn ein Vorfahre z.B. 2em hat (anders wäre das natürlich bei der Einheit rem).

Zitat:
Zitat von explanator Beitrag anzeigen
das -2px hebt den Standardabstand von display: inline-block auf
Aber nur Pi-mal-Daumen und bei Textzoom geht es eh den Bach runter. Näher dran wäre .25em, aber das taugt auch hier nix. Sollen die Abstände wirklich auf Null, entferne die Whitespaces (geht auch per Kommentar).

Zitat:
Zitat von CaptainGerrard Beitrag anzeigen
Wie schaffe ich es, dass die Abstände der einzelnen Menüpunkte sich von einem gewissen Wert, bis auf minimal 1px verkleinern?
Kannst Du doch per media query festlegen.
__________________
Wer keinen Link auf seine problembehaftete Seite posten kann, weil diese noch nicht online ist: Testcase bauen, online stellen, Link posten.
Internet-Grundregel: Unbekannte Begriffe googeln! (Erspart 99% aller Nachfragen.)
Mit Zitat antworten
  #7 (permalink)  
Alt 20.05.2013, 20:22
Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 05.05.2013
Beiträge: 37
CaptainGerrard befindet sich auf einem aufstrebenden Ast
Standard

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
Mit Zitat antworten
  #8 (permalink)  
Alt 20.05.2013, 20:25
Erfahrener Benutzer
XHTMLforum-Kenner
 
Registriert seit: 28.01.2005
Beiträge: 11.775
fricca kann auf vieles stolz seinfricca kann auf vieles stolz seinfricca kann auf vieles stolz seinfricca kann auf vieles stolz seinfricca kann auf vieles stolz seinfricca kann auf vieles stolz seinfricca kann auf vieles stolz seinfricca kann auf vieles stolz sein
Standard

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:
Zitat von CaptainGerrard Beitrag anzeigen
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.
In anderer Augen ergeben viele Dinge aber keinen Sinn. Manchmal lohnt es sich, diesen anderen zuzuhören -- auch, wenn man eigene Ansichten dadurch ändern müsste (oder vielleicht gerade dann).
Ich versuch's nochmal:
Zitat:
Zitat von CaptainGerrard Beitrag anzeigen
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.
Du möchtest deinen Gartenzaun weiß streichen, zwei von den ingesamt 10 Pfosten sollen rot werden. Deshalb streichst du jetzt den ganzen Zaun erstmal rot und überstreichst dann alles bis auf die zwei Pfosten nochmal weiß.
Ist das wirklich sinnvoll?

Mehr Lesetoff zu sinnvoller line-height: Eric's Archived Thoughts: Unitless line-heights

Zitat:
2. body font-size: 68.75%: dient als Ausgangslage, sind 11px (da von 16px ausgegangen wird), ist also auch richtig so.
Vor inzwischen fast 10 Jahren kam Richard Rutter auf die Idee, man könnte für font-size im body 62.5% angeben, dann hätte man 10px als Rechenbasis für weitere em-Werte. Klingt erstmal gut, hat sich aber nicht als praktikabel erwiesen. Nur ein paar wenige Gründe:
- 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:
3. Seitenbreite 990px: ist ebenfalls korrekt, da bei diesem Projekt Bilder in 990px Breite Pflicht sind und die Seite keinesfalls breiter sein darf!!!!
Auch mit 4 Ausrufezeichen erschließt sich das nicht. Wenn Bilder eine bestimmte Breite haben sollen -- was hat das dann mit der gesamten Seite zu tun?
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:
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.
Dieser Abstand ist nicht zwei Pixel und nicht drei Pixel -- sondern der Wortabstand. Und der wiederum ist abhängig von der Schriftgröße.
Wenn man also in der Richtung etwas anpassen wollte, dann sind em die richtige Wahl.

Zitat:
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!!!
Man verwendet em als Einheit für die Schriftgröße, weil man Rücksicht auf die Einstellung des Users nehmen will, und weil man heutzutage nicht mehr davon ausgehen kann, dass dieser Default-Wert 16px ist. Z.B. irgendein Kindle hat 26px (oder so) als Defaultgröße. Wer weiß, was da noch kommt.
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:
  • Der globale Reset von Abständen ist schon nicht empfehlenswert (siehe FAQ, ganz am Anfang) -- border:0 ist tödlich, wenn Formularelemente vorkommen.
  • Was soll das target-Attribut? Arbeitest du mit Frames?
  • Warum haben die Links ein title-Attribut, in dem der Linktext wiederholt wird? Wem soll das nützen?
Zitat:
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.
Mit selbst angegebenen Abstandswerten geht das nicht, denn die Länge der Menüpunkte ist unbekannt, da abhängig von der Textlänge.
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.
Mit Zitat antworten
  #9 (permalink)  
Alt 20.05.2013, 22:40
Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 05.05.2013
Beiträge: 37
CaptainGerrard befindet sich auf einem aufstrebenden Ast
Standard

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?
Mit Zitat antworten
Sponsored Links
  #10 (permalink)  
Alt 20.05.2013, 22:51
Erfahrener Benutzer
XHTMLforum-Kenner
 
Registriert seit: 28.01.2005
Beiträge: 11.775
fricca kann auf vieles stolz seinfricca kann auf vieles stolz seinfricca kann auf vieles stolz seinfricca kann auf vieles stolz seinfricca kann auf vieles stolz seinfricca kann auf vieles stolz seinfricca kann auf vieles stolz seinfricca kann auf vieles stolz sein
Standard

Zitat:
Zitat von CaptainGerrard Beitrag anzeigen
Mir ist jetzt nicht ganz klar, warum ich 100% als Schriftgröße verwenden sollte?
Weil das der einzige Wert ist, bei dem man nicht ungewollt danebenschießen kann. Hab ich doch oben schon beschrieben (und einen Link gepostet).

Zitat:
Ich habe lt. Designvorlage bei Schriftar "Tahoma" 11px (Desktop), meine 68.75% sind (von den 16px) 11px.
Das ist dann eine untaugliche Vorlage. Zeig dem Vorleger doch mal, was an einem iPad Mini davon übrigbleibt.
(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:
Wenn jemand mit einem anderen Wert als 16px Standard fährt, passt sich das ja eh alles an, oder denke ich falsch?
Wenn jemand ein Userstylesheet verwendet: Siehe oben. Außerdem resultieren aus diesem Grundwert derart krumme em-Werte, dass es doch auch nicht in deinem Interesse sein kann, sowas einzusetzen.

Die 990px in der Breite passen sich übrigens nicht an. Die Menüpunkte aber beispielsweise schon.
Mit Zitat antworten
Sponsored Links
Antwort


Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus


Ä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


Alle Zeitangaben in WEZ +2. Es ist jetzt 05:03 Uhr.