Responsive Navigation mit Flex&Target
bearbeitet von
Hallo ShareThePain,
die Pseudoklasse :target ermöglicht Dir, im CSS auf die ID zu reagieren, die in der URL hinter # angegeben wird (auch Hash-Teil der URL genannt).
Also: Irgendein Link führt auf `https://example.com/test.html#chapter_1`. In test.html hast Du irgendwo stehen:
~~~html
<h2 id="chapter_1">
<p>...</p>
~~~
Dann kannst Du mit :target im CSS erreichen, dass die Überschrift hervorgehoben wird:
~~~css
h2:target {
background-color: yellow;
}
~~~
Man kann das für ein Dropdown-Menü ~~einsetzen~~ missbrauchen:
~~~html,bad
<nav>
<a href="#menu">≡</a>
<ul id="menu">
<li><a href="...">Item 1</a></li>
<li><a href="...">Item 2</a></li>
<li><a href="...">Item 3</a></li>
</ul>
</nav>
~~~
~~~css
#menu { display: none; }
#menu:target { display: block; }
~~~
Aber diese Vorgehensweise ist falsch. Weil das a Element zweckentfremdet wird. Darauf hat Gunnar schon hingewiesen. Das ist kein Link. Da gehört ein Button hin. Man könnte nun einen Button machen, der per JavaScript location.hash auf "#menu" setzt. Aber dann bist Du doch bei JavaScript, und kannst gleich ein anständiges JavaScript-Menü bauen, ohne bei jedem Öffnen des Menüs die Browser-History vollzumüllen.
_Rolf_
--
sumpsi - posui - obstruxi