Foros del Web » Creando para Internet » CSS »

Elemento no interactivo

Estas en el tema de Elemento no interactivo en el foro de CSS en Foros del Web. Buenas, tengo un logo con un fondo transparente ubicado en la cabecera de mi página, junto con el menú. Ambos tiene position: fixed, así que ...
  #1 (permalink)  
Antiguo 31/01/2012, 04:29
danihxh
Invitado
 
Mensajes: n/a
Puntos:
Elemento no interactivo

Buenas, tengo un logo con un fondo transparente ubicado en la cabecera de mi página, junto con el menú. Ambos tiene position: fixed, así que no hacen scroll con el resto de la página.

Mi problema es que el logo, a pesar de dejar ver contenido a través de sus partes transparentes, no deja clickar en él, y me gustaría saber si hay alguna manera de que eso sea posible.

Sobretodo, no digo que se pueda clickar sólo a través de sus partes transparentes, me serviría si se pudiese clickar a través del div entero que contiene el logo como background.

Gracias!
  #2 (permalink)  
Antiguo 31/01/2012, 08:45
Colaborador
 
Fecha de Ingreso: junio-2007
Mensajes: 5.798
Antigüedad: 16 años, 10 meses
Puntos: 539
Respuesta: Elemento no interactivo

Enlace al problema o códigos.

Si no, a esperar por el adivino.
__________________
Por una web con mucho estilo
+++ CUENTA ABANDONADA. ¿la quieres? +++
  #3 (permalink)  
Antiguo 01/02/2012, 05:17
danihxh
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Elemento no interactivo

A ver, lo que quiero conseguir es que se pueda clickar a través de la zona coloreada con rojo y naranja, que realmente no va pintada de ningún color, sino que es totalmente transparente.



El código no tiene mucho, el de los logos (son dos, uno para el logo en sí y otro para su sombra):

Código:
#logoImage
{
	min-width: 90px;
	position: absolute;
	left: 0px;
	background: url(img/logo.png);
	background-repeat: no-repeat;
	background-size: contain;
	height: 200px;
	width: 10%;
	top: 10px;
	z-index:721;
	image-rendering:optimizeQuality;
}

#logoShadow
{
	min-width: 90px;
	position: absolute;
	left: 0px;
	background: url(img/sombra.png);
	background-repeat: no-repeat;
	background-size: contain;
	height: 220px;
	width: 10%;
	top: 10px;
	z-index:720;
	opacity: .7;
	image-rendering:optimizeQuality;
}
Y luego está lo siguiente para fijar el menú arriba:

Código:
header
{
	-webkit-user-select: none;
	-moz-user-select: none;
	user-select: none;
	height: 53px;
	width:100%;
	top: 0;
	left:0;
	position:fixed;
}
  #4 (permalink)  
Antiguo 04/02/2012, 20:19
(Desactivado)
 
Fecha de Ingreso: noviembre-2002
Ubicación: Ciudad Autónoma de Buenos Aires
Mensajes: 2.367
Antigüedad: 21 años, 5 meses
Puntos: 317
Respuesta: Elemento no interactivo

Lamento decir que con el código la consulta está bastante más clara. Ya no hace falta adivinar.

Te cuento una pequeña anécdota, danihxh.

Hace muuuchos años, en otro Foro de desarrollo web que seguramente ya no existe, había un grupo de gente muy capaz y con muchas ganas de aprender y enseñar lo que sabían.
Pero, como en todo Foro, también estaban los molestos que se dedicaban a postear en medio de un tema interesante sus comentarios descolgados, mordaces, que no aportaban nada sino que empiojaban el tema.

Recuerdo que yo me registré ahí cuando empezaba a aprender algo sobre páginas web, y en algún momento leí uno de estos comentarios fuera de lugar.

Voy a hacer una aclaración sobre esta gente a la que desde hace muy poco tiempo (a pesar de lo que dice Wikipedia) se les dice "troll".
Es cierto que suelen ser personas con algún problema de personalidad, de adaptación a grupos, seguramente arrastrando un complejo (o complejito) de inferioridad; los comprendo perfectamente porque en eso somos colegas. Pero no necesariamente son unos nabos. Es más, a pesar de lo molesta que es su participación, a veces le dan a un asunto una vuelta de tuerca que de tan ridícula ya es brillante.
Y en ese comentario —que ya no recuerdo a qué venía ni sobre qué trataba— el autor proponía una situación ante un ejemplo dado, que claramente no iba a ocurrir en una página web real, pero que en teoría pura sí era posible y mostraba un "bug" en el código posteado.

De más está decir que ahí también lo ignoraron y siguieron con el debate, pero a mí me quedó dando vueltas ese asunto por la cabeza; y decidí estrenarme en aquél Foro con una de mis clásicas ironías. Le di la razón (bueno, en rigor de verdad, la tenía) y le puse un código que resolvía su objeción ... de una manera tan ridícula que era imposible tomarla en serio. ¡Pero funcionaba!.

Por supuesto que era solamente para devolverle el tiro en su mismo juego, pero no como si fuese un desafío o competencia. Como dije, muchos de estos trolls son muy inteligentes, y reconocen el trabajo de seguirles el hilo, aunque se den cuenta de que claramente no nos vamos a pasar de su bando.
El problema —y esto lo comento para cerrar la aneda— es que los 'expertos' se enojaron bastante con mi respuesta ... y no entendieron la broma; realmente creyeron que el código iba en serio y que le estaba dando la razón a quien ellos se esforzaban en ignorar. Esa desilusión me alejó varios meses de ese sitio, resulta que no eran tan despiertos como pensaba. Lo que sí quiero destacar es que cuando volví a postear, a mí ese troll nunca me ensució un tema. Creo que él sí entendió, y nunca se lo reconocí.

¡Pero qué tanto...! ¡Si estos sujetos se dedican a arruinar los Foros!





¿En qué estábamos? ¡Ah, sí!, tu consulta, danihxh.



Entiendes que lo que estás pidiendo es ridículo, ¿no?.
Que una imagen o una parte de ella se "vea" o no da exactamente lo mismo : o está o no está. Y la tuya está. Así que termina tapando tus botones.
Tienes un problema de diseño muy grave ... especialmente porque es de concepto. Yo estoy seguro de que no planteaste ese despropósito para molestar; ¡realmente te pareció una pregunta coherente!
Ese engendro no puede pasar, y al diseñador que lo hace hay que colgarlo de las pestañas con alambre de púa. Como mínimo.

¡Y ni hablar del que lo resuelve!





Código:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv=Content-Type content="text/html; charset=utf-8">
<title>SIMULA TRANSPARENCIA AL EVENTO A TRAVɀS DE IMAGEN.</title>
<script type="text/javascript">

var listado, todosEnlaces, mapaAreas, ajustaDespl, todasAreas ="";
var cadaTopEnlace = [];
var cadaWidthEnlace = [];
var cadaHeightEnlace = [];
var cadaDestino = [];
var codCadaArea0 = "<area shape='rect' coords='1,1,1,1' id='A";
var codCadaArea1 = "' href='#'>"

function creaMapa(){
listado = document.getElementById("enlaces");
todosEnlaces = listado.getElementsByTagName("a").length;
mapaAreas = document.getElementById("tapa");
ajustaDespl = document.body.scrollTop * -1;

for(s=0; s<todosEnlaces; s++){
todasAreas += codCadaArea0 + s + codCadaArea1 + "\r\n";

}

mapaAreas.innerHTML = todasAreas;

leerMedidas();

//alert(mapaAreas.innerHTML)
}

function leerMedidas(){
for(m=0; m<todosEnlaces; m++){
var anchEnlace = listado.getElementsByTagName("a")[m].offsetWidth;
var arrEnlace = listado.getElementsByTagName("a")[m].offsetTop + ajustaDespl;
var altoEnlace = listado.getElementsByTagName("a")[m].offsetHeight + arrEnlace;
var destEnlace = listado.getElementsByTagName("a")[m].href;

cadaWidthEnlace[m] = anchEnlace+10;
cadaHeightEnlace[m] = altoEnlace;
cadaTopEnlace[m] = arrEnlace;
cadaDestino[m] = destEnlace;
}

for(l=0; l<todosEnlaces; l++){
document.getElementById("A" + l).href = cadaDestino[l];
document.getElementById("A" + l).title = cadaDestino[l];

document.getElementById("A" + l).coords = "10,"+ cadaTopEnlace[l] +","
+ cadaWidthEnlace[l] +","+ cadaHeightEnlace[l];
}

//alert(cadaWidthEnlace)
//alert(cadaHeightEnlace)
//alert(cadaTopEnlace)
//alert(cadaDestino)

//alert(mapaAreas.innerHTML)

}

onload = creaMapa;
onscroll = creaMapa;

</script>
<style type="text/css">

body {margin: 15px 10px; }
a {font-size:20pt; line-height: 40pt; background-color: yellow; width: 100pt; 
display: block; font-weight: bold; }

</style>
</head>
<body>

<div style="height: 300px; width: 400px; margin-top:30pt; " id="enlaces">

<a href="javascript:alert('A')"> Alfa</a><br>
<a href="javascript:alert('B')"> Bravo<br>?</a><br>
<a href="javascript:alert('C')"> Charly</a><br>
<a href="javascript:alert('D')"> Delta</a><br>
<a href="javascript:alert('E')"> Eco</a><br>
<a href="javascript:alert('F')"> Foxtrot</a><br>
<a href="javascript:alert('G')"> Golf</a><br>
<a href="javascript:alert('H')"> Hotel</a><br>
<a href="javascript:alert('I')"> Indio</a><br>
<a href="javascript:alert('J')"> Julieta</a><br>
<a href="javascript:alert('K')"> Kilo</a><br>
<a href="javascript:alert('L')"> Lima</a><br>
<a href="javascript:alert('M')"> MIke</a><br>
<a href="javascript:alert('N')"> Noviembre</a><br>
<a href="javascript:alert('O')"> Oscar</a><br>
<a href="javascript:alert('P')"> Papa</a><br>

</div>

<img usemap="#tapa" src="http://img853.imageshack.us/img853/5572/degrad018my.png" style="position: fixed; top: 0; left: 0; 
border: 2px solid red; color: red; background-color:transparent; width:400px; 
height: 300px; " id="degrad">

<map name="tapa" id="tapa"></map>

</body>
</html>

Imagen :

  #5 (permalink)  
Antiguo 06/02/2012, 18:39
Avatar de cristian_cena
Colaborador
 
Fecha de Ingreso: junio-2009
Mensajes: 2.244
Antigüedad: 14 años, 10 meses
Puntos: 269
Respuesta: Elemento no interactivo

Hola dani, mira esto: http://www.brunildo.org/test/Overflowxy2.html
Saludos.

pd: y esto: http://es.html.net/tutorials/css/lesson15.php
  #6 (permalink)  
Antiguo 08/02/2012, 21:03
(Desactivado)
 
Fecha de Ingreso: noviembre-2002
Ubicación: Ciudad Autónoma de Buenos Aires
Mensajes: 2.367
Antigüedad: 21 años, 5 meses
Puntos: 317
Sonrisa Respuesta: Elemento no interactivo

Mmmm...
Yo también miré los enlaces. No entiendo muy bien a qué vienen. Quizá el del z-index sea una buena idea : al pasar el puntero sobre la imagen delantera, la pasamos atrás de los botones y se ve como si esos botones saltaran adelante para poder clickear.

En realidad iba a cometer un abuso, porque se me ucurrió otra forma más seria de hacer lo que se le inventó a danihxh. Funcionaría bien para un menú hecho con imágenes (en rigor de verdad, hecho con 1 imagen de todos los botones mapeando cada uno para el evento o link) y lo que tendríamos que hacer es fijar el fondo, liberar al desplazamiento la capa de botones, fijar el logo con transparencias ... y poner una imagen totalemente transparente, libre como los botones, en sus mismas coordenadas y con el mapa de botones ahí.

Denme un segundo. Hago un demo y si funciona mando este mensaje. Si no, jamás sabrán que lo escribí.











OK. Anda sin una línea de javascript.

El esquema sería más o menos el siguiente :
Si pudiésemos ver las capas "del costado izquierdo" (contraescrólbar), nos encontraríamos que poniendo ...

Código:
           Logo fijo con
           transparencia.
                       ▼
                   - ↕ - ↕
                   ¡ [ | ¦
                   ! [ | ¦   Cubierta desplazable
                   ¡ [ | ¦ ◄ transparente 
     Imagen fija   ! [ | ¦   Igual al menú, 
     (de fondo). ► ¡ [ | ¦   con mapa.
                   ! [ | ¦
                   - [ | ¦
                     [ | ¦
                     [ - ¦
  Menú desplazable ► [   ¦
                     [   ¦
                     ↕   ↕
hacemos un sánguche intercalando una capa fija de fondo (el puzzle), con una desplazable de menúes (tu ejemplo, danihxh), con una fija de logo (el de opacidad gradiente) y una desplazable "invisible", pero que es la que tiene el mapeo según las posiciones de la imagen de menú. Ésta es la que queda por delante de todo el conjunto, y por eso es el área clickeable.

Código HTML:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<html>
<head>
<meta http-equiv=Content-Type content="text/html; charset=utf-8">
<title>CLICK A TRAVÉS DE IMAGEN.</title>

<style type="text/css">
body {background-image: url(http://img84.imageshack.us/img84/6059/sombrapuzzle.gif); background-attachment: fixed; background-repeat: repeat-x; }

#botonera , #cubierta {width: 400px; height:800px; position: absolute; top:15px; left: 25px; }

#logo {width: 500px; height:400px; position: fixed; top:20px; left: 20px; }

hr { margin-top: 2000px; }
</style>
</head>
<body>

<map name="mimapa">
<area shape="rect" coords="0,180,30,210" title="Enlace 0." href="Javascript:alert('Enlace 0.')">

<area shape="rect" coords="0,216,30,246" title="Enlace 1." href="Javascript:alert('Enlace 1.')">

<area shape="rect" coords="0,252,30,282" href="Javascript:alert('Enlace 2.')" title="Enlace 2.">

<area shape="rect" coords="0,288,30,318" href="Javascript:alert('Enlace 3.')" title="Enlace 3.">

<area shape="rect" coords="0,324,30,354" href="Javascript:alert('Enlace 4.')" title="Enlace 4.">

<area shape="rect" coords="0,360,30,390" href="Javascript:alert('Enlace 5.')" title="Enlace 5.">

<area shape="rect" coords="0,396,30,426" href="Javascript:alert('Enlace 6.')" title="Enlace 6.">

<area shape="rect" coords="0,432,30,462" href="Javascript:alert('Enlace 7.')" title="Enlace 7.">

<area shape="rect" coords="0,468,30,498" href="Javascript:alert('Enlace 8.')" title="Enlace 8.">

<area shape="rect" coords="0,504,30,534" href="Javascript:alert('Enlace 9.')" title="Enlace 9.">

<area shape="rect" coords="0,540,30,570" href="Javascript:alert('Enlace 10.')" title="Enlace 10.">

<area shape="rect" coords="0,576,30,606" href="Javascript:alert('Enlace 11.')" title="Enlace 11.">

<area shape="rect" coords="0,612,30,642" href="Javascript:alert('Enlace 12.')" title="Enlace 12.">

<area shape="rect" coords="0,648,30,678" href="Javascript:alert('Enlace 13.')" title="Enlace 13.">

<area shape="rect" coords="0,684,30,714" href="Javascript:alert('Enlace 14.')" title="Enlace 14.">

<area shape="rect" coords="0,720,30,750" href="Javascript:alert('Enlace 15.')" title="Enlace 15.">

<area shape="rect" coords="0,756,30,792" href="Javascript:alert('Enlace 16.')" title="Enlace 16.">

</map>

<img src="http://img11.imageshack.us/img11/5161/sinttulo1eaq.png" id="botonera">
<img src="http://img853.imageshack.us/img853/5572/degrad018my.png" id="logo">
<img src="http://img42.imageshack.us/img42/6156/transparente.gif" id="cubierta" usemap="#mimapa">

<hr>

</body>
</html> 
Vale aclarar que los shape's son exactamente los mismos que se harían para el menú que está detrás; la imagen es transparente, pero tiene el mismo tamaño y posición de aquellos.







Soy una vergüenza. Dos chanchadas en el mismo mensaje.
¿Y así me querían de Colaborador?. Deberían echarme del Foro, por indigno.
  #7 (permalink)  
Antiguo 09/02/2012, 04:29
danihxh
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Elemento no interactivo

Muchas gracias!!! Ni siquiera se me había pasado por la cabeza algo así, de hecho posteé esto en CSS porque pensé que probablemente habría alguna propiedad para solucionarlo de manera más sencilla, pero ya veo que no...

Tampoco era mi intención trollearos xD y si alguien se ha sentido molesto por mi consulta le pido disculpas.

De nuevo muchas gracias, furoya!! :)
  #8 (permalink)  
Antiguo 09/02/2012, 10:46
(Desactivado)
 
Fecha de Ingreso: noviembre-2002
Ubicación: Ciudad Autónoma de Buenos Aires
Mensajes: 2.367
Antigüedad: 21 años, 5 meses
Puntos: 317
Respuesta: Elemento no interactivo

(De nada, danihxh, gracias a ti por la valoración. Y no hay de qué disculparse. Aquí nos gusta ayudar a la gente con sentido del humor. Nadie se va a enojar 'en serio'. Aunque hay algunos que preguntan cada cosa ... )

P.D. : con el apuro por postear antes de que el Foro se cayera de nuevo, olvidé los links de imágenes. Acá están














  #9 (permalink)  
Antiguo 23/04/2012, 11:19
(Desactivado)
 
Fecha de Ingreso: noviembre-2002
Ubicación: Ciudad Autónoma de Buenos Aires
Mensajes: 2.367
Antigüedad: 21 años, 5 meses
Puntos: 317
Respuesta: Elemento no interactivo

Cita:
Iniciado por furoya Ver Mensaje
Entiendes que lo que estás pidiendo es ridículo, ¿no?.
Que una imagen o una parte de ella se "vea" o no da exactamente lo mismo : o está o no está. Y la tuya está. Así que termina tapando tus botones.
Tienes un problema de diseño muy grave ... especialmente porque es de concepto. Yo estoy seguro de que no planteaste ese despropósito para molestar; ¡realmente te pareció una pregunta coherente!
Ese engendro no puede pasar, y al diseñador que lo hace hay que colgarlo de las pestañas con alambre de púa. Como mínimo.
¡Y ni hablar del que lo resuelve!
Esteeee...

Creo que lo resolvieron los chicos del CSS.

<div></div> sin foco. Posible?

Pointer-events: Los elementos juegan al escondite con el ratón (externo)


Etiquetas: clickar, inactico, inerte, interactivo, invisible
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:39.