2010-02-10 3 views
7

J'ai un formulaire avec un message de validation en ligne dans une plage.Retour à la ligne correct dans une balise de plage

<span id="EndTimeErrors"> 
    <label for="EndTime" class="field-validation-error"> 
     Bitte geben Sie eine gültige Uhrzeit ein, zum Beispiel 8:00 oder 14:34 
    </label> 
</span> 

Ugly wrap with span

Malheureusement, le retour à la ligne est vraiment moche. Je pourrais mettre le message de validation dans un div, pour embellir le message. Le résultat est meilleur, mais pas parfait.

<div id="EndTimeErrors"> 
    <label for="EndTime" class="field-validation-error"> 
     Bitte geben Sie eine gültige Uhrzeit ein, zum Beispiel 8:00 oder 14:34 
    </label> 
</div> 

Using a div

Ce que je veux vraiment est quelque chose comme ceci:

Mockup of goal

Quel code CSS utiliseriez-vous pour obtenir le résultat souhaité?

Répondre

11

Essayez

white-space: nowrap; 
+0

Merci! Cela m'a donné le même résultat que l'utilisation d'un div au lieu de la durée. Cela a l'air meilleur que la durée, mais pas parfait. – Sandra

+0

Solution la plus élégante jusqu'à présent. – Chris

+1

Idéal pour que votre contenu vole sur le bord de l'écran! Ne pas oublier d'utiliser 'display: block' – JackalopeZero

0

La raison la plus probable que je peux penser à provoquer la différence entre vos <div> et <span> balises est qu'un élément <div> est considéré comme un élément de bloc, tandis qu'un élément <span> est considéré en ligne.

Avez-vous une sorte d'élément d'emballage pour les éléments flottants, quelque chose qui ressemble à ceci?

<div class="row"> 
    <div style="float: left;"> 
     <span>Endzeit:</span> 
    </div> 
    <div style="float: left;"> 
     <input type="text" /> <span>10.2.2010</span> 
    </div> 
    <div id="EndTimeErrors"> 
     <label for="EndTime" class="field-validation-error"> 
       Bitte geben Sie eine gültige Uhrzeit ein, zum Beispiel 8:00 oder 14:34 
     </label> 
    </div> 
</div> 

Sinon, essayez-le et je pense que cela pourrait fonctionner.

+0

Utiliser plusieurs divs et les faire flotter fonctionnerait, mais je veux éviter trop de boîtes div. J'espérais qu'il y aurait un style CSS qui me permettrait d'utiliser un span. Le texte devrait commencer à la même position que la première ligne et non seulement au début de la deuxième ligne. – Sandra

0

Parfois, tout ce que vous avez besoin est un <br/>

Bitte geben Sie eine gültige Uhrzeit ein, <br/>zum Beispiel 8:00 oder 14:34 
+0

J'ai ajouté un br et dans Firefox 3.57 le début des deux lignes n'est toujours pas aligné. Les contrôles
où la ligne se brise, mais malheureusement, il ne contrôle pas où la nouvelle ligne commence. – Sandra

+0

Je vois. Posibly, mettre display: inline-block sur l'étiquette contenant. – graphicdivine

1

Voici le code que je fini avec:

<span id="EndTimeErrors" style="position: absolute; left: 300px;"> 
    <label for="EndTime" class="field-validation-error"> 
     Bitte geben Sie eine gültige Uhrzeit ein, zum Beispiel 8:00 oder 14:34 
    </label> 
</span> 

je positionné la portée absolue et déplacé 300px vers la gauche.

Cela fonctionne, mais je ne suis pas totalement satisfait de cette solution, car les 300px sont codés en dur. Si la longueur de la substance devant le message de validation changerait, je devrais également changer le 300px.

Questions connexes