Eu tenho algum código como este:
function switch_tabs(obj) {
$('.tab-content').hide();
$('.tabs a').removeClass("selected");
var id = obj.attr("rel");
$('#' + id).show();
obj.addClass("selected");
}
A função show adiciona display:block
. Mas eu gostaria de adicionar em display:inline-block
vez de bloquear.
Respostas:
Em vez de
show
, tente usar CSS para ocultar e mostrar o conteúdo.fonte
show
($("#id").show(500)
), basta acrescentar acss
função a ele:$("#id").show(500).css("display", "inline-block");
$('.tab-content').addClass('hidden'); (...) $('#' + id).removeClass('hidden');
No CSS:.hidden { display: none !important }
display
você precisa adicionar uma classe no seu css edisplay:inline-block;
depois chamarhide()
eshow()
usar o ID do elemento. Este é um código mais limpo, previsível e mais fácil de estilizar.hide()
js no carregamento da página. A configuração#element{display:inline-block;display:none;}
não funciona. Eu acho que a solução mais limpa é$('#element').fadeIn().addClass('displaytype');
- melhor do que responder acima, porque você pode definir.displaytype
s diferentes em css e ter uma função mostrando em js. Veja minha resposta aqui: stackoverflow.com/questions/1091322/…Definir a propriedade CSS depois de ter usado
.show()
deve funcionar. Talvez você esteja direcionando o elemento errado na sua página HTML.Mas se você não estiver usando nenhum efeito,
.show(), .hide()
por que não definir essas propriedades CSS manualmente, como:fonte
Use css () logo após show () ou fadeIn () assim:
fonte
eu fiz isso
Funciona como um encanto.
fonte
A solução de Razz funcionaria para os métodos
.hide()
e.show()
, mas não funcionaria para o.toggle()
método.Dependendo do cenário, ter uma classe css
.inline_block { display: inline-block; }
e chamar$(element).toggleClass('inline_block')
resolve o problema para mim.fonte
Você pode usar insted animado de mostrar / ocultar
Algo assim:
fonte
tente isto:
fonte
show()
nisso é inútil. É o mesmo que:$('#foo').css('display','inline-block');
show
opções exclusivas .Eu acho que você quer a animação e definir a propriedade display no final. Nesse caso, é melhor usar o
show()
retorno de chamada, como mostrado abaixoDessa forma, você alcançará os dois resultados.
fonte
inline-block
modo somente depois que toda a animação fosse executada. Isso significa que ele "pop" entreblock
einline-block
após os 400ms.fonte
na verdade, o jQuery simplesmente limpa o valor da propriedade 'display' e não o define como 'block' (consulte a implementação interna de jQuery.showHide ()) -
...
...
Observe que você pode substituir $ .fn.show () / $. Fn.hide (); armazenar a exibição original no próprio elemento ao ocultar (por exemplo, como um atributo ou no $ .data ()); e depois aplicá-lo novamente ao mostrar.
Além disso, usando css importante! provavelmente não funcionará aqui - já que definir um estilo embutido geralmente é mais forte do que qualquer outra regra
fonte
O melhor .let é pai
display :inline-block
ou adicione um pai odiv
que apenas o CSS possuidisplay :inline-block
.fonte
A melhor maneira é adicionar um sufixo importante ao seletor.
Exemplo:
fonte
!important
que é importante não usá-lo.