2009-04-22 29 views
19

Digamos que si tengo envoltorio div que incluye algunos enlaces e imágenes, ¿hay alguna forma en que pueda desactivarlo de inmediato con solo CSS?¿Cómo puedo hacer que un área no se pueda hacer clic en CSS?


Después de la revisión de las respuestas:
me cayó la idea de que puede hacer que sea sólo con CSS. jQuery blockUI plug in funciona como encanto.

Respuesta

6

si va a utilizar jQuery, puede lograrlo fácilmente con el complemento blockUI. ... o para responder a tu pregunta con CSS, tendrás que posicionar absolutamente el div sobre el contenido que deseas bloquear. solo asegúrese de que el div que se encuentra en la posición correcta aparece después de que el contenido se bloquee para fines de indexación z.

<div style="position:relative;width: 200px;height: 200px;background-color:green"> 
    <div> 
     <a href="#">Content to be blocked.</a> 
    </div> 
    <div style="position: absolute;top:0;left:0;width: 200px;height:200px;background-color: blue;z-index:2;opacity:0.4;filter: alpha(opacity = 50)"></div> 
</div> 

perdón por todo el inline css. Tendrás que hacer algunas buenas clases. Además, esto solo se ha probado en Firefox e IE7.

4

Cúbralo con otro elemento que no se puede hacer clic. Es posible que necesite usar JavaScript para activar y desactivar esta "cubierta". Puedes hacer algo inteligente como hacer que sea semitransparente o algo así.

<style> 
    #cover {position:absolute;background-color:#000;opacity:0.4;} 
</style> 

<div id="clickable-stuff"> 
    ... 
</div> 
<div id="cover"> 
</div> 

<script type="text/javascript"> 
    function coverUp() { 
     var cover = document.getElementById('cover'); 
     var areaToCover = document.getElementById('clickable-stuff'); 
     cover.style.display = 'block'; 
     cover.style.width = //get areaToCover's width 
     cover.style.height = //get areaToCover's height 
     cover.style.left = //get areaToCover's absolute left position 
     cover.style.top = //get areaToCover's absolute top position 
    } 

    /* 
     Check out jQuery or another library which makes 
     it quick and easy to get things like absolute position 
     of an element 
    */ 
</script> 
0

Si quieres decir que no se puede hacer clic para que los usuarios no puedan copiarlo y pegarlo o guardar los datos de alguna manera. No, esto nunca ha sido posible. Todos esos sitios que hacen sonido/parece que tienen alguna manera de bloquear cosas que realmente no se guardan y las medidas que implementan se solucionan fácilmente.

114

Hay una regla CSS para eso, pero no es ampliamente utilizado debido a los navegadores antiguos apoyan

pointer-events: none;

+2

Dmitri! su respuesta corta y dulce resolver mi problema. Gracias –

+0

Ahh! ¡Ojalá esto también funcionara en Firefox! – streetlight

+0

¡increíble! gracias – Vimalnath

8

estos días se puede simplemente colocar un pseudo-elemento sobre el contenido.

.blocked 
{ 
    position:relative; 
} 
.blocked:after 
{ 
    content: ''; 
    position: absolute; 
    left:0; 
    right:0; 
    top:0; 
    bottom:0; 
    z-index:1; 
    background: transparent; 
} 

http://jsfiddle.net/HE5wR/27/

+0

¿Por qué '.blocked a: after' work? – Chloe

+0

Porque con '.blocked a: after' el pseudo-elemento que coloca sobre el div es parte del enlace en sí, por lo que hace que toda el área div se pueda hacer clic, en lugar de bloquearla. – towr

+0

Así es como resulta. No se puede hacer clic en el 'div' completo, solo el enlace, a pesar del CSS. Ver http://jsfiddle.net/HE5wR/26/. Por cierto, usted tuvo un error en su JavaScript con 'isn't' que terminó prematuramente la cadena y dio un error de consola. Creo que estás diciendo que el pseudo-elemento también está "caliente" y por lo tanto actúa como un enlace, a pesar de estar en la parte superior del enlace original. – Chloe

Cuestiones relacionadas