Nicht brechender Nicht-Leerzeichen in HTML

8

Ich habe eine Bowling-Web-Anwendung, die ziemlich detaillierte Bild-für-Bild-Informationen ermöglicht. Eine Sache, die es erlaubt, ist zu verfolgen, welche Pins auf jedem Ball niedergeschlagen wurden. Um diese Informationen anzuzeigen, lasse ich sie wie ein Pin-Rack aussehen:

%Vor%

Bilder werden verwendet, um die Pins darzustellen. Also, für die hintere Reihe habe ich 4 Img-Tags, dann ein br-Tag. Funktioniert großartig ... meistens. Das Problem liegt in kleinen Browsern wie IEMobile. In diesem Fall, wenn 10 oder 11 Spalten in einer Tabelle vorhanden sind und in jeder Spalte ein Rack mit Pins vorhanden sein kann, wird IE versuchen, die Spaltengröße so zu verkleinern, dass sie auf den Bildschirm passt, und ich lande mit so etwas :

%Vor%

oder

%Vor%

Die Struktur ist:

%Vor%

Es gibt kein Leerzeichen innerhalb der inneren div. Wenn Sie diese Seite in einem normalen Browser betrachten, sollte die Anzeige korrekt sein. Wenn Sie es in IEMobile betrachten, tut es das nicht.

Irgendwelche Hinweise oder Vorschläge? Vielleicht eine Art von & amp; nbsp; das fügt tatsächlich keinen Platz hinzu?

Folge / Zusammenfassung

Ich habe einige gute Vorschläge erhalten und ausprobiert, darunter:

  • Dynamisch das gesamte Bild auf dem Server generieren. Gute Lösung, aber passt nicht wirklich zu meinem Bedarf (auf GAE gehostet), und ein bisschen mehr Code, als ich gerne schreiben würde. Diese Bilder könnten auch nach der ersten Generation zwischengespeichert werden.
  • Verwenden Sie die CSS-Leerzeichendeklaration. Gute, auf Standards basierende Lösung, scheitert kläglich in der IEMobile-Ansicht.

Was ich am Ende gemacht habe

hängt Kopf und murmelt etwas

Ja, das ist richtig, ein transparentes Gif oben im Div, das auf die Breite passt, die ich brauche. Der Endcode (vereinfacht) sieht folgendermaßen aus:

%Vor%

Und CSS:

%Vor%

ps. Nein, ich werde in meiner endgültigen Lösung nicht den klaren Punkt von jemand anderem verknüpfen:)

    
Chris Marasti-Georg 18.09.2008, 14:41
quelle

18 Antworten

24

Sie könnten die CSS-Option "nowrap" im enthaltenen div versuchen.

%Vor%

Nicht sicher, wie weit das unterstützt wird.

    
Ken Ray 18.09.2008, 14:49
quelle
3

Ich habe mich in der Vergangenheit mit dieser Art von Problem herumgeschlagen, indem ich das gesamte Bild (mit entsprechender Pin-Anordnung) dynamisch als einzelnes Bild erstellt habe. Wenn Sie ASP.NET verwenden, ist dies mit GDI-Aufrufen ziemlich einfach. Sie erstellen das Bild nur dynamisch mit Pin-Platzierung und dienen dann als einzelnes Bild für die Seite. Nimmt alle Ausrichtungsprobleme aus dem Bild (Wortspiel beabsichtigt).

    
Tim Cochran 18.09.2008 14:45
quelle
3

Warum nicht ein Bild für alle möglichen Ergebnisse für die Pins haben? Kein Chaos mit Layouts für Browser ein Bild ist ein Bild

Erzeuge sie im laufenden Betrieb und speichere die erstellten Bilder zur Wiederverwendung.

    
Paul Whelan 18.09.2008 14:43
quelle
3

Was am sinnvollsten ist, ist das Ändern des Bildes, das im laufenden Betrieb angezeigt wird:

%Vor%     
racurry 18.09.2008 14:53
quelle
2

Da Sie ohnehin Bilder verwenden, erstellen Sie doch ein Bild, das das ganze Layout im Handumdrehen darstellt. Sie können etwas wie GD oder ImageMagick , um den Trick zu tun.

    
Ferruccio 18.09.2008 14:46
quelle
2

Fügen Sie einen "nowrap" in Ihr td-Tag ein ...

    
Gersan 18.09.2008 14:55
quelle
1

Da Sie auf maximale Kompatibilität setzen, haben Sie sich überlegt, ein einzelnes Bild zu generieren, das den Rahmen darstellt?

Wenn Sie PHP verwenden, können Sie mithilfe von GD dynamisch Bilder erstellen, die die Frames darstellen, basierend auf derselben Eingabe, mit der Sie den HTML-Code in Ihrer Frage erstellen würden. Der größte Vorteil dabei ist, dass jeder Browser, der ein PNG oder GIF anzeigen könnte, Ihren Frame anzeigen könnte.

    
zorantula 18.09.2008 15:20
quelle
1

Das ist schon eine Weile her, aber ich habe gerade das durchgesehen und diesen Post gefunden. Egal, was ich getan habe, ich konnte keine Bilder hintereinander bekommen. Egal was, sie würden sich wickeln. Ich habe alles versucht.

Dann habe ich herausgefunden, dass es eine Einstellung auf dem Client gibt, wo sie die Ansicht als 1) Einzelne Spalte, 2) Desktop-Ansicht und 3) Fenster anpassen auswählen können. Laut MSDN soll der Standardwert Fenster anpassen. Aber das IE-Handy meiner Frau stand standardmäßig auf Single Column. Also egal was, es würde alles in eine einzige Spalte bringen. Wenn ich zu einer der anderen 2 Optionen wechselte, sah es gut aus.

Nun, Sie können dies mit einem Meta-Tag festlegen:

%Vor%

legt die Seitenbreite auf 320px fest. Ich weiß nicht, wie man es zum Auto bringt, wenn irgendjemand da draußen weiß, bitte posten.

Dies funktioniert NICHT bei Blackberry-Versionen vor Version 4.6 - Sie bleiben bei einer einzelnen Spalte hängen, es sei denn, der Benutzer wechselt manuell zur Desktop-Ansicht. Mit 4,6 oder später sollte das Folgende funktionieren, aber ich habe nicht getestet:

%Vor%     
DanDuran 31.12.2008 08:20
quelle
0

Möglicherweise benötigen Sie unmittelbar nach dem Semikolon in

ein tatsächliches Leerzeichen     
Josh Stodola 18.09.2008 14:44
quelle
0

Versuchen Sie es mit dem <div> -Tag in derselben Zeile wie <td>...</td>

    
Chris Serra 18.09.2008 14:48
quelle
0

Ich habe vielleicht missverstanden, was Sie wollen, aber ich denke, dass Sie tun können, was ich getan habe für Logos auf einer Karte .

Die Kartenhintergrundkachel wird gezeichnet, jedes Bild wird angewiesen, nach links zu schweben und einige interessante Ränder zu erhalten, so dass sie so positioniert sind, wie ich es möchte (siehe Quelle, um zu sehen, wie es gemacht wird).

    
Teifion 18.09.2008 14:48
quelle
0

Verwenden Sie das Wort Schreinerzeichen, U + 2060 (d. h. &#x2060; )

    
Mike Dimmick 18.09.2008 15:06
quelle
0

Vielleicht ist dies nur ein Fall, in dem Sie Tabellen verwenden könnten, um das Layout zu erzwingen. Es ist nicht optimal, und ich weiß, dass Sie keine Tabellen für Dinge verwenden sollten, die nicht tabellarisch sind, aber Sie könnten so etwas tun.

%Vor%     
Kibbee 18.09.2008 15:09
quelle
0

Haben Sie versucht eine Breite für die Spalte zu definieren? Wie <td width="123px"> oder <td style="width:123px"> . Und vielleicht auch für das div?

    
Michel 18.09.2008 15:52
quelle
0
  • Es gibt das nobr html Etikett; nicht sicher, wie gut das unterstützt wird.
  • Sie könnten css overflow: visible und nicht-brechende Leerzeichen zwischen Ihren Elementen (Bildern) verwenden, aber keine anderen Leerzeichen im html für diese Zeilen.
Tyler 18.09.2008 18:46
quelle
0

Für jede mögliche Anordnung jeder Zeile separate Bilder haben.

Das würde nur 30 Bilder (16 + 8 + 4 + 2) erfordern

    
Sam Hasler 19.09.2008 15:28
quelle
0

Sie können img durch span ersetzen und je nach CSS-Klasse ein Hintergrundbild für jeden Bereich verwenden:

%Vor%

(Persönlich denke ich, dass es besser ist, 4 Zeilen mit einem p-Tag anstelle eines einzelnen div mit br zu haben)

In CSS kann man so etwas haben:

%Vor%     
Michel 18.09.2008 16:10
quelle
-1

Wäre es nicht einfacher, wenn Sie es so machen?

%Vor%

Wobei Ihr CSS die Ausrichtung übernehmen würde?

%Vor%     
scunliffe 18.09.2008 14:49
quelle