Foros del Web » Creando para Internet » CSS »

[SOLUCIONADO] Margin fantasma encima de un div

Estas en el tema de Margin fantasma encima de un div en el foro de CSS en Foros del Web. Hola a todos. Antes de empezar, quiero aclarar que tengo muy claro todas las propiedades de CSS pero no tengo mucha experiencia en el campo ...
  #1 (permalink)  
Antiguo 13/07/2014, 09:24
Avatar de blancoarnau  
Fecha de Ingreso: junio-2013
Mensajes: 119
Antigüedad: 10 años, 10 meses
Puntos: 0
Margin fantasma encima de un div

Hola a todos. Antes de empezar, quiero aclarar que tengo muy claro todas las propiedades de CSS pero no tengo mucha experiencia en el campo y siempre surgen errores en mi página web.

Mi problema consiste en que aparece un "margin fantasma" encima de unos div que he posicionado en un nav. Aquí tenéis una imagen:



El fondo lo he puesto de color azul porque quería ver si estaba bien posicionado, pero veo que no. Aquí tenéis el CSS:

Código CSS:
Ver original
  1. body{
  2.     margin:0 0 0 0;
  3. }
  4. nav{
  5.     height:50px;
  6.     width:100%;
  7.     background-color:#1A1C1C;
  8.     text-align:center;
  9.     color:white;
  10. }
  11. .page{
  12.     display:inline-block;
  13.     height:100%;
  14.     width:20%;
  15.     background-color:blue;
  16. }

Y el HTML por si acaso:

Código HTML:
Ver original
  1. <nav>
  2.     <div class="page">Text</div><div class="page">Text</div><div class="page"><img src="logo.jpg"></div><div class="page">Text</div><div class="page">Text</div>
  3. </nav>


¿Alguien tiene alguna idea? He intentado de eliminar márgenes y paddings pero no pasa absolutamente nada. ¿Es un error de CSS? Si es así, ¿cómo puedo arreglarlo? GRACIAS :)
  #2 (permalink)  
Antiguo 13/07/2014, 10:10
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 11 años, 11 meses
Puntos: 320
Respuesta: Margin fantasma encima de un div

Puedes agregar a .page el atributo float:left; con eso se soluciona.
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios
  #3 (permalink)  
Antiguo 13/07/2014, 10:12
 
Fecha de Ingreso: mayo-2013
Mensajes: 207
Antigüedad: 10 años, 11 meses
Puntos: 31
Respuesta: Margin fantasma encima de un div

Código CSS:
Ver original
  1. display:inline-block;
¿Por qué lo usas teniendo la posiblididad de usar float? El comportamiento de los elementos inline es diferente a los block. La forma chapucera de corregirlo es con el line-height.
  #4 (permalink)  
Antiguo 13/07/2014, 10:21
Avatar de blancoarnau  
Fecha de Ingreso: junio-2013
Mensajes: 119
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: Margin fantasma encima de un div

Porque los problemas que tengo siempre con posicionamento suceden con el float. Porque, aunque haya leído como se comporta, nunca me sale bien. Si tuviese que usar "float:left", ¿cómo tendría que usarlo?
  #5 (permalink)  
Antiguo 13/07/2014, 10:40
 
Fecha de Ingreso: mayo-2013
Mensajes: 207
Antigüedad: 10 años, 11 meses
Puntos: 31
Respuesta: Margin fantasma encima de un div

Usar float es sencillo, que algo no este flotado es mas bien porque no entra y para solucionarlo hay que usar matemáticas básicas, la suma de todas las propiedades que modifiquen el ancho del elemento.

¿Dondé? Si es en este caso, quita la linea de display y sustituyela por la de float
  #6 (permalink)  
Antiguo 13/07/2014, 10:50
Avatar de blancoarnau  
Fecha de Ingreso: junio-2013
Mensajes: 119
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: Margin fantasma encima de un div

Pero después los divs no me quedan centrados, se corren todos hacia la izquierda... ¿Cómo debo corregirlo?
  #7 (permalink)  
Antiguo 13/07/2014, 10:59
 
Fecha de Ingreso: mayo-2013
Mensajes: 207
Antigüedad: 10 años, 11 meses
Puntos: 31
Respuesta: Margin fantasma encima de un div

http://codepen.io/anon/pen/mDjiI
¿Después? No entiendo, si son 5 y tienen 20% de ancho, ocupan todo el nav.
  #8 (permalink)  
Antiguo 13/07/2014, 11:05
Avatar de blancoarnau  
Fecha de Ingreso: junio-2013
Mensajes: 119
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: Margin fantasma encima de un div

¡Ah, sí! Perdón, es que después de escribir el post, he cambiado las propiedades del div dónde hay la imagen por width:10% y ahora no se me centra.
  #9 (permalink)  
Antiguo 13/07/2014, 11:58
 
Fecha de Ingreso: mayo-2013
Mensajes: 207
Antigüedad: 10 años, 11 meses
Puntos: 31
Respuesta: Margin fantasma encima de un div

Cita:
Iniciado por alzacon Ver Mensaje
Usar float es sencillo, que algo no este flotado es mas bien porque no entra y para solucionarlo hay que usar matemáticas básicas, la suma de todas las propiedades que modifiquen el ancho del elemento.

¿Dondé? Si es en este caso, quita la linea de display y sustituyela por la de float
¿4*20+10 =100?

Una cosa es que quieres que el menu de navegación te ocupe toda la pantalla y otra tener uno mas estrecho pero centrado. Piensa bien lo que quieres y explicate lo mejor que puedas, porque no me entero muy bien.
  #10 (permalink)  
Antiguo 13/07/2014, 12:15
Avatar de blancoarnau  
Fecha de Ingreso: junio-2013
Mensajes: 119
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: Margin fantasma encima de un div

A ver, te paso de nuevo el código:

Código CSS:
Ver original
  1. body{
  2.     margin:0 0 0 0;
  3. }
  4. nav{
  5.     height:50px;
  6.     width:100%;
  7.     background-color:#1A1C1C;
  8.     text-align:center;
  9.     color:white;
  10. }
  11. .page{
  12.     display:inline-block;
  13.     height:100%;
  14.     width:20%;
  15.     background-color:blue;
  16. }
  17. .page3{
  18. width:10%;
  19. }

Código HTML:
Ver original
  1. <nav>
  2.     <div class="page">Text</div><div class="page">Text</div><div class="page" id="page3"><img src="logo.jpg"></div><div class="page">Text</div><div class="page">Text</div>
  3. </nav>
  #11 (permalink)  
Antiguo 13/07/2014, 12:42
 
Fecha de Ingreso: julio-2010
Ubicación: A Coruña
Mensajes: 505
Antigüedad: 13 años, 8 meses
Puntos: 60
Respuesta: Margin fantasma encima de un div

Cita:
Iniciado por alzacon Ver Mensaje
Código CSS:
Ver original
  1. display:inline-block;
¿Por qué lo usas teniendo la posiblididad de usar float? El comportamiento de los elementos inline es diferente a los block. La forma chapucera de corregirlo es con el line-height.
¿Que te hizo el "inline-block? xD. De echo "casi" se puede considerar más óptimo usar "inline-block" que floats, ya que para solucionar problemas de flotado de los floats hay que andar metiendo "truquitos" en el html que con inline-block no hacen falta, y tampoco hace falta saber ni matematicas basicas, ya que con un "font-size: 0" en el padre, entre otras posibles soluciones css, queda solucionado el problema de los margenes. Eso si, con flexbox, ni floats, ni "inline-block" ni chorradas.. flexbox!

Por cierto, para solucionar el problema basta con meterle al .page un "vertical-align: top;" y queda listo
__________________
http://zeromm.es/
Diseñador Web | Experto en Responsive Design, CSS3 y Optimización Web.

Última edición por Zeromm; 13/07/2014 a las 12:48
  #12 (permalink)  
Antiguo 13/07/2014, 16:59
 
Fecha de Ingreso: mayo-2013
Mensajes: 207
Antigüedad: 10 años, 11 meses
Puntos: 31
Respuesta: Margin fantasma encima de un div

Cita:
Iniciado por Zeromm Ver Mensaje
¿Que te hizo el "inline-block? xD. De echo "casi" se puede considerar más óptimo usar "inline-block" que floats, ya que para solucionar problemas de flotado de los floats hay que andar metiendo "truquitos" en el html que con inline-block no hacen falta, y tampoco hace falta saber ni matematicas basicas, ya que con un "font-size: 0" en el padre, entre otras posibles soluciones css, queda solucionado el problema de los margenes. Eso si, con flexbox, ni floats, ni "inline-block" ni chorradas.. flexbox!

Por cierto, para solucionar el problema basta con meterle al .page un "vertical-align: top;" y queda listo
Hablas de truquitos para usar float y dices de modificar el font-size en el elemento padre para el inline-block
También lo podría solucionar como dije con la altura de linea.

blancoarnau, ¿que quieres que haga? tu eres quien sabe como quiere tenerlo, si los otros 4 iguales, de 20% y no ocupen todo o ocupar todo, etc etc

Última edición por alzacon; 13/07/2014 a las 17:06
  #13 (permalink)  
Antiguo 14/07/2014, 01:41
 
Fecha de Ingreso: julio-2010
Ubicación: A Coruña
Mensajes: 505
Antigüedad: 13 años, 8 meses
Puntos: 60
Respuesta: Margin fantasma encima de un div

Cita:
Iniciado por alzacon Ver Mensaje
Hablas de truquitos para usar float y dices de modificar el font-size en el elemento padre para el inline-block
También lo podría solucionar como dije con la altura de linea.

blancoarnau, ¿que quieres que haga? tu eres quien sabe como quiere tenerlo, si los otros 4 iguales, de 20% y no ocupen todo o ocupar todo, etc etc
Para solucionar determinados problemas de los floats es cierto que tienes que andar metiendo cosas en el html, ¿verdad? osea, para corregir cosas de css hay que irse al html!!!... bueno, si a ti te parece mejor idea corregir cosas de css mediante el html en vez de mediante el propio css.. pues perfecto. Yo el html lo uso para cuestiones de semantica, no para corregir cosas de css. Y encima con inline-block no hace falta ni saber matematicas... no tengo tan claro como tú que el "float" sea mejor que el "inline-block"
__________________
http://zeromm.es/
Diseñador Web | Experto en Responsive Design, CSS3 y Optimización Web.

Última edición por Zeromm; 14/07/2014 a las 01:56
  #14 (permalink)  
Antiguo 14/07/2014, 03:36
Avatar de pzin
Moderata 😈
 
Fecha de Ingreso: julio-2002
Ubicación: Islas Canarias
Mensajes: 10.488
Antigüedad: 21 años, 8 meses
Puntos: 2114
Respuesta: Margin fantasma encima de un div

Cita:
Iniciado por Zeromm Ver Mensaje
Para solucionar determinados problemas de los floats es cierto que tienes que andar metiendo cosas en el html, ¿verdad? osea, para corregir cosas de css hay que irse al html!!!...
Hay tres formas para «solucionar» eso, dos de ellas no requieren tocar nada de HTML.
  #15 (permalink)  
Antiguo 14/07/2014, 03:57
 
Fecha de Ingreso: julio-2010
Ubicación: A Coruña
Mensajes: 505
Antigüedad: 13 años, 8 meses
Puntos: 60
Respuesta: Margin fantasma encima de un div

Pensé que había dejado claro que es cierto cuando puse "solucionar determinados problemas"... veo que no me expresé lo suficientemente bien, y no lo digo ironicamente... no no, me expresé como el culo .

La solución del "overflow:hidden" y el "height: 1%" son seguramente las menos conocidas y las que los usuarios que comienzan no conocen ni de cerca y por eso se lian con los floats. Con "inline-block" solo en casos concretos, como los de blancoarnau, hay que solucionar algún "problemilla" mediante "vertical-align: top" o "font-size: 0" por ejemplo.

Practicamente todas las propiedades css que tienen algún "problemilla" tienen varias soluciones, pero siempre hay alguna que son mas conocidas y que puede que a la gente que comienza les resulten confusas, como sucede con los floats. Razón por la cual yo aconsejo usar "inline-block"
__________________
http://zeromm.es/
Diseñador Web | Experto en Responsive Design, CSS3 y Optimización Web.

Última edición por Zeromm; 14/07/2014 a las 04:05
  #16 (permalink)  
Antiguo 14/07/2014, 08:46
Avatar de blancoarnau  
Fecha de Ingreso: junio-2013
Mensajes: 119
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: Margin fantasma encima de un div

Buff... Llevaba unas horas sin abrir el ordenador y cuando he visto todo esto me he quedado un poco 'flipao'. En fin, supongo que, como dijo Zeromm, todas propiedades tienen algunos errores.

GRACIAS POR LA AYUDA A TODOS
  #17 (permalink)  
Antiguo 14/07/2014, 08:54
 
Fecha de Ingreso: julio-2010
Ubicación: A Coruña
Mensajes: 505
Antigüedad: 13 años, 8 meses
Puntos: 60
Respuesta: Margin fantasma encima de un div

¿horas sin entrar al foro? uuy yuuyy que mal!! aquí no te puedes despistar, que si pasas cinco minutos sin entrar cuando vuelvas tendrás 40 mensajes mas!!
__________________
http://zeromm.es/
Diseñador Web | Experto en Responsive Design, CSS3 y Optimización Web.

Etiquetas: background, color, encima, fantasma, html, margin, página, width
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:07.