Foros del Web » Creando para Internet » CSS »

De donde sale este padding ?

Estas en el tema de De donde sale este padding ? en el foro de CSS en Foros del Web. Hola, Estoy enpezando aprender css y estaba intentando hacer algo para practicar pero me da un problema, miren la imagen: No tengo ni idea porque, ...
  #1 (permalink)  
Antiguo 15/12/2011, 15:00
 
Fecha de Ingreso: noviembre-2009
Mensajes: 27
Antigüedad: 14 años, 5 meses
Puntos: 3
De donde sale este padding ?

Hola,

Estoy enpezando aprender css y estaba intentando hacer algo para practicar pero me da un problema, miren la imagen:



No tengo ni idea porque, a mi elemento de la lista se le esta agreagano ese padding en la parte de abajo, por mas que intente no pude quitarselo y no se que es lo que lo esta causando. Aqui esta el codigo por si alguien quiere revisarlo y ver si lo puede quitarme y decirme porque es que aparece:

Código:
<!DOCTYPE HTML>
<html lang="en">
<head>
	<meta charset="utf-8" />
    
    <title></title>
    
    <link rel="stylesheet" href="reset.css" />
    <link rel="stylesheet" href="main.css" />
</head>
<body>
	<div id="wrap">
    	<ol class="specials">
        	<li>
                    <a href="#">
                        <img src="ropes.jpg" alt="ropes" />
                        <span>
                            <strong>Boathouse Bold</strong>
                            <em>$12.50 / 1b</em>
                        </span>
                    </a>
            </li>
        </ol>
    </div>
</body>
</html>
Código:
ol.specials img {
	width: 100%;
}

ol.specials a {
	font-family: Georgia, "Times New Roman", Times, serif;
	font-size: 12px;
	text-decoration: none;
	color: #ccc;
}

ol.specials li {
	background: red;
	width: 150px;
	border: 15px solid #e2e1d4;
	border-radius: 8px;
	position: relative;
}

ol.specials span {
	background: rgba(0,0,0,.5);
	width: 100%;
	display: block;
	position: absolute;
	bottom: 0;
	left: 0;
}


ol.specials span strong {
	color: #fff;
	display: block;
	font-weight: normal;
	padding: 10px 10px 0 10px;
}

ol.specials span em {
	display: block;
	padding: 0 10px 10px 10px;
	color: #e3c887;
}
Por cierto si se preguntan porque use una lista, es porque se supone que son varios elementos, varios especiales o como los quieran llamar, pero yo solo he usado uno porque es para practicar. Otra cosa, estoy agregando el borde al elemento li, pero estara bien asi o sera mejor insertar el contenido del elemento li a un div y ahi agrgarle el borde al div, etc ?

Gracias

Última edición por Vunarok; 15/12/2011 a las 15:06
  #2 (permalink)  
Antiguo 15/12/2011, 23:13
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: De donde sale este padding ?

Ese que tenés es un problema bastante raro, hasta de explicar, nunca encontré una documentación muy precisa al respecto.
Te voy a ejemplificar el problema y la solución (al meno una de las posibles), pero en tu caso de tu código en particular, la solución tendrás que buscarla vos, dado de que tu código involucra otros elementos y es bastante más complejo.

para quelo visualices mejor voy a limitarme a 2 etiquetas, div e img, y como un comentario adicional, pero no menos importante, te aclaro que si usas un doctype xhtm transitional, el inconveniente sencillamente no se produce.

El tema es asi, cuando ponés una imagen dentor de un div, y al div le das ó un color de fondo, o un borde, vas a notar que aparece un pequeño padding en la parte inferior del div. Sin importar cuantos resets le apliques, el padding sigue apareciendo

ejemplo 1 - no se produce el problema

Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <title>titulo</title>
  5. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  6. <style type="text/css">
  7. *{
  8. padding: 0;
  9. margin: 0;
  10. border: none;
  11. }
  12. div {
  13. padding: 0;
  14. border: solid 1px #000;
  15. }
  16. img.bl {
  17. display: block;
  18. }
  19. </head>
  20. <p>El problema, aqui no se produce prque usamos xtml transitional</p>
  21. <div>
  22. <img src="1.jpg" alt="ropes" />
  23. </div>
  24. <p>la solución dándole display: block; a la imagen</p>
  25. <div>
  26. <img src="1.jpg" alt="ropes" class="bl" />
  27. </div>
  28.  
  29. </body>
  30. </html>

Ejemplo 2, con strict, se produce

Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  2.    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <title>titulo</title>
  5. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  6. <style type="text/css">
  7. *{
  8. padding: 0;
  9. margin: 0;
  10. border: none;
  11. }
  12. div {
  13. padding: 0;
  14. border: solid 1px #000;
  15. }
  16. img.bl {
  17. display: block;
  18. }
  19. </head>
  20. <p>El problema</p>
  21. <div>
  22. <img src="1.jpg" alt="ropes" />
  23. </div>
  24. <p>la solución dándole display: block; a la imagen</p>
  25. <div>
  26. <img src="1.jpg" alt="ropes" class="bl" />
  27. </div>
  28.  
  29. </body>
  30. </html>

con html5, también se produce

Código HTML:
Ver original
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <meta charset="utf-8" />
  4. <title>titulo</title>
  5. <style type="text/css">
  6. *{
  7. padding: 0;
  8. margin: 0;
  9. border: none;
  10. }
  11. div {
  12. padding: 0;
  13. border: solid 1px #000;
  14. }
  15. img.bl {
  16. display: block;
  17. }
  18. </head>
  19. <p>El problema, tembién en html5</p>
  20. <div>
  21. <img src="1.jpg" alt="ropes" />
  22. </div>
  23. <p>la solución dándole display: block; a la imagen</p>
  24. <div>
  25. <img src="1.jpg" alt="ropes" class="bl" />
  26. </div>
  27.  
  28. </body>
  29. </html>

para que no queden dudas atodas les hice un
Código CSS:
Ver original
  1. *{
  2. padding: 0;
  3. margin: 0;
  4. border: none;
  5. }


Ahora, en tu caso, pensé que se le podria dar un Doctype Transitional a tu documento, pero aún as el problema aparece,
Como ves, es bastante extraño e imprevisible. Y se dá en Firefox, IE, Chrome, Opera, hasta dónde pude probar

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #3 (permalink)  
Antiguo 15/12/2011, 23:58
Avatar de alexk
Colaborador
 
Fecha de Ingreso: julio-2009
Ubicación: De vuelta al trono
Mensajes: 1.698
Antigüedad: 14 años, 9 meses
Puntos: 137
Respuesta: De donde sale este padding ?

No es ningun padding, recordemos que <img> es un elemento en linea, por lo tanto hereda el "line-height", una "solución" al problema seria lo siguiente:
Código:
ol.specials li {
	background: red;
	width: 150px;
	border: 15px solid #e2e1d4;
	border-radius: 8px;
	position: relative;
	line-height:0;	/*quitamos el line-height*/
}
ol.specials span {
	background: rgba(0,0,0,.5);
	width: 100%;
	display: block;
	position: absolute;
	bottom: 0;
	left: 0;
	line-height:normal;/*aplicamos line-height al texto*/
}
Aun que claro, yo prefiero usar medidas fijas en esos casos, tanto width, como height.
__________________
Toroflix - movies.
  #4 (permalink)  
Antiguo 16/12/2011, 01:09
 
Fecha de Ingreso: noviembre-2009
Mensajes: 27
Antigüedad: 14 años, 5 meses
Puntos: 3
Respuesta: De donde sale este padding ?

@alexk se soluciono al cambiar el line-height :)

@emprear tienes razon si uso el DOCTYPE de xhtml y elimino el estilo de la lista problema arreglado pero cuando vuelvo al DOCTYPE de html5 me vuelve el problema.

Alguien tiene idea de porque con el DOCTYPE de html5 sucede esto ?

Etiquetas: html, padding
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:36.