Ich habe gerade mit pointer-events
Immobilien in CSS herumgespielt.
Ich habe eine div
, die ich für alle Mausereignisse unsichtbar sein möchte, außer für :hover
.
Alle Klickbefehle gehen also durch den div
Befehl darunter, aber der div kann melden, ob sich die Maus noch darüber befindet oder nicht.
Kann mir jemand sagen, ob dies möglich ist?
HTML:
<div class="layer" style="z-index:20; pointer-events:none;">Top layer</div>
<div class="layer" style="z-index:10;">Bottom layer</div>
CSS:
.layer {
position:absolute;
top:0px;
left:0px;
height:400px;
width:400px;
}
html
css
pointer-events
Jimmery
quelle
quelle
pointer-events
nicht gut unterstützt .Antworten:
Ich denke nicht, dass es möglich ist, Ihre Ziele allein in CSS zu erreichen. Wie andere Autoren bereits erwähnt haben, ist dies in JQuery jedoch einfach genug. So habe ich es gemacht:
HTML
CSS (unverändert)
JQuery
Hier ist die JSFiddle: http://www.jsfiddle.net/ReZ9M
quelle
Nur schweben. Es ist sehr leicht. No JS ... Verhindern Sie auch die Standardaktion für Links.
Bearbeiten: Unterstützt in IE 11 und höher http://caniuse.com/#search=pointer-events
quelle
Xancos Antwort "stehlen", aber ohne diese hässliche, hässliche jQuery.
Snippet : Hinweis DIVs sind in umgekehrter Reihenfolge
quelle
Sie können den Schwebeflug auch auf verschiedenen Elementen erkennen und Stile auf das untergeordnete Element anwenden oder andere CSS-Selektoren wie benachbarte untergeordnete Elemente usw. verwenden.
Es hängt jedoch von Ihrem Fall ab.
Auf dem übergeordneten Element schweben. Ich war das:
quelle
Ich verwende das
:hover
Pseudoelement eines gleich großen übergeordneten Elements / Containers, um einen Schwebeflug über meinem Overlay-Div zu simulieren, und setze dann die Overlayspointer-events
sonone
, dass Klicks zu Elementen darunter weitergeleitet werden.Code-Snippet anzeigen
quelle
Reine CSS-Lösung für Ihre Anfrage (die Opazitätseigenschaft dient nur zur Veranschaulichung der Notwendigkeit der Übergänge):
Was es macht:
Wenn die Maus die Box betritt, wird der
:hover
Status ausgelöst . In diesem Zustand sind die Zeigerereignisse jedoch deaktiviert.Wenn Sie jedoch die Timer für Übergänge nicht einstellen, bricht der div den Schwebezustand ab, wenn sich die Maus bewegt. Der Schwebezustand flackert, während sich die Maus innerhalb des Elements bewegt. Sie können dies erkennen, indem Sie den obigen Code mit den Deckkrafteigenschaften verwenden.
Durch Festlegen einer Verzögerung für den Übergang aus dem Schwebezustand wird das Problem behoben. Der
2s
Wert kann an Ihre Bedürfnisse angepasst werden.Credits für Übergänge optimieren: Patad auf diese Antwort .
quelle
Nur reines CSS , braucht keine Abfrage :
quelle