zurück zur Startseite
  


Zurück XHTMLforum > (X)HTML und CSS > CSS
Seite neu laden Per Burger eingeblendetes Navi-Menü ausblenden: Beste Technik

Antwort
 
LinkBack Themen-Optionen Ansicht
  #11 (permalink)  
Alt 09.03.2018, 12:33
Benutzerbild von AndreasB
Erfahrener Benutzer
XHTMLforum-Kenner
Thread-Ersteller
 
Registriert seit: 29.11.2005
Beiträge: 1.391
AndreasB wird schon bald berühmt werden
Standard

Ich habe jetzt ein eigenes Burgermenü gebaut.

Ohne JS.
Mit den Elementen input und label im Markup.
Ohne Bilder für den Burger und Aussschalter, sondern UTF-8-Zeichen stattdessen als generated content.
Mit möglichst wenigen class Attributen.

Burger

Ob es einen Weg ohne zusätzliches Markup gibt, weiß ich nicht.
Vermutlich nicht, sonst wäre es mir vermutlich beim Recherchieren über den Weg gelaufen.

HTML-Code:
input#burger,
input#burger + label {
	display: none;
}
@media screen and (max-width: 40em) {
input#burger + label {
	display: block;
	padding: 0.5em;
	background: gray;
	cursor: pointer;
	color: white;
}
/*Nav soll nicht zu sehen sein, wenn Checkbox nicht gewählt ist*/
	input#burger[type="checkbox"]:not(:checked) + label:before {
		content: "☰";
		}
	nav {
		position: absolute;
		top: -9999px;
	}

/*Nav soll zu sehen sein, wenn Checkbox gewählt ist*/
	input#burger[type="checkbox"]:checked + label:before {
		content: "✕";
		}
	input#burger[type="checkbox"]:checked ~ nav, input#burger[type="checkbox"]:checked ~ footer {
		position: relative;
		top: 0;
	}
}
HTML-Code:
<!-- Begin: Extra Markup --><input type="checkbox" id="burger"><label for="burger"></label><!-- End: Extra Markup -->
<nav>
	<ol>
		<li><a href="/">Home</a></li>
		<li><a href="/zimmer">Zimmer</a></li>
		<li><a href="/seminarbereich">Seminarbereich</a></li>
		<li><a href="/galerie">Galerie</a></li>
		<li><a href="/anfrage">Anfrage</a></li>
		<li aria-current="page"><strong>Lage</strong></li>
		<li><a href="/service">Service</a></li>
	</ol>
</nav>
<footer>
	<ol>
		<li><a href="/agb">AGB</a></li>
		<li><a href="/kontakt-impressum">Kontakt/Impresum</a></li>
		<li><a href="/datenschutz">Datenschutz</a></li>
	</ol>
</footer>
Apropos "Technik zum Ausblenden von Elementen vor Sehenden":

Google schreibt auf
https://support.google.com/webmaster.../7451184?hl=de

"Zu vermeiden:
Irreführendes Verbergen von Text vor Nutzern, der für Suchmaschinen jedoch angezeigt wird"

Ist die oben verwendete Technik
HTML-Code:
{ position: absolute; top: -9999px;}
diejenige, die ihr auch verwendet und die eures Wissens keinen Nachteil hinsichtlich SEO hat?
__________________


Geändert von AndreasB (09.03.2018 um 13:46 Uhr)
Mit Zitat antworten
Sponsored Links
  #12 (permalink)  
Alt 09.03.2018, 13:08
Erfahrener Benutzer
XHTMLforum-Kenner
 
Registriert seit: 30.01.2014
Beiträge: 2.247
cloned ist ein wunderbarer Anblickcloned ist ein wunderbarer Anblickcloned ist ein wunderbarer Anblickcloned ist ein wunderbarer Anblickcloned ist ein wunderbarer Anblickcloned ist ein wunderbarer Anblickcloned ist ein wunderbarer Anblick
Standard

Du kannst keine HTML Elemente mit ::before generieren.

Wenn dir accessibility nicht sehr wichtig ist dann kann man deine Lösung so lassen, ja
Falls es dir wichtig ist:
Wieso verwendest du die Wörter "Himmel" und "multiplizieren" für die Icons? Bzw würde ich testen, wie die icons vorgelesen werden.
Auch finde ich die Bedienung, wenn es zB einen Inhalt zwischen Navigation und footer gibt, sehr seltsam. Aber gut, das muss ja keine fertige Version sein.

Bezüglich des versteckens: Nachdem du deine Links auf "großen" Geräten normal anzeigst dürfte das so passen. Google versteht ja auch mediaqueries.
Mit Zitat antworten
Sponsored Links
  #13 (permalink)  
Alt 09.03.2018, 14:02
Benutzerbild von AndreasB
Erfahrener Benutzer
XHTMLforum-Kenner
Thread-Ersteller
 
Registriert seit: 29.11.2005
Beiträge: 1.391
AndreasB wird schon bald berühmt werden
Standard

@cloned
Danke für Deine Kritik.
Ja, es ist zur Zeit noch eine Skizze und nicht fertig.

In der Tat muss ich mir Gedanken zu einen Ersatztext für das Vorlesen der beiden Zeichen machen.

Hast Du eine gute Idee? Gibt es überhaupt das Konzept "Ersatztext" für "Text"?

Das Anzeigen einer Footer-Nav, die auf einem großen Display am unteren Ende steht, auf einem schmalen Display im Burgermenü anzuzeigen hielt ich für eine praktische Sache.
Scrollen ist ja auf einem schmalen Display ungleich langwieriger und mühsamer, ganz besonders, wenn es ein Touch-Display ist.

Wie siehst Du das?

Was Anderes:
Die Höhe des Elementes label verändert sich leicht, wenn man es in Chrome oder Safari auf macOS klickt. Kann es etwas damit zu tun haben, dass die beiden Zeichen aus unterschiedlichen Fonts geholt werden? Wie würdet ihr das verhindern?
In Safari auf iOS gibt es den Effekt nicht.
__________________


Geändert von AndreasB (09.03.2018 um 14:12 Uhr)
Mit Zitat antworten
  #14 (permalink)  
Alt 09.03.2018, 15:25
Erfahrener Benutzer
XHTMLforum-Kenner
 
Registriert seit: 30.01.2014
Beiträge: 2.247
cloned ist ein wunderbarer Anblickcloned ist ein wunderbarer Anblickcloned ist ein wunderbarer Anblickcloned ist ein wunderbarer Anblickcloned ist ein wunderbarer Anblickcloned ist ein wunderbarer Anblickcloned ist ein wunderbarer Anblick
Standard

Sicher gibt es das, du kannst einen Text nur für screenreader einbinden. Siehe zB die sr-only Klasse von bootstrap, damit wird Text für normale Besucher versteckt und screenreader nutzer (deshalb auch der Klassenname, ScreenReader-only) bekommen den Text vorgelesen. Andererseits gibt es auch das aria- attribute, welche definieren, was vorgelesen werden soll. Das aria-label attribut erscheint mir hier auf den ersten Blick passend.

Bezüglich des footers: Ich meinte eigentlich folgendes: Setze ein <div style="height: 500px"> </div> zwischen deinen header und footer und dann führe deine Seite aus. Oder ist das dann so gewünscht?
Fixe höhen/breiten (oder mindest-höhen/breiten) kannst du per CSS vergeben, dafür musst du deinem Element aber wohl zuerst display: block (oder inline-block) vergeben.

Edit: Da werden keine 2 fonts geladen, das ist alles eine font.

Edit 2: Scrollen ist ja auf einem schmalen Display ungleich langwieriger und mühsamer, ganz besonders, wenn es ein Touch-Display ist.

Das wage ich zu bezweifeln, da smartphones ja durchaus erkennen, wie "aggressiv" gescrollt wird. Ganz oben, bzw. ganz unten bin ich auf einem Smartphone recht schnell, aber das empfindet wohl jeder anders.

Geändert von cloned (09.03.2018 um 15:31 Uhr)
Mit Zitat antworten
  #15 (permalink)  
Alt 09.03.2018, 16:34
Benutzerbild von basti1012
Erfahrener Benutzer
XHTMLforum-Mitglied
 
Registriert seit: 23.01.2018
Beiträge: 184
basti1012 befindet sich auf einem aufstrebenden Ast
Standard

Hierfür gibt es auch was ,was für dich passen könnte https://codepen.io/basti1012/pen/BryNwV

Kannst alles unnötige ja raus schmeissen was nicht gebraucht wird

Geändert von basti1012 (09.03.2018 um 16:37 Uhr)
Mit Zitat antworten
  #16 (permalink)  
Alt 09.03.2018, 17:11
Benutzerbild von AndreasB
Erfahrener Benutzer
XHTMLforum-Kenner
Thread-Ersteller
 
Registriert seit: 29.11.2005
Beiträge: 1.391
AndreasB wird schon bald berühmt werden
Standard

Zitat:
Zitat von cloned Beitrag anzeigen
Sicher gibt es das, du kannst einen Text nur für screenreader einbinden. Siehe zB die sr-only Klasse von bootstrap, damit wird Text für normale Besucher versteckt und screenreader nutzer (deshalb auch der Klassenname, ScreenReader-only) bekommen den Text vorgelesen.
Könntest du dafür bitte Beispiel HTML- und CSS-Code posten?
Also nicht Bootstrap-Code, sondern compiliertes HTML/CSS.
Zitat:
Andererseits gibt es auch das aria- attribute, welche definieren, was vorgelesen werden soll. Das aria-label attribut erscheint mir hier auf den ersten Blick passend.
Danke für den Hinweis. Richtig verstanden habe ich die Funktionsweise noch nicht. Wird das Label statt des Inhaltes vorgelesen oder zusätzlich?
Zitat:
Bezüglich des footers: Ich meinte eigentlich folgendes: Setze ein <div style="height: 500px"> </div> zwischen deinen header und footer und dann führe deine Seite aus. Oder ist das dann so gewünscht?
Fixe höhen/breiten (oder mindest-höhen/breiten) kannst du per CSS vergeben, dafür musst du deinem Element aber wohl zuerst display: block (oder inline-block) vergeben.
Bevor wir dazu weitermachen, bitte ich Dich meine Frage zu beantworten, was Du von meinen Überlegungen hältst. Sonst verzetteln wir uns, weil wir vielleicht über ganz unterschiedliche Ziele sprechen.

Nochmal mein Ziel:
Auf einem schmalen Display sollen die Links aus dem Header und dem Footer im Burgermenü stehen. Den Grund habe ich genannt.

Verfolgst Du dasselbe Ziel?

Zitat:
Das wage ich zu bezweifeln, da smartphones ja durchaus erkennen, wie "aggressiv" gescrollt wird. Ganz oben, bzw. ganz unten bin ich auf einem Smartphone recht schnell, aber das empfindet wohl jeder anders.
OK, können wir so stehen lassen. Ich habe schon oft Nutzer beobachtet, die genervt von langem Scrollen bis ganz unten waren. Für "nach ganz oben" gibt es auf meinem OS (iOS) eine Kurzgeste. Für "nach ganz unten" nicht.

Zur Höhe nochmal:
Hast Du eine Idee warum sie sich beim Klicken verändert?
__________________

Mit Zitat antworten
  #17 (permalink)  
Alt 09.03.2018, 17:15
Benutzerbild von AndreasB
Erfahrener Benutzer
XHTMLforum-Kenner
Thread-Ersteller
 
Registriert seit: 29.11.2005
Beiträge: 1.391
AndreasB wird schon bald berühmt werden
Standard

Zitat:
Zitat von basti1012 Beitrag anzeigen
Hierfür gibt es auch was ,was für dich passen könnte https://codepen.io/basti1012/pen/BryNwV
Danke für das Beispiel.

Da es sehr viele Gestaltangaben enthält, blicke ich noch nicht durch, worin es sich im Wesentlichen von meinem Beispiel unterscheidet.

Könntest Du bitte diese Unterschiede nennen?

Worin siehst Du Vor-/Nachteile?
__________________

Mit Zitat antworten
  #18 (permalink)  
Alt 09.03.2018, 20:42
Benutzerbild von basti1012
Erfahrener Benutzer
XHTMLforum-Mitglied
 
Registriert seit: 23.01.2018
Beiträge: 184
basti1012 befindet sich auf einem aufstrebenden Ast
Standard

Du versuchst ja alles mit so wennig Code wie möglich, alles zu regeln.In den Falle ist dein natürlich besser. Wenn man jetzt ein spielkind ist und auf animationen und Farben steht ist meins natürlich schöner.
Dann laufen beide ohne Javascript ,das ist schon mal gut.
Bei mir ist noch eine Bibiliothek eingebunden für das Burger Zeichen.Das kann man aber raus nehmen und über content:'X'; regeln wie du das gemacht hast.
Ja, bei mir könnte man noch einiges raus löschen was für Optik da ist.Aber wenniger Code als wie bei dein wird es nicht.
Ich glaube du hast da schon das minimum erreicht was man brauch damit die Funktion geht,noch wenniger geht glaube ich nicht.Auser mit 2 Zeile Javascript vieleicht.

Ansonsten sehe ich keine Vorteile oder Nachteile an den beiden Scripten
Mit Zitat antworten
  #19 (permalink)  
Alt 09.03.2018, 20:51
Benutzerbild von AndreasB
Erfahrener Benutzer
XHTMLforum-Kenner
Thread-Ersteller
 
Registriert seit: 29.11.2005
Beiträge: 1.391
AndreasB wird schon bald berühmt werden
Standard

@basti
Da missverstehst Du mich.

Ich mag animierte, geschmeidige Einblendungen sogar sehr gern. Auch das Spiel mit Gradienten etc.

Hier geht es jedoch allein um die Technik des Ein- und Ausblendens.

Da ist es hilfreich, wenn jeglicher CSS-Code, der dafür nicht zwingend benötigt wird, auch nicht vorkommt.

Das ist sozusagen eine sehr grundlegende Frage, wie man Testcases baut
Vereinfacht auch die Fehlersuche.

Ich bastle gerade an einem Burger mit ":target".
__________________

Mit Zitat antworten
Sponsored Links
  #20 (permalink)  
Alt 09.03.2018, 22:57
Benutzerbild von basti1012
Erfahrener Benutzer
XHTMLforum-Mitglied
 
Registriert seit: 23.01.2018
Beiträge: 184
basti1012 befindet sich auf einem aufstrebenden Ast
Standard

Ja target geht auch ,so brauch man auch kein Javascript. Du hast ja auch recht ,je wenniger Code,und so aufgeräumter er ist ,vereinfacht die Fehlersuche.Aber wenn erstmal alles richtig läuft dann ist es nicht mehr so wichtig. Nach stylen kann man dann immer noch ,vorallem wenn der Code aufgeräumt ist ,dann blickt da auch jeder durch.Finde das bei Bootstramp immer alles so voll geklatscht.Das ist auch nicht mein Fall ,obwohl das Coden damit angeblich einfacher sein soll.
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
FAQ -- Häufig gestellte Fragen und häufig gegebene Antworten mazzo CSS 10 05.04.2012 17:32
Navi: Eltern-Element verbreitert sich beim hover auf Kind-Element img CSS 0 07.12.2010 18:42
Darstellungsproblem flohpapa CSS 3 16.12.2009 08:55
IE verschiebt Navi Menü macmensa CSS 7 17.08.2009 16:45
Vertikales Menü streikt im IE6 kopfaquarium CSS 1 16.10.2007 14:45


Alle Zeitangaben in WEZ +2. Es ist jetzt 17:20 Uhr.