centrar imagenes
Para no seguir en el post de Hartum.
yo dije: centrado, ya que no existe float center, para centrar solo una imagen o dos imagenes, meterlos en un <p> text-align: center; y si son dos imagenes usar &nbsp;&nbsp;&nbsp;&nbsp; en medio.
Meddle dijo: Helen, para centrar un aimagen en una capa, no la incluyas en un p con text-align: center;
En teoria una imagen ya debe estar en un elemento de bloque como p o div. Par centrarla, lo que tienes que hacer es asignarle a la imagen un comportamiento de bloque, no de linea (que es por defecto). Y en lugar de usar margin-left, por ejemplo. Algo como:
p img {display: block; margin-left: 50px}
Asi, todas las imagenes que estan dentro de un parrafo seran de bloque y con margen izq de 50px.
Rapidamente lo he probado y no mola, habré hecho algo mal.
Yo tengo las paginas en 100%.
Pero me gustaría saber porque no vale meterlo en un p con text-align center, si funciona perfectamente y acabo de validarlo con w3c, pa abrir el debate.
A veces con las prisas uno hace lo más facil.
meddle
porque las imagenes YA ESTAN EN UN P !!! :) (no pueden estar fuera de un p/div etc). Por tanto solo tienes que decirle que las imagenes de los p sean bloques:
p img {display: block; margin-left: 50px}
O bien, si solo quieres que un tipo de imagenes actuen como bloque y se centren, entonces añades una clase a ese tipo de imagen, y haces:
.clase {display: block; margin-left: 50px}
helenp
pero eso no explica porque no puedo usar text-align center, .....
yo puedo tener un texto dentro de un p, y cerrarlo, despues hago otra p con imagenes y las centro con text-align:center.
Acabo de probar y si funciona, pero no lo de margin-left.........está en porcentaje, así que se complica para centrarlo.
xoan
No se si no entendi bien la pregunta, o la respuesta xD...
helenp: Supongo que cuando las metes dentro de un párrafo, lo haras de esta forma:
<code><p>Éste es un texto que va antes de la imagen, y a continuación, tachaaaannnn!!!!</p><!-- cerramos el párrafo -->
<p class="centrado"><img src="./imagenes/imagen.png" alt="texto alternativo" title="titulo de la imagen" /></p>
<p>A que os ha gustado, eh?</p></code>
Si es asi, yo creo que esta bien... ya que cuando meddle dijo <em>porque las imagenes YA ESTAN EN UN P !!!</em>, supongo que se referiria a que lo que no puedes hacer es anidar un párrafo dentro de otro, no?. Sin embargo, haciendolo como dice, te ahorras lineas de codigo (unas cuantas) ya que tu vas escribindo normalmente, y cuando quieras que una imagen quede centrada, simplemente le aplicas la clase, y no tendrias que cerrar el parrafo en el que estas, abrir uno, meter la imagen, cerrarlo y abrir otro para seguir donde lo habiamos dejado... ademas de que semanticamente no es correcto...
meddle
claro, en lugar de tener que cerrar p, abrir p centrado, meter imagen, cerrar p y volver a abrir p, como el ejemplo que comentas, lo mejor seria hacer:
<code>
p img {display: block; margin:auto}
...
<p>Éste es un texto que va antes de la imagen, y a continuación, tachaaaannnn!!!!
<img src="./imagenes/imagen.png" alt="texto alternativo" title="titulo de la imagen" />
A que os ha gustado, eh?</p></code>
o bien
<code>
.centrada {display: block; margin:auto}
...
<p>Éste es un texto que va antes de la imagen, y a continuación, tachaaaannnn!!!!
<img class="centrada" src="./imagenes/imagen.png" alt="texto alternativo" title="titulo de la imagen" />
A que os ha gustado, eh?</p></code>
helenp
Pues gracias a los dos,
pero esto no funciona: p img {display: block; margin:auto}
así que me quedo con mi text-align:center
Esto sí que funciona: p img {text-align: center}
<p>Éste es un texto que va antes de la imagen, y a continuación, tachaaaannnn!!!!
<img src="./imagenes/imagen.png" alt="texto alternativo" title="titulo de la imagen" /
A que os ha gustado, eh?</p>
Aunque para que quede bien hace falta mas p......... pa que cambie de linea, pero menos codigo.
<p>Éste es un texto que va antes de la imagen, y a continuación, tachaaaannnn!!!! </p>
<p><img src="./imagenes/imagen.png" alt="texto alternativo" title="titulo de la imagen" /
<p>A que os ha gustado, eh?</p>
cbp
¿no será porque el margin:auto no marcha en IE?
helenp
cbp
¿no será porque el margin:auto no marcha en IE?
ni idea, pero 99% de mis visitantes usan IE, así que......
cbp
existe un js para arreglar ese problema, lo puedes pillar aquí (link cortesía de meddle), espero que te sirva :)
helenp
cbp
existe un js para arreglar ese problema, lo puedes pillar aquí (link cortesía de meddle), espero que te sirva :)
pero porque no se puede usar text-align:center??????si funciona
cbp
ah, eso ya no lo sé, tendrás que preguntar a los teóricos del foro ;)
yo sólo puedo ofrecerte soluciones, no respuestas :P
helenp
en w3schools, aparece en syntax.............
cbp
no, en serio, no tengo muy claro por qué no puedes usarlo, hace poco que me he metido en la maquetación con css y no controlo mucho, lo que pasa es que he visto que tenías un problema y he pensado que podría serte de utilidad el Margin Fix ese
deberás consultar a los gurús :)
meddle
no digo que no puedas usarlo, solo digo que al hacerlo <em>tienes que</em> usar 3 parrafos en lugar de uno, y <em>semanticamente</em> no es correcto porque rompes el flujo y sentido del parrafo para algo que es <em>solamente presentacional</em>.
helenp
Querría probar a ver si era verdad que solo tendría un parrafo, ya que las imagenes las quiero en una línea nueva.
No se si es mi pc o si el javascript hay que editarlo, no funciona el auto, (lo meti en el .css no en pagina como decian), y no me termina de cargar la pagina, se queda congelado.
De todas formas hay que pensar en los 8kb que mide el java, añadiendolos a mi otra java que mide 30.
xoan
Viva la semantica!!! jeje... esto temas polémicos son los realmente interesantes:
<ul>Por un lado alguien (helenp) que se empeña, con toda la razón del mundo, en usar text-align: center; para alinear imagenes,
Y por otro, tres personajes que intentamos que comprenda que eso no es semánticamente correcto</ul>
En fin, que yo de todas formas no estoy muy de acuerdo en solucionar (forzar) algo para que sea semanticamente correcto, si para ello tengo que usar tegnologías tan <em>poco</em> accesibles como JS. Creo que hay formas (supongo que las habrá, espero que las hayaaa...) para hacerlo todo con CSS, y cuando las encuentre, me las guardare y no las compartireEeEe..! jeje, es coña.
De todas formas, (todavía) no se han llevado preso a nadie por hacer Documentos de HiperTexto que no sean semánticamente correctos... ;)
joseflorido
solo una cosilla, lo que no es semanticamente correcto es el mal uso de los <p> que alguien defendia por aqui, el hecho de centrarlas se hace desde css y creo que no afecta a la semantica del documento porque no hay que cambiar nada en el codigo xhtml para eso, solo afecta la presentacion ;)
(tenia q decir algo en este tema :p)
hartum
no se si me vais a matar, o si es correctamente semantico pero vamos yo cuando quiero alinear una imagen a izq o dcha (me imagino que al centro tb) pongo esto <code><img src="img/fondo.gif" align="right"> </code> y me va sin problema ninguno.
helenp
HARTUM
no se si me vais a matar, o si es correctamente semantico pero vamos yo cuando quiero alinear una imagen a izq o dcha (me imagino que al centro tb) pongo esto <code><img src="img/fondo.gif" align="right"> </code> y me va sin problema ninguno.
Pues, alignar a derecha no tiene problemas, es más se hace incluso mejor con .css, puedes tener un bloque de texto al lado de la imagen, para lo cual en html normal tendría que usar tablas.
Haciendole un estilo floatright en tu hoja .css, y lo aplicas a las imagenes que quieres a la derecha con o sin texto.
meddle
a ver si primero probais las cosas, que os veo mu perrillos, eh? ;)
<code><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Test Template</title>
<style type="text/css">
p {width:200px;background: gray}
p img {display:block; margin:auto;}
</style>
</head>
<body>
<p>Esto es texto y en la siguiente "linea" va una imagen, ahora: <img src="meddle.gif" width="30" height="30" />Pero esto ya deberia ser otra "linea".</p>
</body>
</html></code>
Esto funciona OK en Moz/IE6/OP7, pero asumo que no centra la imagen en IE5.
Si en lugar de margin:auto ponemos text-align:center; solo va en IE6 (y asumo que entonces si que centra en IE5, no lo tengo).
Solucion: poner los dos:
p img {display:block; margin:auto; text-align:center;}
No lo he probado, pero ya me direis si vuestro IE5 se queja o lo hace bien.
helenp
Meddle,
Desde luego que probé,
inserté:
p img {display:block; margin:auto;}
y no funcionaba,
pero ahora al copiar tu codigo en una pagina nueva si funciona (en IE6)
es porque no terminé la imagen con: />
sino con: >
Esa terminación es xhtml.
Comprobado, solo funciona margin:auto si lo tiene en xhtml.
Es que yo aun lo tengo en html, mas adelante voy a cambiar a xhtml, pero querría estudiarlo bien primero.
Pues, llegó la hora de estudiarlo, voy a abrir otro post, ya que uno me aconsejó esperar con xhtml de momento
hartum
yo reconozco que soy mu perro, como para negarlo.........