Antwort an „Rolf B“ verfassen

Hallo Gunnar,

topLink.style.display = entry.isIntersecting ? 'none' : 'revert';

MDN:

The revert CSS keyword reverts the cascaded value of the property from its current value to the value the property would have had if no changes had been made by the current style origin to the current element.

Fett von mir. Die Spec macht mehr Worte, sagt aber das Gleiche.

Wenn das topLink-Element seinen gewünschten display-Wert aus dem User- oder Useragent-Stylesheet bekommt, dann wird revert funktionieren. Aber wenn es den display-Wert aus einem Autorenstylesheet bekommt, dann funktioniert es nicht. Weil style-Attribut und Autorenstylesheet der gleiche style origin sind.

Damit ist es eine Lösung, über deren Verwendbarkeit man nachdenken muss, bevor man sie anwendet – bzw. die einen nachträglich in die Ferse beißen kann, wenn man dem Element nachträglich im Autorenstylesheet eine display-Eigenschaft geben will. Und deshalb habe ich removeProperty vorgeschlagen.

.a {
  display: flex;
}
<div class="a">...</div>

Wenn Du jetzt dem div.a ein display:revert ins style-Attribut schreibst, ist die Flexbox weg. Die bleibt nur da, wenn Du display ganz entfernst - oder Müll zuweist, z.B. display: -g16n-whatever.

Aber wir sind uns ja einig: Finger weg von der style-Eigenschaft (bzw. vom Attribut), wenn man ein Element ausblenden will.

[hidden] { display: none !important }

Deshalb kann es noch sinnvoller sein, eine eigene Klasse vorzusehen

Womit sich das wohl erledigt hat.

Wenn es nur um das display:none geht, ja. Aber das war nicht das, was ich meinte. Es ist ja durchaus möglich, dass in dem Zustand "topLink nicht sichtbar" auch noch andere Dinge zu stylen sind. Weshalb ich ja auch von „kann sinnvoller sein“ sprach; vielleicht hätte ich das kann hervorheben sollen.

Rolf

--
sumpsi - posui - obstruxi
freiwillig, öffentlich sichtbar
freiwillig, öffentlich sichtbar
freiwillig, öffentlich sichtbar

Ihre Identität in einem Cookie zu speichern erlaubt es Ihnen, Ihre Beiträge zu editieren. Außerdem müssen Sie dann bei neuen Beiträgen nicht mehr die Felder Name, E-Mail und Homepage ausfüllen.

abbrechen