Rolf B: Responsive Navigation mit Flex&Target

Beitrag lesen

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:

<h2 id="chapter_1">
<p>...</p>

Dann kannst Du mit :target im CSS erreichen, dass eine so angesprungene Überschrift hervorgehoben wird:

h2:target {
   background-color: yellow;
}

Man kann das für ein Dropdown-Menü einsetzen missbrauchen:

<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>
#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