CSS: Bedingungen möglich?
lima-city → Forum → Die eigene Homepage → HTML, CSS & Javascript
abfangen
bedingung
beispiel
beliebige elemente
beziehung
code
element
entsprechenden kombinationen
exakten details
filter
interaktion
klasse
klasse code
liegen
liste
nachschlagen
stehen
test
url
weben
-
Hallo,
wenn man z. B. ein bestimmtes Objekt ändern will, wenn der User gerade mit der Maus über einem anderen ist, geht das nur mit JS oder auch mit CSS?
Beispiel: Ich habe einen
und einendiv#s1
jeweils der Klassediv#s2
und dazu einendiv.s
und einendiv#t1
jeweils der Klassediv#t2
.div.t
Immer dann, wenn über
(bzw.#s1
) sich der Mauszeiger befindet, soll#s2
(bzw.#t1
) per#t2
unscharf gemacht werden.filter: blur(10px);
Gibt es nun die Möglichkeit, das in etwa so zu lösen?:
#s1:hover{ #t1{ filter: blur(10px); } } #s2:hover{ #t2{ filter: blur(10px); } }
Sehr kreativ, ich weiß. Natürlich funktioniert diese Lösung nicht, aber gibt es eine ähnliche Möglichkeit?
Sachen wie
@media screen and (orientation: portrait) { body { background-color: white; } } @media screen and (orientation: landscape) { body { background-color: black; } }
funktionieren ja. Gibt es vielleicht ähnliche Selektoren wie
, mit denen das funktioniert?@media
Danke und LG
Beitrag zuletzt geändert: 20.1.2016 18:29:56 von funnyweb -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Das kommt auf die Herachie drauf an. Wie liegen die Elemente zueinander?
<style> #oben { height:200px; width: 200px; } #oben:hover #unten { height: 50px; width: 50px; filter: blur(10px); } </style> <div id="oben"> <div id="unten"></div> </div>
Wenn die Elemente in keiner Beziehung zueinander stehen, ist es sonst nicht so einfach möglich. Es gibt sonst noch den Sibling-Selector, also die ~, das sähe dann so aus:
<style> #oben { height:200px; width: 200px; } #oben:hover ~ #unten { height: 50px; width: 50px; filter: blur(10px); } </style> <div id="oben"></div> <div id="unten"></div>
Bedingungen selbst gibt es sonst nicht.
Du kannst mit Pseudo-Klassen solche Interaktionen abfangen. Hier eine Liste aller möglichen Pseudo-Klassen, mit denen du bedingte Interaktivität einbauen kannst: https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-classes
Das musst du nu nur mit den entsprechenden Kombinationen verbinden, die du hier nachschlagen kannst: https://developer.mozilla.org/en-US/docs/Web/CSS/Reference. Hier recht weit unten Selectors -> Combinators.
Ich hoffe das hilft.
Liebe Grüße -
CSS-Selektoren sind Bedingungen. Wenn Du mit den Selektoren ausdrücken kannst, in welcher Beziehung das Element, über dem der Mauszeiger steht (also das Element, an das Du das ":hover" anhängst), und das zu formatierende Element stehen, ist Dein Problem gelöst.
Ein Beispiel:
<html> <head> <title>Test</title> <style type="text/css"> div#s1 { border:1px solid black; width:20em; } div#s2 { width:5em; height:4ex; } /* #s2 kommt nach #s1 und es sind zwei beliebige Elemente dazwischen: */ div#s1:hover+*+*+div#s2 { background-color: green; } </style> </head> <body> <div id="s1"> <p>hover over me !</p> </div> <p>Einfach nur als unsinniges Beispiel …</p> <hr /> <div id="s2"> </div> </body> </html>
Die div#s2 wird grün, wenn der Mauszeiger über der div#s1 steht. Wenn Du eines der beiden Elemente zwischen den beiden divs entfernst, funktioniert es nicht mehr, da der Selektor bedeutet: ein s2 Element zwei (beliebige) Elemente nach einem s1 über dem der Mauszeiger steht.
Es gibt neben den von mir und ggamee genannten Möglichkeiten noch ein paar andere. Die exakten Details über CSS-Selektoren findest Du hier beim W3C.
H. -
Wenn die genannten IDs unabhängig von einander in der HTML-Struktur stehen, dann ist das mit Nur-CSS schwierig und es bleibt wohl nur eine JavaScript Lösung. Mit jQuery geht das sehr komfortabel. Siehe Beispiel bei
https://api.jquery.com/hover/ -
ggamee schrieb:
Das kommt auf die Herachie drauf an. Wie liegen die Elemente zueinander? […]
Sie sind quasi »Cousins«:
html
→ head
→ body
→ → div
→ → → div
→ → → → div#t1
→ → → → div#t2
→ → div
→ → → div
→ → → → div#s1
→ → → → div#s2
→ → div
ggamee schrieb:
[…]
Dankeschön!<style> #oben { height:200px; width: 200px; } #oben:hover #unten { height: 50px; width: 50px; filter: blur(10px); } </style> <div id="oben"> <div id="unten"></div> </div>
Wenn die Elemente in keiner Beziehung zueinander stehen, ist es sonst nicht so einfach möglich. Es gibt sonst noch den Sibling-Selector, also die ~, das sähe dann so aus:
<style> #oben { height:200px; width: 200px; } #oben:hover ~ #unten { height: 50px; width: 50px; filter: blur(10px); } </style> <div id="oben"></div> <div id="unten"></div>
Bedingungen selbst gibt es sonst nicht.
Du kannst mit Pseudo-Klassen solche Interaktionen abfangen. Hier eine Liste aller möglichen Pseudo-Klassen, mit denen du bedingte Interaktivität einbauen kannst: https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-classes
Das musst du nu nur mit den entsprechenden Kombinationen verbinden, die du hier nachschlagen kannst: https://developer.mozilla.org/en-US/docs/Web/CSS/Reference. Hier recht weit unten Selectors -> Combinators.
Ich hoffe das hilft.
Liebe Grüße
hddg schrieb:
CSS-Selektoren sind Bedingungen. Wenn Du mit den Selektoren ausdrücken kannst, in welcher Beziehung das Element, über dem der Mauszeiger steht (also das Element, an das Du das ":hover" anhängst), und das zu formatierende Element stehen, ist Dein Problem gelöst.
Herzlichen Dank, diese Art Sibling-Selektor ist ideal dafür!
Ein Beispiel:
<html> <head> <title>Test</title> <style type="text/css"> div#s1 { border:1px solid black; width:20em; } div#s2 { width:5em; height:4ex; } /* #s2 kommt nach #s1 und es sind zwei beliebige Elemente dazwischen: */ div#s1:hover+*+*+div#s2 { background-color: green; } </style> </head> <body> <div id="s1"> <p>hover over me !</p> </div> <p>Einfach nur als unsinniges Beispiel …</p> <hr /> <div id="s2"> </div> </body> </html>
Die div#s2 wird grün, wenn der Mauszeiger über der div#s1 steht. Wenn Du eines der beiden Elemente zwischen den beiden divs entfernst, funktioniert es nicht mehr, da der Selektor bedeutet: ein s2 Element zwei (beliebige) Elemente nach einem s1 über dem der Mauszeiger steht.
Es gibt neben den von mir und ggamee genannten Möglichkeiten noch ein paar andere. Die exakten Details über CSS-Selektoren findest Du hier beim W3C.
H.
Beitrag zuletzt geändert: 23.1.2016 17:29:02 von funnyweb -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage