Ich habe versucht, einen Bildschirm zu generieren, in dem die :before
und :after
Pseudo-Elemente verwendet werden, aber ich frage mich, ob eine solche Funktionalität tatsächlich möglich ist.Beim Schweben eines Pseudo-Elements, das andere Pseudo-Element erscheinen lassen?
Ich habe eine Wrapper div, die um einen Eingang gewickelt ist (so dass pseudo element
s auf diesem Wrapper).
so etwas wie:
+-----------------------------------+
| +-------------------------------+ |
| | | | <-- wrapper div
| +-------------------------------+ <-- input element
+-----------------------------------+
aber ich war auf der Suche ein Pseudo-Element nach dem div positioniert haben.
+-----------------------------------++-------+
| +-------------------------------+ | |¯¯¯| |
| | | | / |
| +-------------------------------+ | ! |<--pseudo element
+-----------------------------------++-------+
Ich wollte in der Lage sein, dieses Pseudo-Element zu schweben, und das andere Pseudo-Element erscheinen zu lassen.
.wrap {
position: relative;
height: 30px;
width: 200px;
display: inline-block;
}
.wrap input {
position: absolute;
top: 0;
left: 0;
height: 100%;
width: 100%;
}
.wrap:after {
content: "?";
position: absolute;
top: 0;
left: 100%;
height: 30px;
width: 30px;
font-size: 30px;
text-align: center;
}
.wrap:before {
content: "";
position: absolute;
top: 100%;
left: 0;
height: 60px;
width: 100%;
background: tomato;
opacity:0.2;
}
<div class="wrap">
<input placeholder="input element" type="text" />
</div>
Aus dem obigen Schnipsel-Design, ist es eine Möglichkeit, das zu machen :before
Element seine Opazität ändern, wenn ich nur das :after
Element schweben und nicht die wrap
div selbst (Anmerkung : html kann nicht geändert werden, daher warum diese Frage)?
Ich habe versucht, etwas mit wie:
.wrap:not(input):hover:before{
nach der Breite des Eingangs zu 90%
ändern, aber dies hat keinen Unterschied
Ein interessanter Fall, um Pseudo-Elemente als einfache Selektoren zu zählen, also könnte man etwas wie '.wrap: has (:: after: hover) :: before' machen. Aber leider ... – BoltClock
@BoltClock Ist ':: after: Hover' in Selektoren Level 4 gültig? Wenn ich mich richtig erinnere, können Pseudo-Elemente keine Pseudo-Klassen haben ... –
@Hashem Qolami: Es ist in Level 4. Es hängt sowohl vom Pseudo-Element als auch von der Pseudo-Klasse ab - manche Kombinationen sind möglich, andere nicht.Siehe http://dev.w3.org/csswg/selectors-4/#pseudo-elements, das besagt: "Pseudo-Elemente sind konturlos und können daher von keinem anderen Selektor gefunden werden. Sie haben auch keinen Einfluss auf die Interpretation von strukturellen Pseudoklassen, die ausschließlich auf der Basis realer Elemente bewertet werden. Andere Pseudoklassen * können Pseudoelemente * entsprechen, sofern nicht anders angegeben. " – BoltClock