Tengo el siguiente marcado:
<li id="CN2787">
<img class="fav_star" src="images/fav.png">
<span>Text, text and more text</span>
</li>
Lo quiero para que si el texto se ajusta, no entre en la 'columna' de la imagen. Sé que puedo hacerlo con table
(lo que estaba haciendo) pero esto no es viable por esta razón .
He intentado lo siguiente sin éxito:
li span {width: 100px; margin-left: 20px}
.fav_star {width: 20px}
También lo intenté float: right
.
Gracias.
EDITAR: quiero que se vea así:
IMG Text starts here and keeps going... and
wrap starts here.
Así no:
IMG Text starts here and keeps going... and
wrap starts in the space left for the image.
white-space: nowrap;
enli span {...}
, pero me da la impresión de que usted está tratando de hacer otra cosaRespuestas:
El
span
elemento es un elemento en línea, no puede cambiar su ancho en CSS.Puede agregar el siguiente CSS a su tramo para que pueda cambiar su ancho.
display: block;
Otra forma, que suele tener más sentido, es utilizar un
<p>
elemento como padre para su<span>
.<li id="CN2787"> <img class="fav_star" src="images/fav.png"> <p> <span>Text, text and more text</span> </p> </li>
Como
<p>
es unblock
elemento, puede establecer su ancho usando CSS, sin tener que cambiar nada.Pero en ambos casos, dado que ahora tiene un elemento de bloque, necesitará hacer flotar la imagen para que su texto no quede debajo de la imagen.
li p{width: 100px; margin-left: 20px} .fav_star {width: 20px;float:left}
En lugar de PS
float:left
en la imagen, también se puede ponerfloat:right
enli p
pero en ese caso, también tendrá quetext-align:left
volver a alinear el texto correctamente.PSS Si siguió adelante con la primera solución de no agregar un
<p>
elemento, su CSS debería verse así:li span{width: 100px; margin-left: 20px;display:block} .fav_star {width: 20px;float:left}
fuente
span
a unp
elemento. A continuación, sólo estos dos parecían hacer el truco:li p {margin-left: 40px} .fav_star {float: left}
. El ancho de la imagen lo establece la propia imagen, elp
elemento es automáticamente ablock
y dejé el ancho solo. Gracias por esto.display:block
también puede usar a,div
ya que para eso es (o use ap
como también sugiere). No es necesario ajustar el texto dos veces; si usa unp
, puede perder elspan
.div
, en este caso, ap
tiene más sentido. Perder elspan
es un poco trivial para mí y depende de cómo estés diseñando tu contenido.<span>
en un<p>
es brujería directamente de Hogwartz! ¡Funciona maravillosamente!Respuesta muy simple para este problema que parece atrapar a mucha gente:
<img src="url-to-image"> <p>Nullam id dolor id nibh ultricies vehicula ut id elit.</p> img { float: left; } p { overflow: hidden; }
Ver ejemplo: http://jsfiddle.net/vandigroup/upKGe/132/
fuente
span
(el caso del OP). Unadisplay: block
sería necesaria para elspan
. Pero, salvo eso, estoy de acuerdo en que es una solución mucho más elegante. En caso de que alguien se pregunte cuál es la magia detrásoverflow: hidden
, vea mi respuesta a continuación.Para aquellos que quieran información general, aquí hay un breve artículo que explica por qué
overflow: hidden
funciona. Tiene que ver con el llamado contexto de formato de bloque . Esto es parte de la especificación de W3C (es decir, no es un truco) y es básicamente la región ocupada por un elemento con un flujo tipo bloque.Cada vez que se aplica,
overflow: hidden
crea un nuevo contexto de formato de bloque. Pero no es la única propiedad capaz de desencadenar ese comportamiento. Citando una presentación de Fiona Chan de Sydney Web Apps Group:fuente
Si desea
margin-left
que funcione en unspan
elemento, deberá hacerlodisplay: inline-block
odisplay:block
también.fuente
vertical-align: top;
en la imagen con esto también.la configuración
display:flex
del texto funcionó para mí.fuente
overflow:auto
. Estoy seguro de que no funciona exactamente igual en todas las situaciones, pero a mí también me funcionó.Envuelva un div alrededor de la imagen y el lapso y agregue lo siguiente a CSS así:
HTML
<li id="CN2787"> <div><img class="fav_star" src="images/fav.png"></div> <div><span>Text, text and more text</span></div> </li>
CSS
#CN2787 > div { display: inline-block; vertical-align: top; } #CN2787 > div:first-of-type { width: 35%; } #CN2787 > div:last-of-type { width: 65%; }
MENOS
#CN2787 { > div { display: inline-block; vertical-align: top; } > div:first-of-type { width: 35%; } > div:last-of-type { width: 65%; } }
fuente