Machen Sie DIV in CSS und JavaScript unsichtbar

Lesezeit: 3 Minuten

Benutzer-Avatar
Aram Kocharyan

Ich habe es geschafft, ein DIV-Tag in JavaScript unsichtbar zu machen, indem ich die Anzeige auf „Keine“ und die Sichtbarkeit auf „Ausgeblendet“ gesetzt habe. Es kann auch mit dieser Klasse erreicht werden:

.invisible {
    display: none;
    visibility: hidden;
}

Keine anzeigen stellt sicher, dass das DIV-Feld leer ist, und Sichtbarkeit ausgeblendet stellt sicher, dass es nicht sichtbar ist. Das Problem bei dieser Methode ist, wenn ich scrollbare DIVs oder Textareas mit überlaufendem Inhalt habe, wenn Sie display: none einstellen, werden einige Browser die Scrollposition für diese Elemente vergessen. Gibt es eine bessere Möglichkeit, ein DIV unsichtbar zu machen, ohne die Anzeigeeigenschaft zu verwenden? Ich würde lieber nicht auf die Verwendung von JavaScript zurückgreifen, um die Bildlaufposition und dergleichen nach Möglichkeit aufzuzeichnen.

BEARBEITEN:

Ich habe es mit Ihrer Hilfe geschafft, es zu lösen, ich habe Folgendes angewendet:

.invisible {
    visibility: hidden;
    position: absolute;
    top: -9999px;
}

.visible {
    visibility: visible;
    position: static;
}

Ich habe es mit left: -9999px versucht, aber dies erweitert die vertikale Bildlaufleiste im IE … Ich habe auch mein Textfeld in ein anderes DIV gepackt und die sichtbaren / unsichtbaren Stile darauf angewendet, da das Textfeld sonst seine Bildlaufposition verlieren würde. Ich habe dies in Chrome, Firefox, IE und Safari auf meinem iPhone getestet. Nur eine Anmerkung, das um das Textfeld gewickelte DIV schien in FF nicht zu helfen, und die Bildlaufleiste wurde immer noch zurückgesetzt. Aber die scrollbaren DIVs sind jetzt in Ordnung. Danke für Ihre Hilfe!

  • Nur eine Vermutung, aber ich würde es in ein Container-Div einfügen und rendern das div unsichtbar, oder? Da dies eine Vermutung ist, biete ich sie nicht als Antwort an.

    – Dancrumb

    25. Februar 2011 um 3:24 Uhr

  • Hmmh, ich dachte, ich hätte Erfolg mit deiner Lösung, aber jetzt habe ich festgestellt, dass der Android-Browser immer noch nach oben scrollt … :/

    – Karußell

    7. Februar 2012 um 10:50 Uhr

  • Ah, ich habe kein Android…

    – Aram Kocharyan

    7. Februar 2012 um 15:19 Uhr

Sie können einfach verwenden visibility:hidden wenn Sie möchten, dass das Element unsichtbar, aber dennoch gerendert wird. display:none wird es vollständig entfernen und das von Ihnen erwähnte Bildlaufverhalten verursachen.

  • visibility:hidden wird immer noch dazu führen, dass das Element Platz im Layout einnimmt. Ich vermute, das ist nicht das, wonach der OP sucht, weil er damit zufrieden ist display: none abzüglich der Probleme mit der Bildlaufleiste.

    – Bryan Downing

    25. Februar 2011 um 3:43 Uhr

  • Ja, ich weiß über die Sichtbarkeit Bescheid, aber wenn Ihr DIV ein Block ist, nimmt es immer noch diesen Platz ein.

    – Aram Kocharyan

    25. Februar 2011 um 3:56 Uhr

  • +1 Danke für den Hinweis visibility: hidden vs. display: none. Das ist eine nützliche Unterscheidung.

    – Asche999

    8. Juni 2013 um 18:59 Uhr


  • Funktioniert wirklich:

    – Benutzer1575120

    14. April 2015 um 5:09 Uhr


Benutzer-Avatar
Bryan Downing

Das würde wahrscheinlich funktionieren:

.invisible {
    position: absolute;
    left: -9999px;
}

BEARBEITEN: Ich würde mir die mal anschauen gemeinsame Helfer im HTML5-Boilerplate-Code, um andere Möglichkeiten zu erkunden, Dinge verschwinden zu lassen.

Sie können verwenden jQuery um die Lösung zu erreichen. Wenn Sie die vollständig verstecken/anzeigen möchten divdann kannst du verwenden:

$('#my_element').show()
$('#my_element').hide()

Und wenn Sie möchten, dass Ihr div unsichtbar wird und immer noch auf der Seite vorhanden ist, können Sie einen effizienten Trick anwenden:

$('#my_element').css('opacity', '0.0');  // invisible Maximum
$('#my_element').css('opacity', '1.0');  // visible maximum

Sie können eine Hide()-Methode von JQuery verwenden. $(‘#DivID’).hide(); oder $(‘.DivClass’).hide();

Was das Layout angeht, bringt display:none es vollständig aus dem Rendering-Baum heraus und in diese Vorhölle der Unterwelt. Es hat keine genau definierten Abmessungen oder Positionen mehr.

Wenn Sie einen Platzhalter für die Bildlaufposition benötigen, würde ich vorschlagen, ein Platzhalterelement zu verwenden. Irgendein nullhohes DIV oder vielleicht sogar eins <a name="something""></a> würde funktionieren.

Benutzer-Avatar
Macarrao

Ich verwende lieber eine feste Höhe und Breite (height:0; width:0;). Vergessen Sie nicht, Ränder, Polsterungen und Ränder zu entfernen.

1055540cookie-checkMachen Sie DIV in CSS und JavaScript unsichtbar

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy