Entwickler-Ecke

Beschreibungssprachen - [w3c] Div in A


Heiko - Do 12.07.07 20:44
Titel: [w3c] Div in A
Hallo,

ich möchte meine Seite w3c-kompatibel halten. Dabei bin ich auf folgendes Problem gestoßen:


Quelltext
1:
2:
3:
4:
5:
6:
<div class="menupoints">
  <a href="index.php?action=va"><div>Spiel</div></a>
  <a href="index.php?action=player"><div>Spieler</div></a>
  <a href="index.php?action=raceedit"><div>externes</div></a>
  <a href="index.php?action=home"><div class="active">ACP</div></a>
</div>

Das ist nicht w3c-Kompatibel. Er meckert rum, dass nen div direkt nach nem a nicht erlaubt ist. Wie bekomme ich es trotzdem hin, dass der div als Link aufgefasst wird (ohne JS versteht sich)?

Grüße
Heiko


mkinzler - Do 12.07.07 20:49

Warum brauchst du den Div?
<p>..</p>
<span>..</span>


Heiko - Do 12.07.07 20:52

Ich weiß nicht, ob das mit p gehen würde (muss ich morgen mal austesten, auch wenn ich es nicht glaube):


Quelltext
1:
2:
3:
4:
5:
div.menupoints * div {background:url(../design/menu.bmp); border-top: 1Px solid #6496D2; height: 25Px; font-size: 12Px; padding-left: 10Px; padding-top: 5Px; cursor: pointer}
div.menupoints * div:hover {background:url(../design/menu_hov.bmp)}
div.menupoints * div:active {background:url(../design/menu_foc.bmp); color: #003C78;}
div.menupoints * div.active {background:url(../design/menu_act.bmp); color: #000000}
div.menupoints * div.active:hover {background:url(../design/menu_act_hov.bmp)}


GTA-Place - Fr 13.07.07 06:44

Ähm... warum wendest du das nicht gleich auf das <a> an? Display: Block; und es verhält sich wie ein <div>.


Heiko - Fr 13.07.07 14:06

Hast Recht, Danke :zustimm: (war wahrscheinlich so froh, mal etwas mit Divs machen zu können, wo ich keine Tabelle brauche ;))


Brother John - Fr 13.07.07 14:50

Ein <a> darf keine Blockelemente enthalten, daran liegt das eigentliche Problem.

<a> als display:block auszuzeichnen wird meistens funktionieren, kann aber unter dummen Umständen auch zu Problemen führen, denn zumindest in den Strict-Varianten von (X)HTML muss jedes Inline-Element in einem übergeordneten Blockelement enthalten sein, wobei <body> nicht zählt und natürlich die CSS-Definitionen fürs reine (X)HTML-Parsing nicht greifen. So etwas wie

Quelltext
1:
2:
3:
4:
5:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
...
<body>
  <a href="...">Link</a>
</body>

darf also nicht sein. Das solltest du im Hinterkopf behalten, aber wenn das Seitenlayout nicht gerade extremst simpel ist, fängt sowieso das eine oder andere Container-Div das Problem ab.


Heiko - Fr 13.07.07 16:00

Diese Richtung ist mir bekannt (Container->Inhalt). Umgekehrt war es mir nur noch nicht bekannt ;).