2013-05-01 16 views
38

Ich habe folgendes divausblenden div aber halten den leeren Raum

CSS

.description { 
    color: #b4afaf; 
    font-size: 10px; 
    font-weight: normal; 
} 

HTML

<div class="description">Some text here </div> 

Dann habe ich eine Klick-Funktion auf ein Element der oben div zu verbergen:

$('#target').click(function(){ 
    $(".description").hide(); 
}); 

Wenn ich die ausblenden div es wird zusammenbrechen (kein Platz mehr nehmen). Dies ist mit dem Layout meiner Seite unordentlich.

Gibt es eine Möglichkeit, ich kann das div verstecken, aber immer noch den Platz nehmen, den es vorher genommen hat? Ich möchte die Schriftfarbe nicht ändern, weil es noch wählbar wäre.

Dank

+0

Mögliche Duplikate: http://stackoverflow.com/questions/6393632/jquery-hide-element-while-preserving-its-space-in-page-layout – Eli

Antwort

75

Verwenden visibility CSS-Eigenschaft für diese

Sichtbarkeit:

die Sichtbarkeitseigenschaft angibt, ob die von einem Elemente erzeugten Schachteln gerendert werden.

$(".description").css('visibility', 'hidden'); 

Demo: Fiddle

+0

+1. Beat mich dazu - das ist die beste Lösung. – naththedeveloper

+15

'css ('Sichtbarkeit', 'sichtbar')' um das Element wieder anzuzeigen;) – SNag

5

Versuchen:

$(".description").css("visibility", "hidden") 

hide() ist die äquivalent zu: $(".description").css("display", "none");

Was nicht den Raum vorbehält das Element fand.

Hidden macht das Element unsichtbar, aber stills reserviert den Platz.

6

Und eine weitere Option der Vollständigkeit halber. Toggle opacity:

$(".description").css('opacity', 0); // hide 
$(".description").css('opacity', 1); // show 

http://jsfiddle.net/KPqwt/

jedoch mit visibility ist für diese Aufgabe bevorzugt.

0

Sie können ein anderes div um die Außenseite wickeln und ihm wahrscheinlich eine bestimmte Höhe zuweisen. Auf diese Weise kann Ihr inneres div zeigen und ausblenden und fadeOut, usw., und das äußere div wird das Grundeigentum auf der Seite halten.

+0

Sie könnten.Aber unter welchen Umständen möchten Sie dies tun, wenn die akzeptierte Antwort (vor einem Jahr!) Einfacher ist (kein extra Div benötigt wird), und erfordert keine feste Codierung einer bestimmten Höhe? Selbst wenn Sie ** eine bestimmte Höhe ** wollten, würden Sie dies nicht tun, Sie würden einfach die Höhe in css auf das bereits vorhandene Element setzen. Ich möchte nicht unhöflich sein, und ich weiß es zu schätzen, dass es gut ist, alternative Lösungen zu haben. Ich bin nur verblüfft über den Vorschlag einer scheinbar immer minderwertigen Lösung, ein Jahr nachdem die Frage gelöst wurde. Fehle ich etwas? – ToolmakerSteve

1

Es ist wichtig zu beachten, dass dfsq Beispiel mit Deckkraft: 0 den Inhalt weiterhin auswählen, kopieren/einfügen, etc., obwohl keine sichtbare Text-Hervorhebung bei der Auswahl ist.