De Non-rupture de la non-espace en HTML

J'ai un bowling application web qui permet assez détaillée, image par image, la saisie d'informations. Une chose qu'il permet le suivi des pins ont été renversés sur chaque balle. Pour afficher cette information, je la faire ressembler à un rack de broches:

o o o o 
o o o 
o o 
o

Les Images sont utilisées pour représenter les pattes. Ainsi, pour la rangée arrière, j'ai 4 balises img, puis une balise br. Fonctionne très bien... la plupart du temps. Le problème est dans les petits navigateurs, tels que IEMobile. Dans ce cas, où il y a 10 ou 11 colonnes dans une table, et il peut y avoir un rack de broches dans chaque colonne, c'est à dire va essayer de réduire la taille de la colonne par rapport à l'écran, et je me retrouve avec quelque chose comme ceci:

o o o 
o 
o o o 
o o 
o

ou

o o 
o o 
o o 
o 
o o 
o

La structure est:

<tr>
    <td>
        <!-- some whitespace -->
        <div class="..."><img .../><img .../><img .../><img .../><br/>...</div>
        <!-- some whitespace -->
    </td>
</tr>

Il n'y a pas d'espace à l'intérieur de l'intérieur de la div. Si vous regardez cette page dans un navigateur, il doit afficher bien. Si vous regardez dans IEMobile, il ne le fait pas.

Tous conseils ou des suggestions? Peut-être une sorte de &nbsp; qui ne fait pas ajouter un espace?


Suivi/Sommaire

J'ai reçu et essayé plusieurs bonnes suggestions, y compris:

  • Générer dynamiquement l'ensemble de l'image sur le serveur. Bonne solution, mais n'est pas vraiment adapté à mon besoin (hébergé sur GAE), et un peu plus de code que je voudrais écrire. Ces images peuvent également être mis en cache après la première génération.
  • Utiliser les CSS white-space déclaration. Bonne base de standards la solution, échoue lamentablement dans le IEMobile vue.

Ce que j'ai fini par faire

pend la tête et marmonne quelque chose

Oui, c'est vrai, un gif transparent en haut de la div, de la taille de la largeur dont j'ai besoin. Le code de fin (simplifié) ressemble à:

<table class="game">
    <tr class="analysis leave">
        <!-- ... -->
        <td> <div class="smallpins"><img class="spacer" src="http://seasrc.th.net/gif/cleardot.gif" /><br/><img src="/img/pinsmall.gif"/><img src="/img/nopinsmall.gif"/><img src="/img/nopinsmall.gif"/><img src="/img/nopinsmall.gif"/><br/><img src="/img/pinsmall.gif"/><img src="/img/pinsmall.gif"/><img src="/img/nopinsmall.gif"/><br/><img src="/img/nopinsmall.gif"/><img src="/img/nopinsmall.gif"/><br/><img src="/img/nopinsmall.gif"/></div> </td>
        <!-- ... -->
    </tr>
</table>

Et CSS:

div.smallpins {
    background: url(/img/lane.gif) repeat;
    text-align: center;
    padding:0;
    white-space: nowrap;
}
div.smallpins img {
    width:1em;
    height:1em;
}
div.smallpins img.spacer {
    width:4.5em;
    height:0px;
}
table.game tr.leave td{
    padding:0;
    margin:0;
}
table.game tr.leave .smallpins {
    min-width:4em;
    white-space: nowrap;
    background: none;
}

p.s. Non, je ne vais pas être le hotlinking de quelqu'un d'autre point très clair dans ma dernière solution 🙂

OriginalL'auteur Chris Marasti-Georg | 2008-09-18