Foros del Web » Creando para Internet » CSS »

Desaparece y aparece.

Estas en el tema de Desaparece y aparece. en el foro de CSS en Foros del Web. A ver, estoy haciendo una web y tengo un <div></div> que contiene dentro otro <div></div> y que éste último quiero que se agrande a medida ...
  #1 (permalink)  
Antiguo 07/05/2013, 12:40
Avatar de iEnrique  
Fecha de Ingreso: abril-2013
Ubicación: España
Mensajes: 346
Antigüedad: 11 años, 8 meses
Puntos: 5
Desaparece y aparece.

A ver, estoy haciendo una web y tengo un <div></div> que contiene dentro otro <div></div> y que éste último quiero que se agrande a medida que se agrande el primero y que quede unos margenes. Os dejo los códigos:

Código HTML:
Ver original
  1. <!DOCTYPE html>
  2.     <title>Habbosfera</title>
  3.     <link rel="stylesheet" type="text/css" href="style.css">
  4. </head>
  5.  
  6.     <header>
  7.         <div id="header"></div>
  8.         <div id="shadow"></div>
  9.     </header>
  10.     <div style="width: 1000px; position: relative; margin-left: auto; margin-right: auto;">
  11.         <div style="width:auto;float:left;">
  12.             <div class="divgeneral"><div class="blue"></div></div>
  13.         </div>
  14.         <div style="width:auto;float:left;margin-left:100px;">
  15.             <div class="divnoticia"><div class="blue"></div><span class="tabletfont">
  16.                 <h2>Markku Ignatius, nuevo CEO de Sulake</h2>
  17.                 holaaa
  18.             </span>
  19.             </div>
  20.         </div>
  21.     </div>
  22. </body>
  23. </html>

Código CSS:
Ver original
  1. body{
  2.     background-image: url(background.png);
  3.     font: normal 13px arial,sans-serif;
  4. }
  5.  
  6. #header {
  7.     background-image: url(header.png);
  8.     height: 218px;
  9.     margin: -8px;
  10.     background-repeat: repeat-x;
  11. }
  12.  
  13. #shadow {
  14.     background: white;
  15.     height: 3px;
  16.     background-repeat: repeat-x;
  17.     margin-top: 9px;
  18.     margin-left: -8px;
  19.     margin-right: -8px;
  20.     margin-bottom: 20px;
  21. }
  22.  
  23. .divgeneral {
  24.     background: white;
  25.     width: 370px;
  26.     height: 400px;
  27.     border-radius: 9px;
  28.     box-shadow: 0px 0px 20px #888888;
  29.     -webkit-box-shadow: 6px 1px 10 #888888;
  30.     -moz-box-shadow: 6px 1px 10 #888888;
  31.     padding: 0px 0px 0px 0px;
  32. }
  33.  
  34. .divnoticia {
  35.     background: white;
  36.     width: 528px;
  37.     height: 500px;
  38.     border-radius: 9px;
  39.     overflow: hidden;
  40.     box-shadow: 0px 0px 20px #888888;
  41.     -webkit-box-shadow: 6px 1px 10 #888888;
  42.     -moz-box-shadow: 6px 1px 10 #888888;
  43. }
  44.  
  45. .blue{
  46.     background-image: url(noise-blue.png);
  47.     border-top-left-radius: 9px;
  48.     border-bottom-left-radius: 9px;
  49.     width: 72px;
  50.     height: 99.5%;
  51.     vertical-align: middle;
  52.     background-repeat: repeat-y;
  53.     float: left;
  54.     margin: 1px 0px 1px 1px;
  55. }
  56.  
  57. .tabletfont{
  58.     margin: 4px 0px 0px 15px;
  59.     float: left;
  60. }

Donde quiero que os fijéis es aquí:

Código HTML:
Ver original
  1. <div style="width:auto;float:left;margin-left:100px;">
  2.             <div class="divnoticia"><div class="blue"></div><span class="tabletfont">
  3.                 <h2>Markku Ignatius, nuevo CEO de Sulake</h2>
  4.                 holaaa
  5.             </span>
  6.             </div>

Y sus correspondientes códigos CSS:

Código CSS:
Ver original
  1. .divnoticia {
  2.     background: white;
  3.     width: 528px;
  4.     height: 500px;
  5.     border-radius: 9px;
  6.     overflow: hidden;
  7.     box-shadow: 0px 0px 20px #888888;
  8.     -webkit-box-shadow: 6px 1px 10 #888888;
  9.     -moz-box-shadow: 6px 1px 10 #888888;
  10. }
  11.  
  12. .blue{
  13.     background-image: url(noise-blue.png);
  14.     border-top-left-radius: 9px;
  15.     border-bottom-left-radius: 9px;
  16.     width: 72px;
  17.     height: 99.5%;
  18.     vertical-align: middle;
  19.     background-repeat: repeat-y;
  20.     float: left;
  21.     margin: 1px 0px 1px 1px;
  22. }
  23.  
  24. .tabletfont{
  25.     margin: 4px 0px 0px 15px;
  26.     float: left;
  27. }

Y aquí viene mi pregunta, ¿qué error hay para que el elemento ".blue" desaparezca si le pongo un "height" en "auto" y aparezca cuando lo pongo en píxeles?¿cómo lo soluciono para que se quede con su "height:99.5%" y el .divnoticia se quede en "height:auto"?
  #2 (permalink)  
Antiguo 07/05/2013, 12:58
Avatar de ArturoGallegos
Moderador
 
Fecha de Ingreso: febrero-2008
Ubicación: Morelia, México
Mensajes: 6.774
Antigüedad: 16 años, 9 meses
Puntos: 1146
Respuesta: Desaparece y aparece.

el problema que cuando especificas un tamaño en porcentajes este % es en función del elemento padre... por lo que si el elemento padre no tiene especificada una medida el hijo es incapaz de crecer, auto o dejarlo en blanco es igual a no especificar nada.

pregunteme yo es necesario que agregues un div vació para colocar el fondo? porque no aplicarlo directamente a su antecesor .divnoticia ?

si quieres mantenerlo así tendrás que recurrir a javascript o jquery para detectar el tamaño de div.divnoticia y aplicarlo a div.blue
cosa que de momento yo veo innecesaria.
  #3 (permalink)  
Antiguo 08/05/2013, 08:35
Avatar de iEnrique  
Fecha de Ingreso: abril-2013
Ubicación: España
Mensajes: 346
Antigüedad: 11 años, 8 meses
Puntos: 5
Respuesta: Desaparece y aparece.

Pero es que ese fondo .blue me gustaría ponerlo de forma que quede con un margen así:

Código CSS:
Ver original
  1. margin: 1px 0px 1px 1px;

Si yo lo pongo en el div .divnoticia como segundo background no puedo ponerle esos margenes, ni tampoco la forma que yo quiero...

Si hay una forma de dar un segundo fondo y darle atributos, sino, ¿me puedes decir como se haría con javascript?

Mira esto: http://imageshack.us/a/img17/96/escrtosfw.png

En esta imágen el .divnoticia es el que lleva la noticia del nuevo CEO y a la izquierda del texto en el mismo div, tiene un background que es el .blue, que es lo que me gustaría hacer, ¿cómo lo podría hacerlo o no hay forma y hay que hacerlo con javascript?
  #4 (permalink)  
Antiguo 08/05/2013, 14:29
Avatar de ArturoGallegos
Moderador
 
Fecha de Ingreso: febrero-2008
Ubicación: Morelia, México
Mensajes: 6.774
Antigüedad: 16 años, 9 meses
Puntos: 1146
Respuesta: Desaparece y aparece.

pensando en hacerte un ejemplo, se me ocurrió que con CSS también se puede solo hay que cambiar algunas cosas... prueba con:

Código CSS:
Ver original
  1. .divnoticia {
  2.     background: white;
  3.     width: 528px;
  4.     border-radius: 9px;
  5.     overflow: hidden;
  6.     box-shadow: 0px 0px 20px #888888;
  7.     -webkit-box-shadow: 6px 1px 10 #888888;
  8.     -moz-box-shadow: 6px 1px 10 #888888;
  9. position:relative;
  10. z-index:1;
  11. }
  12.  
  13. .blue{
  14.     background:#fe0 url(noise-blue.png);
  15.     border-top-left-radius: 9px;
  16.     border-bottom-left-radius: 9px;
  17.     width: 72px;
  18.     height: 99.5%;
  19.     vertical-align: middle;
  20.     background-repeat: repeat-y;
  21.     margin: 1px 0px 1px 1px;
  22. position:absolute;
  23. z-index:-1;
  24. }

claro que este CSS solo tiene cambios meramente ilustrativos ya te toca re-acomodarlo para que encaje todo.

ahora bien con jquery seria algo como esto
http://jsfiddle.net/Ag666/RaVU7/
  #5 (permalink)  
Antiguo 09/05/2013, 04:06
Avatar de iEnrique  
Fecha de Ingreso: abril-2013
Ubicación: España
Mensajes: 346
Antigüedad: 11 años, 8 meses
Puntos: 5
Respuesta: Desaparece y aparece.

A ver, muchas gracias por toda la info, me está sirviendo muchisimo, solo que quisiera comentarte una cosa; tengo puesto el código así (en el header porque es ahí donde creo que debe ir, ¿estoy en lo cierto?):

Código Javascript:
Ver original
  1. <script>
  2.     jQuery(document).ready(function($) {
  3.     $('.divnoticia>div').addClass('newheight');
  4.     $('.divnoticia').each(function(){
  5.         var highestBox = 0;
  6.         $('div.newheight', this).each(function(){
  7.             if($(this).height() > highestBox)
  8.             highestBox = $(this).height();
  9.         });
  10.         $('div.newheight',this).height(highestBox);
  11.     });
  12. });
  13.     </script>

¿Cómo hago para enviarle la info de la medida al .blue? Porque se me queda el en auto el .divnoticia, pero desaparece sin la medida el .blue.

PD: ¿Está bien escrito el código así?

Etiquetas: desaparece, html
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 00:39.