Foros del Web » Creando para Internet » HTML »

[SOLUCIONADO] No se mantiene el :hover

Estas en el tema de No se mantiene el :hover en el foro de HTML en Foros del Web. Me explico: Tengo un rectangulo id=rojo Debajo otro id=azul. (son svg, pero esta dentro de un html, poniendo el svg en linea) Estos rectangulos estan ...
  #1 (permalink)  
Antiguo 31/03/2016, 17:34
 
Fecha de Ingreso: diciembre-2015
Mensajes: 62
Antigüedad: 8 años, 11 meses
Puntos: 0
No se mantiene el :hover

Me explico:

Tengo un rectangulo id=rojo
Debajo otro id=azul.
(son svg, pero esta dentro de un html, poniendo el svg en linea)

Estos rectangulos estan algo separados.

pongo esto en el css

Código CSS:
Ver original
  1. #azul{
  2. display:none;
  3. }
  4. /* el signo mas + es importante, es lo que hace decir, cuando pase por el rojo que el azul se muestre*/
  5. #rojo:hover + #azul{
  6. display:block;
  7. }
  8.  
  9. #azul:hover{
  10. display:block;
  11. }

cuando paso el raton por el rojo, el azul se muestra, pero cuando voy hacia abajo al salir del rojo el azul desaparece.

Esto no me pasa si el rectangulo azul lo subo mezclandose un poco con el rojo.

Comprendo que al estar junto no me salgo del rojo y puedo tocar el azul, pero en el otro caso al haber un espacio cuado salgo del rojo no me da tiempo a tocar el azul.

Como puedo solucionar esto?

Vi por ahi la propiedad outline, que te crea un espaciovisible, pero que no ocupa espacio, pense que podria ser esa la solucion, pero no vale.

Quizas hay otra instruccion que me cree ese espacio para que no desaparezca el azul si hay un espacio entre el rojo y el azul.

O quizas lo tenga que hacer de otra manera.

alguien me puede instruir? :)
  #2 (permalink)  
Antiguo 31/03/2016, 17:43
 
Fecha de Ingreso: marzo-2016
Ubicación: Colombia
Mensajes: 6
Antigüedad: 8 años, 7 meses
Puntos: 1
Respuesta: No se mantiene el :hover

Creo que es porque la posición del rojo se modifica cuando el azul aparece. Al cambiar de posición el puntero(mouse) no está en el mismo lugar y pierdes el hover... Intenta que el área no se modifique... Mete el azul dentro de un contenedor con posición estática

Zeroed, espero que te sirva!
  #3 (permalink)  
Antiguo 31/03/2016, 17:53
 
Fecha de Ingreso: diciembre-2015
Mensajes: 62
Antigüedad: 8 años, 11 meses
Puntos: 0
Respuesta: No se mantiene el :hover

no no, el rojo no modifica su posicion, es estatico y es un rectangulo grande, solo estoy haciendo la prueva, por eso lo hago grande y solo estas dos opciones.

De echo ya te digo que si el azul, lo mezclo un poco con el rojo esto ya me funciona.

No quiero poner ningun div, para que no pierda la sintaxis, esto en el fondo sera un menu desplegable, en todo caso lo metere entre dos etiquetas <nav>
  #4 (permalink)  
Antiguo 31/03/2016, 17:56
 
Fecha de Ingreso: diciembre-2015
Mensajes: 62
Antigüedad: 8 años, 11 meses
Puntos: 0
Respuesta: No se mantiene el :hover

Código HTML:
Ver original
  1. <svg
  2.   xmlns:dc="http://purl.org/dc/elements/1.1/"
  3.   xmlns:cc="http://creativecommons.org/ns#"
  4.   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  5.   xmlns:svg="http://www.w3.org/2000/svg"
  6.   xmlns="http://www.w3.org/2000/svg"
  7.   version="1.1"
  8.   id="svg2"
  9.   viewBox="0 0 1000 800.00001"
  10.   height="800"
  11.   width="1000">
  12.   <defs
  13.     id="defs4" />
  14.   <metadata
  15.     id="metadata7">
  16.     <rdf:RDF>
  17.       <cc:Work
  18.         rdf:about="">
  19.         <dc:format>image/svg+xml</dc:format>
  20.         <dc:type
  21.           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
  22.         <dc:title></dc:title>
  23.       </cc:Work>
  24.     </rdf:RDF>
  25.   </metadata>
  26.   <g
  27.     transform="translate(0,-252.36216)"
  28.     id="layer1">
  29.     <rect
  30.       y="369.50504"
  31.       x="145.71428"
  32.       height="80"
  33.       width="305.71429"
  34.       id="rojo"
  35.       style="opacity:1;fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;" />
  36.     <rect
  37.       y="492.36215"
  38.       x="262.85715"
  39.       height="88.571426"
  40.       width="302.85715"
  41.       id="azul"
  42.       style="opacity:1;fill:#00ffff;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
  43.   </g>
  44. </svg>

mira te dejo la etiqueta svg, para que lo veas.

bueno aqui dentro hay estilos que me crea el inkscape, lo otro que te puse es la hoja que hize yo aparte, pero no interfiere o eso creo, mas que nada porque en el otro ejemplo funciona bien.
  #5 (permalink)  
Antiguo 31/03/2016, 18:20
 
Fecha de Ingreso: diciembre-2015
Mensajes: 62
Antigüedad: 8 años, 11 meses
Puntos: 0
Respuesta: No se mantiene el :hover

o quizas haya alguna manera de especificar que cuando haga el :hover luego lo mantenga activo, claro que tambien habria que decirle hasta cuando se mantiene activo, para que no se quedara siempre abierto el azul.

Que se pudiera especificar que cuando salga del azul, el :hover ya no tuvera poder y desapareciera el azul.

No se yo escribiendo creo que estoy diciendo alguna locura, quizas css no tenga tanta potencia como para hacer algo asi, o esque yo lo desconozco que es una posiblidad mas creible jejejejejejejejeejejejejejeje.

Estoy pensando que quizas pueda hacer una funcion de if, condicional, creo que lei algo sobre eso, voy a informarme.

lo que si se que vosotros lo hayareis antes que yo jijijijijijijij.
  #6 (permalink)  
Antiguo 31/03/2016, 22:46
 
Fecha de Ingreso: marzo-2016
Ubicación: Colombia
Mensajes: 6
Antigüedad: 8 años, 7 meses
Puntos: 1
De acuerdo Respuesta: No se mantiene el :hover

Hola cómo estás. Luego de estar intentando de una forma u otra, probé JavaScript y no funcionó. Finalmente pude hacerlo con jquery.

Código:
<script type="text/javascript" src="jquery-1.9.1.js"></script> 
         <script type="text/javascript">
          
         $(document).on('ready',function(){
            /* Funciones de carga */
           
           $("#rojo").on("mouseover",function(){
               document.getElementById("azul").style.display ="block";
           });
           $("#rojo").on("mouseout",function(){/* Cuando sale el mouse del cuadro rojo */
               
               setTimeout(function(){/* Pasan 4 segundos y desaparece el azul*/
                        document.getElementById("azul").style.display ="none";
                      }, 4000);
           });
           
                    
        });
         </script>
Código HTML:
<g    transform="translate(0,-252.36216)" id="layer1">
    <rect
       y="369.50504"
       x="145.71428"
       height="80"
       width="305.71429"
       id="rojo"
       style="opacity:1;fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;" />
    <rect
       y="492.36215"
       x="262.85715"
       height="88.571426"
       width="302.85715"
       id="azul"
       style="opacity:1;fill:#00ffff;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
  </g> 


Espero que te sirva!
Que estés bien.

Zeroed!
  #7 (permalink)  
Antiguo 01/04/2016, 05:58
 
Fecha de Ingreso: diciembre-2015
Mensajes: 62
Antigüedad: 8 años, 11 meses
Puntos: 0
Respuesta: No se mantiene el :hover

hola Zeroed agradezco mucho tu ayuda y empeño :)

haber el problema es que quiero hacerlo con css, esto al final sera el menu de navegacion, y no quiero que funcione con javascript, ya que hay usuarios que podrian tener desactivado el javascript.

Por eso tendria que hacer esta parte con css, para que no fuera una propiedad fundamental y cualquiera pudiera moverse por ahi.

No obstante gracias de nuevo. Pienso que se tiene que poder de alguna manera, lo que pasa que no encontramos la manera. Claro al decirle :hover sobre rojo, se activa siempre que este en el rojo una vez sale de el, ya no tiene efecto.

Voy ha hacer una prueva, poniendo los dos cuadros en un grupo, a ver si ataco al grupo y se queda, si lo consigo te comento ;)
  #8 (permalink)  
Antiguo 01/04/2016, 06:29
 
Fecha de Ingreso: diciembre-2015
Mensajes: 62
Antigüedad: 8 años, 11 meses
Puntos: 0
Respuesta: No se mantiene el :hover

He metido los dos rectangulos en un grupo, me imagino que esto es como hacerlo dentro de un div, no me ha funcionado, pero tambien creo que algo estoy haciendo mal.

La idea es decirle, cuando estes dentro del grupo, que se vea el azul, vamos el mismo codigo, pero cambiando el #rojo por el #grupo en el :hover.

El asunto es que cuando paso el puntero, no se muestra el azul, entonces pense que no funcionaba con los grupos, pero si pongo la sentencia display:none; al #grupo, si que lo hace desaparecer, entonces si que reconoce el grupo.

Ahora se me ocurre, la idea de decirle, #grupo{display:none;} que desaparezca el grupo execto el #rojo y cuando estuviera en el rojo, que es del grupo, que el azul apareciera.

Este tipo de sentencia no se como se hace.


Resumiento:
desaparece grupo, pero no el rojo del grupo;
que aparezca el azul cuando este dentro de rojo; (o dentro de grupo)

Quizas asi una vez dentro del grupo, le daria igual ese espacio que hay entre ellos, ya que el grupo es todo un bloque.

Podria ser esa la solucion? y si es la solucion, cual es la instruccion que hay que poner que no se?

Gracias.


Acabo de probar algo:
desaparece grupo, pero no el rojo del grupo; esto lo he echo asi: #grupo1 not #rojo{display:none;}

y funciona, el rojo se ve pero el azul no.

Ahora me falta lo mas importante, decirle que mientras el puntero este dentro del grupo que el azul no desaparezca.

buaaaaaaaaaaaaaa:

esto creo que es una locura y no se puede hacer, con css claro, porque ademas si se pudiera hacer, habria un fallo que me he dado cuenta.

Se supone que encuanto tocara el grupo el azul se veria, esto pasaria tambien cuando yo pasara el puntero, por el medio del hueco de los dos rectangulos, asi que se abriria el supuesto menu, aunque no tocara el rojo.

Siento haber expuesto algo imposible, desde mi ignorancia pense que se podria, pero me estoy dando cuenta que va a ser imposible, que la unica manera seria como has dicho tu Zeroed, tiene que ser con programacion.

Ahora te agradezco mas haberte involucrado en este proyecto imposible, no obstante, no cae en saco roto, ya que he aprendido algunas cosas.
Gracias.

Última edición por lobopk2; 01/04/2016 a las 07:30 Razón: para no crear mas espacio
  #9 (permalink)  
Antiguo 01/04/2016, 09:10
 
Fecha de Ingreso: diciembre-2015
Mensajes: 62
Antigüedad: 8 años, 11 meses
Puntos: 0
Respuesta: No se mantiene el :hover

houston tenemos un problema.

he decidido hacerlo al final, juntandose los cuadrados, porque es la unica manera que sale, pero ahora me ha surgido un problema nuevo que la verdad no entiendo por que pasa.

He añadido otro cuadro #verde, este esta al lado del azul, asi que cuando pase por el azul el verde se tiene que ver, eso lo he conseguido, con las instrucciones, pero el problema que al pasar por el verde el azul desaparece.

Le añadi una instruccion que se supone que tendria que valer, ya que me vale con el #rojo pero no es asi y no entiendo por que.

dejo aqui la etiqueta svg y el css, haber si se sabe que estoy haciendo mal, ya que si no lo soluciono no podre hacer un navegador con css.

Código HTML:
Ver original
  1. <svg
  2.   xmlns:dc="http://purl.org/dc/elements/1.1/"
  3.   xmlns:cc="http://creativecommons.org/ns#"
  4.   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  5.   xmlns:svg="http://www.w3.org/2000/svg"
  6.   xmlns="http://www.w3.org/2000/svg"
  7.   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
  8.   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
  9.   width="1000"
  10.   height="800"
  11.   viewBox="0 0 1000 800.00001"
  12.   id="svg2"
  13.   version="1.1"
  14.   inkscape:version="0.91 r13725"
  15.   sodipodi:docname="1.svg">
  16.   <sodipodi:namedview
  17.     pagecolor="#ffffff"
  18.     bordercolor="#666666"
  19.     borderopacity="1"
  20.     objecttolerance="10"
  21.     gridtolerance="10"
  22.     guidetolerance="10"
  23.     inkscape:pageopacity="0"
  24.     inkscape:pageshadow="2"
  25.     inkscape:window-width="1366"
  26.     inkscape:window-height="697"
  27.     id="namedview11"
  28.     showgrid="false"
  29.     inkscape:zoom="2.36"
  30.     inkscape:cx="468.19891"
  31.     inkscape:cy="559.86365"
  32.     inkscape:window-x="-9"
  33.     inkscape:window-y="-9"
  34.     inkscape:window-maximized="1"
  35.     inkscape:current-layer="layer1" />
  36.   <defs
  37.     id="defs4" />
  38.   <metadata
  39.     id="metadata7">
  40.     <rdf:RDF>
  41.       <cc:Work
  42.         rdf:about="">
  43.         <dc:format>image/svg+xml</dc:format>
  44.         <dc:type
  45.           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
  46.         <dc:title></dc:title>
  47.       </cc:Work>
  48.     </rdf:RDF>
  49.   </metadata>
  50.   <g
  51.     id="layer1"
  52.     transform="translate(0,-252.36216)">
  53.     <rect
  54.       style="opacity:1;fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#00ff00;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
  55.       id="rojo"
  56.       width="305.71429"
  57.       height="80"
  58.       x="144.86682"
  59.       y="368.65759"
  60.       inkscape:label="" />
  61.     <rect
  62.       style="opacity:1;fill:#00ffff;fill-opacity:1;fill-rule:evenodd;stroke:#00ff00;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
  63.       id="azul"
  64.       width="302.85715"
  65.       height="88.571426"
  66.       x="145.81679"
  67.       y="444.48294"
  68.       inkscape:label="" />
  69.     <rect
  70.       y="445.75198"
  71.       x="446.75546"
  72.       height="88.571426"
  73.       width="302.85715"
  74.       id="verde"
  75.       style="opacity:1;fill:#00ff00;fill-opacity:1;fill-rule:evenodd;stroke:#00ff00;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
  76.       inkscape:label="" />
  77.   </g>
  78. </svg>

Código CSS:
Ver original
  1. /*con esto ya tengo los dos ocultos*/
  2. #verde{
  3. display:none;
  4. }
  5.  
  6. #azul{
  7. display:none;
  8. }
  9.  
  10. /*con esto ya cuando pase el raton ya puedo ver los rectangulos*/
  11. /* el signo mas + es importante, es lo que hace decir, cuando pase por el rojo que el azul se muestre*/
  12. #rojo:hover + #azul{
  13. display:block;
  14. }
  15.  
  16. #azul:hover + #verde{
  17. display:block;
  18. }
  19.  
  20. /*con esto mantengo los rectangulos visibles cuando el puntero esta dentro de los rectangulos*/
  21. #azul:hover{
  22. display:block;
  23. }
  24.  
  25. #verde:hover{
  26. display:block;
  27. }
  28.  
  29. /*porque falla esta instruccio?????*/
  30.  
  31. #verde:hover + #azul{
  32. display:block;
  33. }

dios mio que dificil jajaajajajajajajajajajajajajajaajajajaja
  #10 (permalink)  
Antiguo 01/04/2016, 12:03
 
Fecha de Ingreso: diciembre-2015
Mensajes: 62
Antigüedad: 8 años, 11 meses
Puntos: 0
Respuesta: No se mantiene el :hover

Me estoy volviendo loco, estoy probando cosas y llegando a conclusiones que no son como yo creo, dejo aqui el esquema que estoy haciendo en css, para ver si me aclaro.

Código CSS:
Ver original
  1. /*Esta instruccion me habre el verde al pasar por el rojo. */
  2.  
  3. #rojo:hover + #azul + #verde{
  4. display:block;
  5. }
  6.  
  7. /*Esto me da a entender que esta diciendo, cuando pases por el rojo y el azul (porque estan tocandose es como si estuvieran unidos) el verde se tiene que ver.
  8.  
  9.  
  10. ******************Sin enbargo si la cambio por esta otra entonces ya no me habre el verde.*******************
  11. */
  12. #rojo:hover + #verde + #azul{
  13. display:block;
  14. }
  15.  
  16. /*por eso esta instruccion no se habre,porque el rojo y el verde no se tocan. Supongo que entiende, cuando el rojo y el verde se toque que el azul se vea, al no tocarse no hace nada.
  17.  
  18. Aunque haciendo pruevas esto tampoco es cierto porque los he puesto todos juntos y esta instruccion no hace que aparezca el azul.
  19. */

el signo mas este me confunde, porque no hace lo que creo.

Creo que todo esto se deveria hacer como sumandole instrucciones, algo asi como las reflexiones que hago, lo que pasa que no se si eso se puede hacer, sumar funciones ni de que manera.

Porque la vida es tan complicada?
  #11 (permalink)  
Antiguo 01/04/2016, 12:23
 
Fecha de Ingreso: marzo-2016
Ubicación: Colombia
Mensajes: 6
Antigüedad: 8 años, 7 meses
Puntos: 1
De acuerdo Respuesta: No se mantiene el :hover

Intenta usar como contenedor un rectángulo más grande! Coloca la opacidad casi transparente y un tamaño estático. E intenta ver si así funciona... EL hover lo colocas al rectángulo contenedor...
Intenta no usar display: block;
porque esto lo que hace es que te altera el area del contenedor.
Si utilizas opacidades es muy posible que te resulte, debido a que el area se conserva. Intentalo

Si no te resulta más tarde te preparo un ejemplo
Zeroed! Saludos
  #12 (permalink)  
Antiguo 01/04/2016, 14:26
 
Fecha de Ingreso: diciembre-2015
Mensajes: 62
Antigüedad: 8 años, 11 meses
Puntos: 0
Respuesta: No se mantiene el :hover

Una cosa, te dire que estos dibujos que hago, lo hago con el inkscape, un programa vectorial, que luego me convierte el dibujo a un xml, en este xml, le saco la etiqueta svg y la inserto en linea en un html. Asi que todos los estilos que tiene en el svg, los creo el programa.

Hay cosas que no son iguales, como el borde que se llama de otra menera o el relleno que se llama fill y cosas asi. Aunque todo eso no esta interfiriendo en este caso, solo lo digo, porque al ser svg, tenga tantos problemas, quizas con imagenes sea mas facil, pero yo quiero hacerlo con svg.

Dicho esto, intente como tu dices haber otro cuadrado y ponerle poca opacidad, pero estamos en las misma, porque parece que el css, solo puede hacer una cosa, es decir:
si estoy encima de algo hago algo, pero despues no me pidas que haga otra cosa mas.

Cuando uno los dos rectangulos, se crea un grupo, pense que atacando al grupo, seria como si fuera un div, pero tampoco funciona.

Asi que ya no se si por ser svg, hay que hacer las cosas diferentes, o que no entiendo el css, que es verdad que acabo de empezar, con lo cual pueden ser las dos cosas.

No se que voy ha hacer la verdad :(
  #13 (permalink)  
Antiguo 02/04/2016, 17:35
 
Fecha de Ingreso: diciembre-2015
Mensajes: 62
Antigüedad: 8 años, 11 meses
Puntos: 0
Respuesta: No se mantiene el :hover

Estoy simplifacandolo todo al maximo. con el mismo svg, y dejando el rojo y el verde visible, digo pues voy ha hacer que cuando pase por el verde aparezca el azul, ya que este es el unico que he ocultado. dejo aqui el css.

Código CSS:
Ver original
  1. #azul{
  2. display:none;
  3. }
  4. #verde:hover + #azul{
  5. display:block;
  6. }

Muy bien pues nada, esto es imposible, algo tan facil como esto. Sin embargo si quisiera hacer que el rojo hiciera aparecer al azul, si que se puede hacer.

Leyendo me he dado cuenta, que el problema parece ser que el verde esta en el ultimo lugar del codigo html.

Entonces las instrucciones, pueden ser descendientes respecto al codigo html, pero no se puede subir hacia arriba en css respeto al codigo html.

Creo que me explico, pero por si acaso:

en el codigo tengo de arriba a abajo.
rojo
azul
verde

asi que yo puedo decir cuando estes en rojo abre azul. por que rojo esta arriba de azul.

Pero no puedo decir, cuando estes en verde abre azul, porque verde esta debajo de azul.

Me parece increible que esto css no lo pueda hacer. Asi que si alguien sabe algun truco para hacer que el azul se vea estando en el rectangulo verde que me lo diga, porque hasta la fecha para mi ya creo que es imposible usando css.
  #14 (permalink)  
Antiguo 02/04/2016, 20:12
 
Fecha de Ingreso: diciembre-2015
Mensajes: 62
Antigüedad: 8 años, 11 meses
Puntos: 0
Respuesta: No se mantiene el :hover

Bueno al final, he podido hacer una pequeña trampa, pero eso ha incluido añadir algo mas de codigo html.
Como el problema era que necesitaba que el azul, estuviera abajo del todo del codigo html, lo que hize fue duplicar ese azul, justo debajo del verde.

Dejo la etiqueta svg para que se vea.
Código HTML:
Ver original
  1. <svg
  2.   xmlns:dc="http://purl.org/dc/elements/1.1/"
  3.   xmlns:cc="http://creativecommons.org/ns#"
  4.   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  5.   xmlns:svg="http://www.w3.org/2000/svg"
  6.   xmlns="http://www.w3.org/2000/svg"
  7.   width="1000"
  8.   height="800"
  9.   viewBox="0 0 1000 800.00001"
  10.   id="svg2"
  11.   version="1.1">
  12.   <defs
  13.     id="defs4" />
  14.   <metadata
  15.     id="metadata7">
  16.     <rdf:RDF>
  17.       <cc:Work
  18.         rdf:about="">
  19.         <dc:format>image/svg+xml</dc:format>
  20.         <dc:type
  21.           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
  22.         <dc:title></dc:title>
  23.       </cc:Work>
  24.     </rdf:RDF>
  25.   </metadata>
  26.   <g
  27.     id="layer1"
  28.     transform="translate(0,-252.36216)">
  29.     <rect
  30.       style="opacity:1;fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ffff00;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
  31.       id="rojo"
  32.       width="308.91031"
  33.       height="94.010918"
  34.       x="145.54485"
  35.       y="352.90701" />
  36.     <rect
  37.       style="opacity:1;fill:#00ffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffff00;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
  38.       id="azul"
  39.       width="308.6713"
  40.       height="88.988068"
  41.       x="145.82274"
  42.       y="442.86813" />
  43.     <rect
  44.       y="443.27179"
  45.       x="454.59467"
  46.       height="88.609352"
  47.       width="302.92929"
  48.       id="verde"
  49.       style="opacity:1;fill:#00ff00;fill-opacity:1;fill-rule:evenodd;stroke:#ffff00;stroke-width:4.9520607;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
  50.     <rect
  51.       y="442.86813"
  52.       x="145.82274"
  53.       height="88.988068"
  54.       width="308.6713"
  55.       id="azul2"
  56.       style="opacity:1;fill:#26d0c1;fill-opacity:1;fill-rule:evenodd;stroke:#ffff00;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
  57.   </g>
  58. </svg>
ha este segundo azul le puse una id="#azul2" y le puse otro color para que se vea el cambio.

y aqui dejo el codigo css
Código CSS:
Ver original
  1. /*ocultamos los elementos*/
  2. #azul, #azul2, #verde{
  3. display:none;
  4. }
  5.  
  6. /*con esto mantengo los rectangulos visibles cuando el puntero esta dentro de los rectangulos*/
  7. #azul:hover, #verde:hover, #azul2:hover{
  8. display:block;
  9. }
  10.  
  11. /* cuando pasa el raton por un rectangulo enciende el otro*/
  12. #rojo:hover + #azul, #azul:hover + #verde, #verde:hover + #azul2 {
  13. display:block;
  14. }
  15.  
  16. /* con esto cambia el color del verde a un verde mas oscuro*/
  17. #verde:hover{
  18. fill:#29c929 !important;   
  19. }

He puesto cambios de color para que se vea que son diferentes rectangulos.

La idea es que el azul sea una copia del azul2, asi cuando pase al verde no se nota que ha cambiado nada.

Si lo probais vereis que funciona, pero aun le falta algo para ser perfecto y esto si que no se porque pasa.

Si lo pruevas veras que cuando pasas del azul al verde, el azul2 se mantiene visible, pero hay que pasar de uno a otro a una velocidad adecuada, porque si lo pasas a una velocidad lenta, no se porque desaparece el verde, pero se queda el azul2 y ya no aparece el verde a menos que salgas del azul2 para volver ha hacer el ciclo.

Me imagino que leyendo esto deve parecer un trabalenguas.

pero si se prueva se comprende mejor, pasa del azul al verde lento y luego pasalo rapido y vereis lo que digo.

esto a que se deve? y se puede solucionar con algo?

Venga que ya casi lo estamos consiguiendo, echarme una mano con esto, porque si supero esto, ya creo que estaria echo :)
  #15 (permalink)  
Antiguo 02/04/2016, 22:34
 
Fecha de Ingreso: diciembre-2015
Mensajes: 62
Antigüedad: 8 años, 11 meses
Puntos: 0
Respuesta: No se mantiene el :hover

Venga amigos que luego lo voy ha hacer con tres, le añadire uno mas y asi demostraremos que se puede hacer un menu con svg y css.

quizas algo complicado, pero sera con vectores :)

Aunque este lo pondre en otro tema nuevo, para que la gente sepa hacerlo.
  #16 (permalink)  
Antiguo 04/04/2016, 07:32
 
Fecha de Ingreso: diciembre-2015
Mensajes: 62
Antigüedad: 8 años, 11 meses
Puntos: 0
Respuesta: No se mantiene el :hover

Bueno al final aclare el porque me pasaba eso de que segun la velocidad el raton que tuviera, a veces se iban algunos rectangulos.

Esto ha sido porque, la unica manera de que funcionara era no dejando espacio (como mi proposito primero fue dejando espacio y no me valia), asi que no esque no deje espacio apenas, sino que los junte hasta el punto de mezclarlos, no era mucho, pero al parececer esto parece que era el problema.

Hice una prueva, juntandolos al maximo pero sin mezclarlos, claro ayudado de Inkscape, que tiene estas opciones y lo deja perfecto.

Asi este tema queda solucionado y dejo en este foro, la solucion terminada, con el titulo:
Como se hace un menu desplegable con imagenes vectoriales usando solo css

o pinchando en este enlaze:
http://www.forosdelweb.com/f4/como-h...o-css-1150052/

Etiquetas: css
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 04:33.