2010-08-21 15 views
72

Çeşitli nedenlerden ötürü, bir metnin üzerine çoğunlukla (çoğunlukla) şeffaf bir <div> koymalıyım. Ancak, bu metnin tıklanamayacağı anlamına gelir (örneğin, linklere tıklamak veya seçmek için). Bu div'u tıklamalar ve diğer fare olaylarına "görünmez" yapmak mümkün mü?HTML/CSS: Tıklamalara "görünmez" bir div yapın mı?

Örneğin, overlay div kapakları metni kapsar, ancak ben overlay div yoluyla metni/tıklama seçebilmek için istiyorum: O senden sonra olay görülen islenmeden yapılabilir

<div id="container"> 
    <p>Some text</p> 
    <div id="overlay" style="position: absolute; top: 0; 
          left: 0; width: 100%; height:100%"> 
     ... some content ... 
    </div> 
</div> 
+1

ile "div" değiştirin. (Birkaç kez tartışıldı, ancak bunun için bulmak zor, iyi anahtar kelimeler düşünemiyorum ...) Şeffaf DIV için neye ihtiyacınız var? –

+2

Bunun mümkün olduğunu düşünmüyorum. Belki de "çeşitli nedenlerden" yani gerçekten neyi başarmak istediğinizi söylüyorsunuz? – davehauser

+1

@Null OP'nin ne yapmak istediğinin anlaşılıncaya kadar -1 değerini saklıyorum. –

cevap

128

O CSS pointer-events kullanılarak yapılabilir. Bu özellik Firefox 3.6+, Chrome 2+, IE 11+ ve Safari 4+ sürümlerinde desteklenmektedir. Ne yazık ki, bir çapraz tarayıcı çözümü hakkında bilgim yok. bir div tüm etkinlikleri devre dışı bırakma (veya civciv) için

#overlay { 
    pointer-events: none; 
} 
+2

Ah, bu iyi görünüyor! Şimdi, tek sorun şu ki, bazı çocukları yapmak zorundayım * kabul * işaretçi olayları… Ama belki –

+2

Cool: 'pointer-events: visible' gibi görünüyor * tam * ne istediğimi * Teşekkür ederim! –

+0

Kromda çalışıyor! Bu mümkün olduğunu seviyorum! –

-1

Alternatif unbind olan()

$('#myDivId').unbind(); 

veya

$('#myDivId').unbind("click"); 
+0

'jquery' artık' unbind() 'lehine' off() 'işlevini kullanmaktadır ve yalnızca işleyicileri kaldırır, div'un tıklamayı yakalamasını engellemez. – pmoleri

0

Yapabileceğin varsayılan olarak etiketleri ile bağlıdırlar tüm olay Bunu bindirmeyi şu şekilde gizleyerek:

overlay.onclick = function(){ 
    window.event.srcElement.style.visibility = "hidden"; 
    var BottomElement = document.elementFromPoint((navigator.appName.substring(0,3) == "Net") ? e.clientX : window.event.x,(navigator.appName.substring(0,3) == "Net") ? e.clientY : window.event.y); 
    window.event.srcElement.style.visibility = "visible"; 
    BottomElement.click(); 
} 
0

bunu kullanın jQuery

$("div").click(function(e){e.preventDefault();}); 

kısa cevap hayır kimliği veya eleman