Mark Grotegerd: Darstellungsproblem von Grafiken

Hallo,

folgendes Problem. Ich habe einen horizontalen Bereich als Menülayer definiert. Die einzelnen Menüpunkte werden als kleine Grafiken eingebunden. Allerdings erscheinen diese Grafiken nicht so wie gewünscht. Zwischen den Menüpunkten erscheint immer ein kleiner freier Bereich (als wenn ein Leerzeichen eingefügt wird), wenn ich die tags untereinander aufliste. Wenn ich die img-tags jedoch in einer Zeile hintereinander schreibe, taucht dieses Problem nicht auf.

<div id="menu">
        <img src="img/menu.gif" border="0" width="100" height="25" alt="" />
        <img src="img/menu.gif" border="0" width="100" height="25" alt="" />
        <img src="img/menu.gif" border="0" width="100" height="25" alt="" />
        <img src="img/menu.gif" border="0" width="100" height="25" alt="" />
        <img src="img/menu.gif" border="0" width="100" height="25" alt="" />
        <img src="img/menu.gif" border="0" width="100" height="25" alt="" />
        <img src="img/menu.gif" border="0" width="100" height="25" alt="" />
      </div>

Hat jemand eine Ahnung, wo das Problem liegt?
Vielen Dank

-- Mark

  1. Hallo Mark,

    Zwischen den Menüpunkten erscheint immer ein kleiner freier Bereich (als wenn ein Leerzeichen eingefügt wird), wenn ich die tags untereinander aufliste. Wenn ich die img-tags jedoch in einer Zeile hintereinander schreibe, taucht dieses Problem nicht auf.

    warum machst Du es dann nicht einfach, also die Bilder alle in eine
    Zeile schreiben?

    Hat jemand eine Ahnung, wo das Problem liegt?

    Ja, Zeilenumbrüche werden wie Leerzeichen behandelt.

    Viele Grüße,
    Stefan

  2. hi Mark

    es kommt durchaus vor, das ein zeilenumbruch im sourcecode als leerzeichen interpretiert wird, darum: alles in eine zeile was nahtlos sein soll :)

    so long
    ole
    (8-)>

  3. Hallo Mark

    Hat jemand eine Ahnung, wo das Problem liegt?

    AFAIK werden die Zeilenumrüche und die Leerzeichen/Tabulatoren zum Einrücken des Quelltextes als ein Leerzeichen dargestellt. Dir bleibt kaum etwas anderes übrig als die Grafiken in eine Zeile zu schreiben.

    MfG

    Tom2

  4. Danke Euch,

    ich habe das Problem jetzt so gelöst, dass ich die einzelnen Menüpunkte auch als layer definiert (mit display:inline) und entsprechend die Grafik als Hintergrundbild gesetzt habe.

    Ist aber trotzdem irgendwie nicht Sinn der Sache, dass Zeilenumrüche als Leerzeichen interpretiert werden, oder? Gerade für "Quellcodeperfektionisten" ;)

    Gruss
    Mark

    1. Moin!

      Ist aber trotzdem irgendwie nicht Sinn der Sache, dass Zeilenumrüche als Leerzeichen interpretiert werden, oder? Gerade für "Quellcodeperfektionisten" ;)

      Doch, das ist Sinn der Sache. Es gibt bei Bugzilla irgendwo eine heftige Diskussion darüber, warum beispielsweise folgender Code:

      <div>
      <span>irgendwas</span>
      </div>

      unter Javascript das Problem macht, daß man mit firstChild() wider Erwarten nicht auf das <span> zugreifen kann, sondern damit den Zeilenumbruch erhält.

      Der DOM-Baum sieht dort nämlich so aus[1]:
      <div>
      +-- Leerzeichen
      +-- <span>
      |   +-- 'irgendwas'
      +-- Leerzeichen

      Es gab heftigen Streit, warum Mozilla das so macht, wie er es macht, und weshalb man das nicht ändern könne. Letztendlich wurde als Ergebnis hervorgebracht: Wer das richtige firstChild() will, muß eben <div><span>irgendwas</span></div> schreiben, denn wer eine Leerzeile einbringt, meint das vielleicht genau so, weil er später dort was neues einfüllen will.

      Außerdem ist dein Problem ja nichts grundsätzlich Neues. Wer in Tabellenzellen Grafiken ohne zusätzlichen Rand einfügen will, muß ebenfalls die <td>s ohne Leerzeichen ums <img> herum setzen.

      - Sven Rautenberg

      [1] Ich hab von DOM-Bäumen nicht wirklich viel Ahnung, also möge man mir die endlich vielen Fehler in der Darstellung verzeihen. :) Das Prinzip dürfte aber stimmen.

      1. Moin!

        Tach auch.

        Der DOM-Baum sieht dort nämlich so aus[1]:
        <div>
        +-- Leerzeichen
        +-- <span>
        |   +-- 'irgendwas'
        +-- Leerzeichen

        Es gab heftigen Streit, warum Mozilla das so macht, wie er es macht, und weshalb man das nicht ändern könne. Letztendlich wurde als Ergebnis hervorgebracht: Wer das richtige firstChild() will, muß eben <div><span>irgendwas</span></div> schreiben, denn wer eine Leerzeile einbringt, meint das vielleicht genau so, weil er später dort was neues einfüllen will.

        ist aber auch inkonsequent. Wenn ich spaeter neue Kinder in den Baum heften möchte, kann ich diese doch auch schön strukturiert "eintaggen".
        Aber vermutlich hast Du recht, darüber wird andererorts genug diskutiert.

        [1] Ich hab von DOM-Bäumen nicht wirklich viel Ahnung, also möge man mir die endlich vielen Fehler in der Darstellung verzeihen. :) Das Prinzip dürfte aber stimmen.

        dito ;)