J'ai un code comme celui-ci:
function switch_tabs(obj) {
$('.tab-content').hide();
$('.tabs a').removeClass("selected");
var id = obj.attr("rel");
$('#' + id).show();
obj.addClass("selected");
}
La fonction show ajoute display:block
. Mais je voudrais ajouter display:inline-block
au lieu de bloquer.
Réponses:
Au lieu de cela
show
, essayez d'utiliser CSS pour masquer et afficher le contenu.la source
show
($("#id").show(500)
), ajoutez-y simplement lacss
fonction:$("#id").show(500).css("display", "inline-block");
$('.tab-content').addClass('hidden'); (...) $('#' + id).removeClass('hidden');
Dans le CSS:.hidden { display: none !important }
display
vous devez ajouter une classe dans votre css avecdisplay:inline-block;
puis appelerhide()
etshow()
utiliser l'id de l'élément. C'est un code plus propre et plus prévisible et plus facile à styliser.hide()
js lors du chargement de la page. Le réglage#element{display:inline-block;display:none;}
ne fait pas l'affaire. Je pense que la solution la plus propre est$('#element').fadeIn().addClass('displaytype');
- meilleure que la réponse ci-dessus, car vous pouvez définir différents.displaytype
s dans css et avoir une fonction d'affichage dans js. Voir ma réponse ici: stackoverflow.com/questions/1091322/…La définition de la propriété CSS après avoir utilisé
.show()
devrait fonctionner. Vous ciblez peut-être le mauvais élément de votre page HTML.Mais si vous n'utilisez aucun effet,
.show(), .hide()
pourquoi ne pas définir ces propriétés CSS manuellement comme:la source
Utilisez css () juste après show () ou fadeIn () comme ceci:
la source
Je l'ai fait
fonctionne comme un charme.
la source
La solution de Razz fonctionnerait pour les méthodes
.hide()
et.show()
mais ne fonctionnerait pas pour la.toggle()
méthode.Selon le scénario, avoir une classe css
.inline_block { display: inline-block; }
et appeler$(element).toggleClass('inline_block')
résout le problème pour moi.la source
Vous pouvez utiliser l' animation insted de show / hide
Quelque chose comme ça:
la source
essaye ça:
la source
show()
dedans est inutile. C'est la même chose que$('#foo').css('display','inline-block');
show
options uniques .Je pense que vous voulez à la fois l'animation et définir la propriété d'affichage à la fin. Dans ce cas, vous feriez mieux d'utiliser le
show()
rappel comme indiqué ci-dessousDe cette façon, vous obtiendrez les deux résultats.
la source
inline-block
mode qu'après l'exécution de toute l'animation. Cela signifie qu'il «pop» entreblock
etinline-block
après les 400 ms.la source
en fait, jQuery efface simplement la valeur de la propriété 'display', et ne la définit pas sur 'block' (voir l'implémentation interne de jQuery.showHide ()) -
...
...
Veuillez noter que vous pouvez remplacer $ .fn.show () / $. Fn.hide (); stocker l'affichage original dans l'élément lui-même lors du masquage (par exemple en tant qu'attribut ou dans $ .data ()); puis appliquez-le à nouveau lors de l'affichage.
De plus, l'utilisation de css est importante! ne fonctionnera probablement pas ici - car la définition d'un style en ligne est généralement plus forte que toute autre règle
la source
Le meilleur .let c'est parent
display :inline-block
ou ajouter un parentdiv
ce que CSS n'a quedisplay :inline-block
.la source
Le meilleur moyen est d'ajouter le suffixe! Important au sélecteur.
Exemple:
la source
!important
est qu'il est important de ne pas l'utiliser.