Tengo un 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");
}
La función show agrega display:block
. Pero me gustaría agregar en display:inline-block
lugar de bloquear.
Respuestas:
En lugar de
show
, intente usar CSS para ocultar y mostrar el contenido.fuente
show
($("#id").show(500)
), simplemente agregue lacss
función:$("#id").show(500).css("display", "inline-block");
$('.tab-content').addClass('hidden'); (...) $('#' + id).removeClass('hidden');
En el CSS:.hidden { display: none !important }
display
, debe agregar una clase en su css condisplay:inline-block;
luego llamarhide()
yshow()
usar la identificación del elemento. Este es un código más limpio y predecible y más fácil de diseñar.hide()
por js en la carga de la página. El ajuste#element{display:inline-block;display:none;}
no funciona. Creo que la solución más limpia es$('#element').fadeIn().addClass('displaytype');
: mejor que la respuesta anterior, porque puede establecer diferentes.displaytype
s en css y tener una función que muestre en js. Vea mi respuesta aquí: stackoverflow.com/questions/1091322/…Establecer la propiedad CSS después de haber usado
.show()
debería funcionar. Quizás esté apuntando al elemento incorrecto en su página HTML.Pero si no está utilizando ningún efecto de
.show(), .hide()
por qué no establece esas propiedades CSS manualmente como:fuente
Use css () justo después de show () o fadeIn () así:
fuente
yo lo hice
Funciona de maravilla.
fuente
La solución de Razz funcionaría para los métodos
.hide()
y.show()
pero no funcionaría para el.toggle()
método.Dependiendo del escenario, tener una clase css
.inline_block { display: inline-block; }
y llamar me$(element).toggleClass('inline_block')
resuelve el problema.fuente
Puedes usar animar insted de show / hide
Algo como esto:
fuente
prueba esto:
fuente
show()
en esto no tiene sentido. Esto es lo mismo que$('#foo').css('display','inline-block');
show
opciones únicas .Creo que desea tanto la animación como establecer la propiedad de visualización al final. En ese caso, es mejor que use la
show()
devolución de llamada como se muestra a continuaciónDe esta forma logrará los dos resultados.
fuente
inline-block
modo solo después de que se ejecutara toda la animación. Eso significa que "estallaría" entreblock
yinline-block
después de los 400 ms.fuente
en realidad, jQuery simplemente borra el valor de la propiedad 'display' y no lo establece en 'block' (vea la implementación interna de jQuery.showHide ()) -
...
...
Tenga en cuenta que puede anular $ .fn.show () / $. Fn.hide (); almacenar la visualización original en el elemento en sí mismo cuando se oculta (por ejemplo, como un atributo o en $ .data ()); y luego aplicarlo nuevamente cuando se muestra.
Además, el uso de CSS importante! probablemente no funcionará aquí, ya que establecer un estilo en línea suele ser más fuerte que cualquier otra regla
fuente
El mejor .let es padre
display :inline-block
o agrega un padrediv
que CSS solo tienedisplay :inline-block
.fuente
La mejor manera es agregar un sufijo importante al selector.
Ejemplo:
fuente
!important
es que es importante no usarlo.