css: alinea el texto debajo de la imagen en un lapso
Frecuentes
Visto 4,914 veces
6
Quiero mostrar el texto debajo de la imagen en estos lapsos y los lapsos no saltan a la nueva línea:
<span class="smileycode" id=":sm:">
<img src="images/smiley/sm.png">:sm:
</span>
<span class="smileycode" id=":sq:">
<img src="images/smiley/sq.png">:sq:
</span>
alguna sugerencia?
10 Respuestas
6
Respondido el 11 de Septiembre de 13 a las 14:09
3
Agrega esto a tu clase.
.smileycode
{
display:block;
}
Esto convertirá su tramo en elementos de nivel de bloque y los hará saltar a la siguiente línea.
Espero que esto sea lo que estás buscando.
EDITAR
Si desea asegurarse de que el texto aparece como un título justo debajo de la imagen, puede utilizar display:table-caption;
para lograrlo.
A continuación se muestra un ejemplo de trabajo.
El CSS:
.smileycode{display:table-caption;}
Espero que esto ayude.
Respondido el 11 de Septiembre de 13 a las 14:09
Natán tiene razón. Alternativamente, podría usar un elemento de nivel de bloque en lugar de un lapso, como un div
- jono
display:table-caption fue muy bueno - Exim
También puede agregar un float:left
a .smileycode
para ponerlo uno al lado del otro. Por ejemplo, .smileycode{display:table-caption; float:left;}
- @exim - nitesh
2
Puedes probar este código. Como puedes ver he hecho una tabla sin bordes que muestra las imágenes como quieras.
<table id="yourid" border="0">
<tr>
<td width="50%">
<span class="smileycode" id=":sm:"><img src="http://i.imgur.com/ngS6rsb.png"></span>
</td>
<td width="50%"><span class="smileycode" id=":sq:"><img src="http://i.imgur.com/ngS6rsb.png"></span>
</td>
</tr>
<tr>
<td width="50%">
:sm:
</td>
<td width="50%">:sq:
</td>
</tr>
Ejemplo de trabajo: violín
Respondido el 11 de Septiembre de 13 a las 14:09
1
Sólo otra forma en que tú podría solucionar este problema... Aprovechando :after
y atributos personalizados.
HTML con atributos personalizados
<span class="smileycode" id=":sm:" data-text=":sm:">
<img src="http://placehold.it/50x50">
</span>
<span class="smileycode" id=":sq:" data-text=":sq:">
<img src="http://placehold.it/50x50">
<span class="smileycode" id=":sm:" data-text=":sm:">
<img src="http://placehold.it/50x50">
</span>
<span class="smileycode" id=":sq:" data-text=":sq:">
<img src="http://placehold.it/50x50">
<span class="smileycode" id=":sm:" data-text=":sm:">
<img src="http://placehold.it/50x50">
</span>
<span class="smileycode" id=":sq:" data-text=":sq:">
<img src="http://placehold.it/50x50">
</span>
CSS con pseudoelementos
.smileycode {
position: relative;
}
.smileycode:after {
position: absolute;
content: attr(data-text);
top: 1em;
left: 0;
z-index: 1;
}
Respondido el 11 de Septiembre de 13 a las 14:09
0
<div class="smileycode" id=":sm:"><img src="http://www.zeropages.com/smileys/sm_2828a.gif">:sm:</div> <div class="smileycode" id=":sq:"><img src="http://www.zeropages.com/smileys/sm_2828a.gif">:sq:</div>
.smileycode{
width:30px;
text-align:center;
float:left;
}
Respondido el 11 de Septiembre de 13 a las 14:09
0
Veo algunos table
enfoque basado aquí. Como soy más una persona sin mesa, ofrezco una solución de apilamiento a la izquierda usando float: left
.
Tendrá que envolver su tramo existente con un tramo más que lo haga flotar hacia la izquierda.
<span class="pull-left"><span class="smileycode" id=":sm:">
<img src="http://placehold.it/50x50/dddddd/ffffff">:sm:
</span></span>
<span class="pull-left"><span class="smileycode" id=":sq:">
<img src="http://placehold.it/50x50/dddddd/ffffff">:sq:
</span></span>
CSS:
span.smileycode img {
display: block;
}
.pull-left {
float: left;
margin-right: 5px;
}
Violín de trabajo: http://jsfiddle.net/bND5Z/
Respondido el 11 de Septiembre de 13 a las 14:09
0
Esto no es tan difícil. Uso efectivo de <pre>
/ <br>
y entonces display style
hará el truco para usted. Vea el código a continuación:
HTML:
<body>
<span class="smileycode" style="display:inline-table" id=":sm:">
<img src="images/smiley/sm.png"><pre>:sm:</pre>
</span>
<span class="smileycode" style="display:inline-table" id=":sq:">
<img src="images/smiley/sq.png"><pre>:sq:</pre>
</span>
</body>
Vea la solución de trabajo aquí: http://jsbin.com/AHiYuPO/2/edit . Recuerda run with js
.
Respondido el 11 de Septiembre de 13 a las 14:09
no quiero usar tablas - Exim
No tienes que usar tablas si no quieres. Vea mi respuesta actualizada arriba @exim - El caballero oscuro
0
Basado en un imagen usted me proporcionó, aquí hay una solución completa.
Margen:
<div class="smileycode" id=":sm:">
<span>:sm:</span>
<img src="http://www.zeropages.com/smileys/sm_2828a.gif" />
</div>
<div class="smileycode" id=":sq:">
<span>:sq:</span>
<img src="http://www.zeropages.com/smileys/sm_2828a.gif" />
</div>
CSS:
.smileycode { clear:both; padding:5px; }
.smileycode span { float:left; padding:3px 0px 0 0; width:30px; }
.smileycode img { float:left; }
Respondido el 11 de Septiembre de 13 a las 14:09
0
.smileycode {
float: left;
margin-right: 10px;
}
.smileycode img {
display: block;
}
Respondido el 11 de Septiembre de 13 a las 14:09
0
Como dijo @Roko, pero agregue un hack css para compatibilidad con IE antiguos:
.smileycode {
display:inline-block;
*display: inline;
}
También agregaría un
text-align:center;
line-height:1.2em;
a tu lapso. ¡Pero es solo un detalle de diseño :) como otros pueden haber agregado en sus ejemplos!
También puedes limpiar todos tus
de tu código HTML (si puedes)
Respondido el 11 de Septiembre de 13 a las 14:09
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas html css or haz tu propia pregunta.
¿Qué texto estás tratando de agregar a continuación? ¿Es esa la parte :sm:, :sq:? - brbcoding