2012-05-06 29 views
33

¿Cómo puedo forzar una casilla de verificación y el siguiente texto para que aparezca en la misma línea? En el siguiente HTML, solo me gustaría que la línea se rompa entre la etiqueta y la entrada, no entre la entrada y la etiqueta.Cómo forzar una casilla de verificación y texto en la misma línea?

<p><fieldset> 
    <input type="checkbox" id="a"> 
    <label for="a">a</label> 
    <input type="checkbox" id="b"> 
    <!-- depending on width, a linebreak can occur here. --> 
    <label for="b">b</label> 
    <input type="checkbox" id="c"> 
    <label for="c">c</label> 
</fieldset></p> 

Para aclarar: si el conjunto de campos/p no es lo suficientemente amplia para todos los elementos, en lugar de:

[] a [] b [] 
c [] d [] e 

Quiero:

[] a [] b 
[] c [] d 
[] e 
+0

¿por qué no pones div entre ellos? –

+0

No lo sé, ¿puedes aclarar a qué te refieres? – Andreas

+0

Si escribí un párrafo, p. '

Hola, mi nombre es Andreas

', no pondría linebreaks allí manualmente, sino que espero que el navegador lo haga. Aún así, no me gustaría que el navegador inserte un salto de línea en el medio de 'Andreas', que es lo que trato de evitar aquí. Es decir, no sé el número de pares de etiquetas de casillas de verificación o dónde se ajustarán los saltos de línea de antemano. – Andreas

Respuesta

28

No se romperá si envuelves cada elemento en un div. Mira mi violín con el siguiente enlace. Hice el ancho del fieldset 125px e hice que cada elemento tuviera 50px de ancho. Verá que la etiqueta y la casilla de verificación permanecen una al lado de la otra en una nueva línea y no se rompen.

<fieldset> 
<div class="item"> 
    <input type="checkbox" id="a"> 
    <label for="a">a</label> 
</div> 
<div class="item"> 
    <input type="checkbox" id="b"> 
<!-- depending on width, a linebreak can occur here. --> 
    <label for="b">bgf bh fhg fdg hg dg gfh dfgh</label> 
</div> 
<div class="item"> 
    <input type="checkbox" id="c"> 
    <label for="c">c</label> 
</div> 
</fieldset> 

http://jsfiddle.net/t5dwp7pg/1/

+2

¡Intenta hacer que tu etiqueta sea más grande que una sola letra! NO funcionará para etiquetas más largas. – joedotnot

23

probar este CSS:

label { 
    display: inline-block; 
} 
+2

Aún puede aparecer un salto de línea entre la casilla de verificación y la etiqueta. Editaré mi pregunta para aclarar. – Andreas

+7

envuelve cada casilla de verificación y etiqueta en un div que se configura con una pantalla: bloque en línea –

+0

IE7 no admite el bloque en línea –

0

put a div wrapper with WIDTH : 

    <p><fieldset style="width:60px;"> 
    <div style="border:solid 1px red;width:80px;"> 
    <input type="checkbox" id="a"> 
    <label for="a">a</label> 
    <input type="checkbox" id="b"> 

    <label for="b">b</label> 
    </div> 

    <input type="checkbox" id="c"> 
    <label for="c">c</label> 
</fieldset></p> 

un nombre podría ser "John Winston Ono Lennon", que es muy largo ... así que ¿qué quieres que haga? (nunca sabrás la longitud) ... puedes hacer una función que se ajuste a x caracteres como: "john winston o ..."

+0

Esto supone que conocía el tamaño del p/fieldset y la longitud de las etiquetas de antemano. – Andreas

+0

@Andreas permite hablar en términos extremos, un nombre podría ser "john winston ono lennon", que es muy largo ... ¿qué quieres hacer? podría hacer una función que se ajuste a x caracteres como: "john winston o ...." –

+0

Un único par de etiquetas de casillas de verificación siempre encajará. Lo resolví con el comentario de Brent ahora. – Andreas

13

probar esto. La siguiente considera casilla de verificación y la etiqueta como un elemento único:

<style> 
    .item {white-space: nowrap;display:inline } 
</style> 
<fieldset> 
<div class="item"> 
    <input type="checkbox" id="a"> 
    <label for="a">aaaaaaaaaaaa aaaa a a a a a a aaaaaaaaaaaaa</label> 
</div> 
<div class="item"> 
    <input type="checkbox" id="b"> 
<!-- depending on width, a linebreak NEVER occurs here. --> 
    <label for="b">bbbbbbbbbbbb bbbbbbbbbbbbbbbbb b b b b bb</label> 
</div> 
<div class="item"> 
    <input type="checkbox" id="c"> 
    <label for="c">ccccc c c c c ccccccccccccccc cccc</label> 
</div> 
</fieldset> 
7

Otra manera de hacerlo exclusivamente con CSS:

input[type='checkbox'] { 
    float: left; 
    width: 20px; 
} 
input[type='checkbox'] + label { 
    display: block; 
    width: 30px; 
} 

Tenga en cuenta que esto obliga a cada casilla y su etiqueta en una línea separada, en vez que solo hacerlo solo cuando hay desbordamiento.

+0

gracias por esto !! – Fattie

Cuestiones relacionadas