Foros del Web » Creando para Internet » CSS »

Esto no tiene sentido, es un fallo en css? :S

Estas en el tema de Esto no tiene sentido, es un fallo en css? :S en el foro de CSS en Foros del Web. Tengo este codigo: Código PHP: < div id = "div1" > < INPUT   class= "boton1"  type = submit name = btnG VALUE = "Boton1" > </ div > ...
  #1 (permalink)  
Antiguo 31/10/2017, 04:45
 
Fecha de Ingreso: agosto-2014
Mensajes: 294
Antigüedad: 10 años, 2 meses
Puntos: 4
Exclamación Esto no tiene sentido, es un fallo en css? :S

Tengo este codigo:

Código PHP:
<div id="div1">
<
INPUT  class="boton1" type=submit name=btnG VALUE="Boton1">
</
div>

<
style type="text/css">

#div1 {
background:#000;
width:50px;
height:50px;
}

.
boton1:hover #div1 {
background:#red
width:150px;
height:150px;
}



</
style

Lo que debería de hacer es al poner el mouse sobre el botón, el div negro tendría que hacerse mas grande... lo curioso y lo mas raro es que si el botón esta dentro del div, no funciona... si esta fuera si funciona... eso es normal o hay algo que no tengo en cuenta.. probé de las tres maneras:

.boton1:hover > #div1
.boton1:hover + #div1
.boton1:hover #div1

pero necesito hacerlo con el botón dentro del div.. y no tengo ni idea que hacer.. cualquier ayuda sera de mucho agradecer
  #2 (permalink)  
Antiguo 31/10/2017, 11:39
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 15 años, 2 meses
Puntos: 214
Respuesta: Esto no tiene sentido, es un fallo en css? :S

Pues hasta donde se,
eso funcionaría siempre y cuando el div
fuera 'hijo' del botón, pero en este caso
es al contrario, el botón es hijo del div.

Por esto es que esa regla no funciona.
No se si haya reglas que permitan
trabajar en sentido contrario,
pero mientras alguien nos comenta
yo propongo que uses javascript para
cambiar ese comportamiento.

Lo que se podría hacer es en el over o mouseover del botón,
llamar a una función javascript, y dicha función lo que haría
es buscar el id del div y cambiar el estilo.

Código Javascript:
Ver original
  1. <script>
  2.     function changeDivStyle()
  3.     {
  4.         document.getElementById('div1').style = 'background:red; width:150px; height:150px;';
  5.     }
  6. </script>

Código HTML:
Ver original
  1. <div id='div1'>
  2.     <input class='boton1' type='submit' name='btnG' value='Boton1' onmouseover='changeDivStyle()'>
  3. </div>

Y ya no sería necesaría la regla en el css.
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #3 (permalink)  
Antiguo 31/10/2017, 11:46
 
Fecha de Ingreso: agosto-2014
Mensajes: 294
Antigüedad: 10 años, 2 meses
Puntos: 4
Respuesta: Esto no tiene sentido, es un fallo en css? :S

Muchisimas Gracias :) +1 por tomarte el tiempo a ayudarme
  #4 (permalink)  
Antiguo 31/10/2017, 12:03
Avatar de Rafael
Modegráfico
 
Fecha de Ingreso: marzo-2003
Mensajes: 9.028
Antigüedad: 21 años, 8 meses
Puntos: 1826
Respuesta: Esto no tiene sentido, es un fallo en css? :S

Efectivamente, el código está al revés. Lo que puedes hacer para no meter javascript es poner un div vacío después del boton.

Código HTML:
Ver original
  1. <input id="btnG"><div></div>

Como ya le has asignado un name a tu boton, uso el mismo como id.

Entonces ya nos evitamos class adicionales y podemos ponerle estilo al div

Código CSS:
Ver original
  1. #btnG+div {
  2.   z-index: -1; position: relative;  left:-25px; top:-38px;}
  3.  
  4. #btnG:hover+div {
  5.   transform: scale(1.1, 1.1);
  6.   transition: all .3s ease-in-out;}

Eso es el truco, lo demás es para darle forma. Revísalo funcionando acá: https://jsfiddle.net/8ojub75u/3/
  #5 (permalink)  
Antiguo 31/10/2017, 12:35
 
Fecha de Ingreso: agosto-2014
Mensajes: 294
Antigüedad: 10 años, 2 meses
Puntos: 4
Respuesta: Esto no tiene sentido, es un fallo en css? :S

Me ha servido de muchooo, muchas gracias si prefiero el CSS siempre es mas ligero :)
+1

Cita:
Iniciado por Rafael Ver Mensaje
Efectivamente, el código está al revés. Lo que puedes hacer para no meter javascript es poner un div vacío después del boton.

Código HTML:
Ver original
  1. <input id="btnG"><div></div>

Como ya le has asignado un name a tu boton, uso el mismo como id.

Entonces ya nos evitamos class adicionales y podemos ponerle estilo al div

Código CSS:
Ver original
  1. #btnG+div {
  2.   z-index: -1; position: relative;  left:-25px; top:-38px;}
  3.  
  4. #btnG:hover+div {
  5.   transform: scale(1.1, 1.1);
  6.   transition: all .3s ease-in-out;}

Eso es el truco, lo demás es para darle forma. Revísalo funcionando acá: https://jsfiddle.net/8ojub75u/3/
  #6 (permalink)  
Antiguo 15/11/2017, 15:14
Avatar de g3kdigital  
Fecha de Ingreso: noviembre-2013
Ubicación: En mi apartamento en bogotá
Mensajes: 208
Antigüedad: 11 años
Puntos: 39
Respuesta: Esto no tiene sentido, es un fallo en css? :S

Ya debería estar resuelta esta duda, pero como tengo algo de tiempo, creo que es bueno ampliarla para que entiendas o entiendan los que leen esto:

Los selectores de css, no afectan en la especificación actual CSS3, a los ancestros, sino a: hermanos y anidaciones.

Existen formas de evadir esta regla, pero complica el html y no viene al tema (me refiero a los enlaces y el selector :target o el hack de la relación entre inputs y labels).

Habiendo dicho esto en librosweb y w3school puedes encontrar que los selectores:

~ --> Afecta a cualquier elementos del DOM al mismo nivel de anidación.
+ --> Afecta sólo al elemento siguiente en el mismo nivel de anidación.

Y > afecta sólo a los hijos anidados, pero no a los "nietos".

Ahora el efecto que quieres lograr, estéticamente se puede emular solo con el botón, al menos es similar al ejercicio que propone Rafael:

Código HTML:
Ver original
  1. <button class="boton1" type=submit name=btnG VALUE="Boton1">

Código CSS:
Ver original
  1. button{
  2.   box-shadow: 0 0 0 25px black;
  3.   transition: all ease .5s;
  4. }
  5.  
  6. button:hover{
  7.   box-shadow: 0 0 0 35px black;
  8. }
__________________
Puedes ser el tipo de persona que se amarga por lo inevitable o aceptar el reto de superarse siempre e ir a la par con el progreso.

WEB: G3K.co | codepen.io/g3kdigital
  #7 (permalink)  
Antiguo 15/11/2017, 21:57
Avatar de Rafael
Modegráfico
 
Fecha de Ingreso: marzo-2003
Mensajes: 9.028
Antigüedad: 21 años, 8 meses
Puntos: 1826
Respuesta: Esto no tiene sentido, es un fallo en css? :S

Oh. Interesante a la idea de hacerlo con una sombra.

Etiquetas: class, fallo
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 19:21.