Foros del Web » Creando para Internet » CSS »

[SOLUCIONADO] Problema de posición con footer

Estas en el tema de Problema de posición con footer en el foro de CSS en Foros del Web. Tengo el problema de que el footer me aparece siempre y quiero que solo aparezca cuando bajo el scroll hasta abajo del todo, la cuestion ...
  #1 (permalink)  
Antiguo 13/03/2014, 05:56
Avatar de catdi8  
Fecha de Ingreso: agosto-2008
Mensajes: 20
Antigüedad: 16 años, 4 meses
Puntos: 0
Problema de posición con footer

Tengo el problema de que el footer me aparece siempre y quiero que solo aparezca cuando bajo el scroll hasta abajo del todo, la cuestion es que al cambiar el position de fixed a relative me lo hace pero me desmonta los estilos del footer.
El codigo es el siguiente:



Código HTML:
<footer id="masterpanel">
    <ul id="mainpanel">
    <li><a href="#" class="dribble"><small>Dribble</small></a></li>
    <li><a href="#" class="forrst"><small>Forrst</small></a></li>
    <li><a href="#" class="facebook"><small>Facebook</small></a></li>
    <li><a href="#" class="twitter"><small>Twitter</small></a></li>
    <li><a href="#" class="google"><small>Google+</small></a></li>
    <li><a href="#" class="linked"><small>LinkedIn</small></a></li>
    </ul>
</footer> 


Los estilos son:

Código CSS:
Ver original
  1. #masterpanel {
  2.     background-color: #161616;
  3.     background: -moz-linear-gradient(top, rgba(22,22,22,.7) 0%, rgba(51,51,51,.7) 100%);
  4.     background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(22,22,22,.7)), color-stop(100%,rgba(51,51,51,.7)));
  5.     background: -webkit-linear-gradient(top, rgba(22,22,22,.7) 0%,rgba(51,51,51,.7) 100%);
  6.     background: -o-linear-gradient(top, rgba(22,22,22,.7) 0%,rgba(51,51,51,.7) 100%);
  7.     background: linear-gradient(top, rgba(22,22,22,.7) 0%,rgba(51,51,51,.7) 100%);
  8.     filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#B2161616,endColorstr=#B2333333);
  9.     -moz-box-shadow: 0 1px 10px #00c6ff;
  10.     -webkit-box-shadow: 0 1px 10px #00c6ff;
  11.     box-shadow: 0 1px 10px #00c6ff;
  12.     position:  fixed  ;
  13.  
  14.     bottom: 0px;
  15.     left: 0;
  16.     z-index: 999;
  17.     width: 100%;
  18. }
  #2 (permalink)  
Antiguo 13/03/2014, 06:10
Avatar de pzin
Moderata 😈
 
Fecha de Ingreso: julio-2002
Ubicación: Islas Canarias
Mensajes: 10.489
Antigüedad: 22 años, 4 meses
Puntos: 2114
Respuesta: Problema de posicion con footer (poco codigo)

Pues no uses la posición fija, ni tan siquiera la relativa, no te hace falta. Entonces una posición estática es la que tienes que poner, pero tampoco te haría falta especificar porque es la posición por defecto.

¿Cómo te desmonta los estilos? No debería de ocurrir nada extraño si tienes el footer abajo en el documento y sin posición alguna. A menos que los elementos anteriores estén o contengan elementos flotados.
  #3 (permalink)  
Antiguo 13/03/2014, 07:22
Avatar de catdi8  
Fecha de Ingreso: agosto-2008
Mensajes: 20
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: Problema de posicion con footer (poco codigo)

Cita:
Iniciado por pzin Ver Mensaje
Pues no uses la posición fija, ni tan siquiera la relativa, no te hace falta. Entonces una posición estática es la que tienes que poner, pero tampoco te haría falta especificar porque es la posición por defecto.

¿Cómo te desmonta los estilos? No debería de ocurrir nada extraño si tienes el footer abajo en el documento y sin posición alguna. A menos que los elementos anteriores estén o contengan elementos flotados.

Mira te paso el codigo completo porque no hay manera, si le quitas la posicion fija te desmonta los estilos, y la pagina solo tiene footer:
NOTA: He puesto texto con saltos de linea para que se pueda bajar el scroll.

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>CSS3 Tooltip with Animation NO jQuery</title>
<style type="text/css">
Código CSS:
Ver original
  1. body {
  2.     background: #161616 url(pattern_40.gif) top left repeat;
  3.     margin: 0;
  4.     padding: 0;
  5.     font: 12px normal Verdana, Arial, Helvetica, sans-serif;
  6.     height: 100%;
  7. }
  8.  
  9. * {margin: 0; padding: 0; outline: none;}
  10.  
  11. img {border: none;}
  12.  
  13. h1 {
  14.     font: 4em normal Arial, Helvetica, sans-serif;
  15.     padding: 20px;  margin: 0;
  16.     text-align:center;
  17.     color:#bbb;
  18. }
  19.  
  20. h1 a { color:#00c6ff; text-decoration:none; }
  21.  
  22. h1 small{
  23.     font: 0.2em normal  Arial, Helvetica, sans-serif;
  24.     text-transform:uppercase; letter-spacing: 0.2em; line-height: 5em;
  25.     display: block;
  26.     color:#fff;
  27. }
  28.  
  29. #masterpanel {
  30.     background-color:#161616;
  31.     background: -moz-linear-gradient(top, rgba(22,22,22,.7) 0%, rgba(51,51,51,.7) 100%);
  32.     background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(22,22,22,.7)), color-stop(100%,rgba(51,51,51,.7)));
  33.     background: -webkit-linear-gradient(top, rgba(22,22,22,.7) 0%,rgba(51,51,51,.7) 100%);
  34.     background: -o-linear-gradient(top, rgba(22,22,22,.7) 0%,rgba(51,51,51,.7) 100%);
  35.     background: linear-gradient(top, rgba(22,22,22,.7) 0%,rgba(51,51,51,.7) 100%);
  36.     filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#B2161616,endColorstr=#B2333333);
  37.     -moz-box-shadow:0 1px 10px #00c6ff;
  38.     -webkit-box-shadow: 0 1px 10px #00c6ff;
  39.     box-shadow:0 1px 10px #00c6ff;
  40.     position:fixed;
  41.     bottom:0;
  42.     left:0;
  43.     z-index:999;
  44.     width:100%;
  45. }
  46.  
  47. #masterpanel ul {
  48.     padding:0;
  49.     margin:0;
  50.     float:left;
  51.     width:80%;
  52.     margin:0 10%;
  53.     list-style:none;
  54.     font-size:1em;
  55. }
  56. #masterpanel ul li {
  57.     padding:0;
  58.     margin:0;
  59.     float:left;
  60.     position:relative;
  61.     border-right:1px solid #555;
  62. }
  63. #masterpanel ul li:first-child { border-left:1px solid #555; }
  64.  
  65. #masterpanel ul li a {
  66.     margin:5px;
  67.     margin-left:20px;
  68.     margin-right:20px;
  69.     float:left;
  70.     height:26px;
  71.     width:26px;
  72.     text-decoration:none;
  73.     color:#333;
  74.     position:relative;
  75. }
  76.  
  77. a.dribble   {background:url(_0050_Dribbble.png) no-repeat; width:26px;}
  78. a.forrst    { background:url(_0049_Forrst.png) no-repeat; }
  79. a.facebook  { background:url(_0048_Facebook.png) no-repeat;}
  80. a.twitter   { background:url(_0046_Twitter.png) no-repeat;}
  81. a.google    { background:url(google.png) no-repeat;}
  82. a.linked    { background:url(_0018_Linkedin.png) no-repeat;}
  83.  
  84. #masterpanel a small {
  85.     background:#000;
  86.     text-align:center;
  87.     width:70px;
  88.     padding:5px;
  89.     border-left:1px solid #111; border-top:1px solid #111; border-right:1px solid #333; border-bottom:1px solid #333;
  90.     border-radius:3px;
  91.     display:none;
  92.     color:#fff;
  93.     font-size:0.8em;
  94.     text-indent:0;
  95. }
  96.  
  97. #masterpanel a:hover small {
  98.     display:block;
  99.     position:absolute;
  100.     top:0px;
  101.     left:50%;
  102.     margin:-40px;
  103.     z-index:9999;
  104.     -moz-animation:mymove .25s linear;  
  105.     -webkit-animation:mymove .25s linear;
  106. }
  107.  
  108. @-moz-keyframes mymove {
  109.     0%{ -moz-transform:scale(0,0); opacity:0;}
  110.     50%{ -moz-transform:scale(1.2,1.2); opacity:0.3; }
  111.     75%{ -moz-transform:scale(0.9,0.9); opacity:0.7;}
  112.     100%{ -moz-transform:scale(1,1); opacity:1;}
  113. }
  114.  
  115. @-webkit-keyframes mymove {
  116.     0%{ -webkit-transform:scale(0,0); opacity:0;}
  117.     50%{ -webkit-transform:scale(1.2,1.2); opacity:0.3;}
  118.     75%{ -webkit-transform:scale(0.9,0.9); opacity:0.7;}
  119.     100%{ -webkit-transform:scale(1,1); opacity:1;}
  120. }
  121. </style>

</head>
<body>
<h1>xxx<small>Tutorial by Alessio Atzeni | <a href="http://www.alessioatzeni.com/blog/css3-tooltip-with-animation-no-jquery/"><br>sssss<br>sss<br>ssss<br>sss<br>s<br>sssss<br >sss<br>ssss<br>sss<br>s<br>sssss<br>sss<br>ssss<b r>sss<br>s<br>sssss<br>sss<br>ssss<br>sss<br>s<br> sssss<br>sss<br>ssss<br>sss<br>s<br>sssss<br>sss<b r>ssss<br>sss<br>s</a></small></h1>
Código HTML:
Ver original
  1. <footer id="masterpanel">
  2.     <ul id="mainpanel">
  3.     <li><a href="#" class="dribble"><small>Dribble</small></a></li>
  4.     <li><a href="#" class="forrst"><small>Forrst</small></a></li>
  5.     <li><a href="#" class="facebook"><small>Facebook</small></a></li>
  6.     <li><a href="#" class="twitter"><small>Twitter</small></a></li>
  7.     <li><a href="#" class="google"><small>Google+</small></a></li>
  8.     <li><a href="#" class="linked"><small>LinkedIn</small></a></li>
  9.     </ul>
</body>
</html>
  #4 (permalink)  
Antiguo 13/03/2014, 07:23
Avatar de supercoco79  
Fecha de Ingreso: octubre-2012
Ubicación: Islas Canarias
Mensajes: 115
Antigüedad: 12 años, 2 meses
Puntos: 35
Respuesta: Problema de posición con footer

La causa de tu problema es que estás dando un width porcentual tanto en position fixed como en relative. Cuando fijas un elemento mediante fixed y estableces una width relativa porcentual, este cogerá como total width el viewport y no el del elemento padre, que es lo que pasa con relative. Todo lo demás no debería cambiar.

En cualquier caso, como comenta pzin, sin dar ningún tipo de valor a position y haciendo clear: both para restablecer el flujo a elementos float cuando corresponda, todo debería ir sobre ruedas.

Saludos.
__________________
Yesterday was the only easy day. Deportes de aventura

Última edición por supercoco79; 13/03/2014 a las 07:25 Razón: se superponen respuestas
  #5 (permalink)  
Antiguo 13/03/2014, 07:25
Avatar de catdi8  
Fecha de Ingreso: agosto-2008
Mensajes: 20
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: Problema de posición con footer

Esta sacado de este tutorial:

http://www.alessioatzeni.com/blog/css3-tooltip-with-animation-no-jquery/
  #6 (permalink)  
Antiguo 13/03/2014, 07:42
Avatar de supercoco79  
Fecha de Ingreso: octubre-2012
Ubicación: Islas Canarias
Mensajes: 115
Antigüedad: 12 años, 2 meses
Puntos: 35
Respuesta: Problema de posición con footer

Si lo que quieres es que el footer esté siempre en la parte inferior de tu página, entonces NO utilices position fixed.

Si lo que quieres es cambiar de fixed a relative cuando se cumpla una determinada condición utilzando Javascript, entonces debes dar el width del elemento en px y no en %. Una manera de hacerlo es utilizando el método width() de JQuery para obtener el valor en px, de la siguiente manera:

Código:
var width = $("#masterpanel").width(); //obtenemos el valor antes de cambiar el position
$("#masterpanel").css('position', 'relative'); //cambiamos de position
$("#masterpanel").css('width', width + 'px'); //le damos el valor anterior de width
Un saludo.
__________________
Yesterday was the only easy day. Deportes de aventura
  #7 (permalink)  
Antiguo 13/03/2014, 08:29
Avatar de catdi8  
Fecha de Ingreso: agosto-2008
Mensajes: 20
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: Problema de posición con footer

supercoco79 te agradezco mucho tus respuestas pero no veo manera de conseguir que el footer esté siempre en la parte inferior de mi página, al quitar el position desaparecen los estilos, la propiedad clear:both no me hace nada y el width tampoco me soluciona nada quitandole los porcentajes pero seguire probando, gracias de nuevo
  #8 (permalink)  
Antiguo 13/03/2014, 11:15
Avatar de pzin
Moderata 😈
 
Fecha de Ingreso: julio-2002
Ubicación: Islas Canarias
Mensajes: 10.489
Antigüedad: 22 años, 4 meses
Puntos: 2114
Respuesta: Problema de posición con footer

Tal vez lo que busques sea un sticky footer: http://www.cssstickyfooter.com

Etiquetas: background, color, footer, poco, posicion
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 16:58.