Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [XHTML] element blokowy w liniowym
Forum PHP.pl > Forum > Po stronie przeglądarki
krzychos7
Chciałbym zrobić element blokowy zawierający nagłówek, obrazek oraz paragraf, który funkcjonował by jak link.
Wiem że nie można używać elementów blokowych (jak <div>) wewnątrz elementów inline (jak <a>).
Próbowałem użyć zdarzenia onclick, do tego w CSS dodałem cursor: pointer. Co dało bardzo zbliżony efekt. Jednakże brakuje możliwości pod prawym przyciskiem wybrania otwarcia w nowym oknie/karcie oraz nie wyświetla się adres w pasku stanu.
Czy muszę naginać standard XHTML i wykorzystać <a> z display: block; czy istnieje jakieś inne rozwiązanie?
Pacio
  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">
  3.  
  4. <style type="text/css">
  5. div {
  6. position: relative;
  7. }
  8.  
  9. a {
  10. position: absolute;
  11. top: 0;
  12. left: 0;
  13. height: 100%;
  14. width: 100%;
  15. background: url(1px.gif) repeat; /* przezroczysty 1x1px gif */
  16. text-indent:-9999px;
  17. }
  18.  
  19. </head>
  20.  
  21. <div>
  22. <h1>Lorem Ipsum is simply dummy</h1>
  23. <img src="img/obrazek.jpg" alt="" />
  24. <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s</p>
  25.  
  26. <a href="link.html">ukryty tekst linka</a>
  27. </div>
  28.  
  29. </body>
  30. </html>
krzychos7
Dzięki smile.gif, chyba najlepsze rozwiązanie jak ktoś zaproponował (na innych forach pytałem i tylko w kółko o onclick pisali... mimo iż właśnie pisałem że to mnie nie zadowala). Zasadniczo nie lubię używać przeźroczystych pikseli z gif ale tu akurat chyba nie ma lepszego rozwiązania. Preferuje sposoby pozwalające odwiedzającym stronę zaznaczyć tekst lecz tu akurat można z tego zrezygnować.

PS.
No i czar prysł, gryzie się to z efektami jQuery chyba, i to 100% przyjmuje na całą stronę zamiast tylko diva. Widocznie nie może się ot odnosić do modyfikowanych AJAXem elementów. Ale rozwiąże jednak to bardziej skomplikowanym sposobem, za pomocą JS właśnie funkcje zrobię która będzie wstawiała dynamicznie tag linku wokół obrazka takstu nagłówka i tekstu paragrafu danego DIVa przez co tam będzie działał prawoklik, zaś reszta DIVa będzie miała onclick. Może nie da to 100% tego co chce ale będzie się walidowało i działało.
ShadowD
<a> jest domyślnie elementem blokowym ale można to zmienić na np. blokowy! (display:block;)

Dzięki temu nie potrzebujesz w ogóle diva, a jego całe ostylowanie może przenieść na owy odnośnik.

Nie powinno się nakładać przezroczystych masek ani z onclick w tym przypadku...
krzychos7
Właśnie o tym mowa. Zasadniczo tak nie powinno się robić no i można ustawić <a> na block (pisałem o tym też w pierwszym poście) jednak mimo tego nie można umieszczać w nim elementów blokowych, tak jest na stronie W3C oraz każdy walidator wywala na tym błąd.
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.