官方文档:
这三个函数是动画的基础,大部分动画都包含了出现和隐藏。jQuery的动画均以$.fn.animate函数为基础。
show和hide是改变元素的{width;height;opacity}来实现动画,动画结束后再{display}掉。
1、show和hide不带参数时,没有使用animate
$().show();
//相当于
$().css({'display':'block'});
$().hide();
//相当于
$().css({'display':'none'});
2、show会缓存display的值
①如果元素css设置了{display}显示值(block,inline,list-item等),当隐藏后再次显示会使用你设置的值;inline-block隐藏再显示时会认为是block。
<style type="text/css">
.div{display:inline;}
</style>
<script type="text/javascript">
$('.div').css('display');//inline
$('.div').hide();
$('.div').show();
$('.div').css('display');//inline
</script>
<style type="text/css">
.span{display:block;}
</style>
<script type="text/javascript">
$('.span').css('display');//block
$('.span').hide();
$('.span').show();
$('.span').css('display');//block
</script>
<style type="text/css">
.p{display:list-item;}
</style>
<script type="text/javascript">
$('.p').css('display');//list-item
$('.p').hide();
$('.p').show();
$('.p').css('display');//list-item
</script>
inline-block隐藏再显示时会认为是block:
<style type="text/css">
.p{display:inline-block;}
</style>
<script type="text/javascript">
$('.p').css('display');//inline-block
$('.p').hide();
$('.p').show();
$('.p').css('display');//block
</script>
②如果元素css没有设置{display}的显示值,块状元素会block,行内元素会inline。
3、toggle是封装了的show和hide
借用官网的例子:
$('#foo').toggle(showOrHide);
//相当于
if ( showOrHide == true ) {
$('#foo').show();
} else if ( showOrHide == false ) {
$('#foo').hide();
}