Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [html] problem z menu opartym na divach
Forum PHP.pl > Forum > Po stronie przeglądarki > HTML \ XHTML
tomkoz11
Mam następujący problem - nie wiem jak przerobić menu, aby to było uznawane za zgodne ze standardami przez walidator w3c.
Wiem o co chodzi - że div jako element blokowy, nie może znajdować się w <a></a>, tyle że nie mam pomysłu jak to przerobić by było wszystko ok w walidatorze. O usunięciu divów nie ma co rozmawiać bo one są niezbędne, gdyż wykorzystuję je do uzyskania efektu podświetlenia onmouseover, a jeżeli <a> umieściłbym już w divach to trzeba by się było napracować, żeby w ogóle trafić w link. ;/ Mój Doctype to HTML 4.01 Strict

Przykładowy link w menu wygląda tak:

  1. <a href="index.htm"><div class="link_menu">STRONA GŁÓWNA</div></a>


Komunikaty które zwraca walidator:

Cytat
document type does not allow element "DIV" here; missing one of "APPLET", "OBJECT", "MAP", "IFRAME", "BUTTON" start-tag

Cytat
The mentioned element is not allowed to appear in the context in which you've placed it; the other mentioned elements are the only ones that are both allowed there and can contain the element mentioned. This might mean that you need a containing element, or possibly that you've forgotten to close a previous element.

One possible cause for this message is that you have attempted to put a block-level element (such as "<p>" or "<table>") inside an inline element (such as "<a>", "<span>", or "<font>").
gekon
Na przykład tak:
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
  3. <title>Menu</title>
  4. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  5. <style type="text/css">
  6. #menu { list-style: none; }
  7. #menu li { float: left; }
  8. #menu li a { padding: 0.5em; background-color: #F00; }
  9. </style>
  10. </head>
  11. <ul id="menu">
  12. <li><a href="#">Strona główna</a></li>
  13. <li><a href="#">Inna strona</a></li>
  14. </ul>
  15. </body>
  16. </html>


Oglądnij też Listamatic.
kwiateusz
a może zwyczajnie zamień div na span? elementy liniowe mogą się zawierać w sobie...
babejsza
To nie dobrze bo powinny wyglądać tak jak to już napisał Ci @gekon.

Linki w menu są niczym innym jak listą nieuporządkowaną, a skoro tak to należy je przypisać do odpowiednich znaczników.
E -dd
Kod
<div><a></a></div>

W takiej kolejności powinno być smile.gif
envp
Myślę, że to co napisał @gekon jesy najbardziej sensowne, sprawdzone i poprawne...
tomkoz11
Wydaję mi się, że nie do końca zrozumieliście mój problem. Ten kod CSS powinien wyjaśnić o co mi dokładnie chodziło :
  1. <a href="index.htm"><span class="link_menu">STRONA GŁÓWNA</span></a>

  1. .link_menu
  2. {
  3. display: block;
  4. background-image: url(gfx/menu1.png);
  5. width: 149px;
  6. height: 25px;
  7. vertical-align: bottom;
  8. font-family: sans-serif;
  9. font-size: medium;
  10. color: #000000;
  11. text-align: center;
  12. border-style: none;
  13. }
  14. .link_menu:hover
  15. {
  16. display: block;
  17. background-image: url(gfx/menu2.png);
  18. width: 149px;
  19. height: 25px;
  20. vertical-align: top;
  21. font-family: sans-serif;
  22. font-size: medium;
  23. color: #000000;
  24. text-align: center;
  25. border-style: none;
  26. text-decoration: none;
  27. }

Problem został już rozwiązany, więc temat może w mojej opinii zostać zamknięty. winksmiley.jpg
gekon
Nie, my bardzo dobrze zrozumieliśmy Twój problem smile.gif To Ty nie zrozumiałeś naszych wskazówek smile.gif Ale praktyka przychodzi z czasem.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.