HTML / CSS: Làm cho một div "ẩn" đối với các nhấp chuột?


98

Vì nhiều lý do khác nhau, tôi cần đặt (chủ yếu) trong suốt <div>trên một số văn bản. Tuy nhiên, điều này có nghĩa là không thể nhấp vào văn bản (ví dụ: để nhấp vào liên kết hoặc chọn nó). Có thể chỉ đơn giản làm cho div này "vô hình" với các lần nhấp chuột và các sự kiện chuột khác không?

Ví dụ: overlaydiv bao phủ văn bản, nhưng tôi muốn có thể nhấp / chọn văn bản thông qua overlaydiv:

<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
Câu trả lời ngắn gọn là không. (Đã được thảo luận nhiều lần, nhưng rất khó để tìm ra các bản lừa đảo này, không thể nghĩ ra các từ khóa hay ...) Bạn cần DIV minh bạch để làm gì?
Pekka

2
Tôi không nghĩ điều đó có thể. Có thể bạn kể về "những lý do khác nhau" tức là những gì bạn thực sự muốn đạt được?
davehauser

1
@Null Tôi sẽ giữ lại -1 cho đến khi rõ ràng OP muốn làm gì.
Pekka

1
NullUserException - Làm thế nào những gì anh ấy đang đề xuất ngăn mọi người sao chép nội dung từ trang web của anh ấy? Nếu bất cứ điều gì, anh ta đang cố gắng làm điều ngược lại - anh ta muốn loại bỏ ảnh hưởng của div trong suốt của mình (làm cho văn bản khó nhấp và chọn hơn).
Hammerite

@Hammer Bạn nói đúng. Tôi đã gỡ bỏ phiếu phản đối.
NullUserException

Câu trả lời:


159

Nó có thể được thực hiện bằng cách sử dụng CSS pointer-events. Thuộc tính này được hỗ trợ trong Firefox 3.6+, Chrome 2+, IE 11+ và Safari 4+. Rất tiếc, tôi không có kiến ​​thức về cách giải quyết trên nhiều trình duyệt.

#overlay {
  pointer-events: none;
}

3
Ah, có vẻ tốt! Bây giờ, vấn đề duy nhất là tôi phải làm cho một số trẻ em chấp nhận các sự kiện con trỏ… Nhưng có lẽ tôi có thể hiểu được điều đó. Cảm ơn!
David Wolever

2
Tuyệt vời: có pointer-events: visiblevẻ như nó sẽ làm chính xác những gì tôi muốn. Cảm ơn!
David Wolever

Hoạt động trong chrome! Yêu rằng điều này là có thể!
BT

Có một sự kiện con trỏ polyfill: github.com/kmewhort/pointer_events_polyfill
rink.attendant. 6

Câu trả lời đơn giản nhất và eo hẹp nhất về phía trước!
Jones G


0

Bạn có thể thực hiện việc này bằng cách ẩn lớp phủ như sau:

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

Sử dụng jQuery này

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

thay thế "div" bằng ID hoặc phần tử


-1

Thay thế để vô hiệu hóa tất cả các sự kiện (hoặc chick) trên div là hủy liên kết () tất cả các sự kiện được gắn với thẻ theo mặc định

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

hoặc là

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

jquerybây giờ sử dụng off()ủng hộ unbind()và chỉ loại bỏ các trình xử lý, không ngăn div bắt lần nhấp.
pmoleri
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.