Ich habe einen Code wie diesen:
function switch_tabs(obj) {
$('.tab-content').hide();
$('.tabs a').removeClass("selected");
var id = obj.attr("rel");
$('#' + id).show();
obj.addClass("selected");
}
Die Show-Funktion fügt hinzu display:block
. Aber ich möchte display:inline-block
anstelle von Block hinzufügen .
Antworten:
show
Versuchen Sie stattdessen , CSS zu verwenden, um den Inhalt auszublenden und anzuzeigen.quelle
show
($("#id").show(500)
) nutzen möchten , fügen Sie einfach diecss
Funktion hinzu:$("#id").show(500).css("display", "inline-block");
$('.tab-content').addClass('hidden'); (...) $('#' + id).removeClass('hidden');
In der CSS:.hidden { display: none !important }
display
, müssen Sie eine Klasse in Ihrem CSS hinzufügen, indem Siedisplay:inline-block;
dann aufrufenhide()
undshow()
die ID des Elements verwenden. Dies ist sauberer und vorhersehbarer Code und einfacher zu stylen.hide()
von js beim Laden der Seite benötigen würden . Einstellung#element{display:inline-block;display:none;}
geht nicht. Ich denke, die sauberste Lösung ist$('#element').fadeIn().addClass('displaytype');
- besser als die Antwort oben, weil Sie verschiedene.displaytype
s in CSS setzen können und eine Anzeigefunktion in js haben. Siehe meine Antwort hier: stackoverflow.com/questions/1091322/…Das Festlegen der CSS-Eigenschaft nach der Verwendung
.show()
sollte funktionieren. Möglicherweise zielen Sie auf das falsche Element auf Ihrer HTML-Seite.Wenn Sie jedoch keine Effekte verwenden,
.show(), .hide()
warum setzen Sie diese CSS-Eigenschaften nicht manuell wie folgt?quelle
Verwenden Sie css () direkt nach show () oder fadeIn () wie folgt:
quelle
Ich habe das gemacht
klappt wunderbar.
quelle
Razz 'Lösung würde für die
.hide()
und.show()
Methoden funktionieren, aber nicht für die.toggle()
Methode.Je nach Szenario löst eine CSS-Klasse
.inline_block { display: inline-block; }
und ein Aufruf$(element).toggleClass('inline_block')
das Problem für mich.quelle
Sie können animieren insted of show / hide verwenden
Etwas wie das:
quelle
Versuche dies:
quelle
show()
ist sinnlos. Dies ist das gleiche wie$('#foo').css('display','inline-block');
show
Optionen zu erhalten.Ich denke, Sie möchten sowohl die Animation als auch die Anzeigeeigenschaft am Ende festlegen. In diesem Fall verwenden Sie den
show()
Rückruf besser wie unten gezeigtAuf diese Weise erzielen Sie beide Ergebnisse.
quelle
inline-block
Modus wird erst angezeigt, nachdem die gesamte Animation ausgeführt wurde. Das heißt, es würde zwischenblock
undinline-block
nach den 400ms "knallen" .quelle
Tatsächlich löscht jQuery einfach den Wert der Eigenschaft 'display' und setzt ihn nicht auf 'block' (siehe interne Implementierung von jQuery.showHide ()) -
...
...
Bitte beachten Sie, dass Sie $ .fn.show () / $. Fn.hide () überschreiben können; Speichern der Originalanzeige im Element selbst beim Ausblenden (z. B. als Attribut oder in $ .data ()); und dann beim Anzeigen wieder anwenden.
Auch mit CSS wichtig! wird hier wahrscheinlich nicht funktionieren - da das Festlegen eines Inline-Stils normalerweise stärker ist als jede andere Regel
quelle
Das beste .let ist übergeordnet
display :inline-block
oder fügt ein übergeordnetes Element hinzu,div
das nur über CSS verfügtdisplay :inline-block
.quelle
Am besten fügen Sie dem Selektor ein wichtiges Suffix hinzu.
Beispiel:
quelle
!important
ist , dass es wichtig nicht zu benutzen.