display:none 直接取消元素所占用的位置(但是元素还是存在的),后面元素看他就相当于不存在了;
opacity:0 隐藏,但是其依旧占用位置;
height、width:0 和display:none类似,但是在某些情况下,宽高为零重新展现时元素不刷新,display:none 重新show时元素刷新。
此处以easyUI 中的datagrid为例:
在代码中有时需要暂时隐藏datagrid,之后再点击某个按钮时才让其显示,所以自然的为其加上了一个display:none 的属性,在点击按钮时调用show()函数重新将其display属性为:block,但是发现datagrid并没有展现出来,浏览器中查看元素属性,发现easyUI已经封装好的元素中好多元素的height属性值为0,分析是因为display:none属性导致的。所以我们换种思路,用opacity:0,来隐藏改元素,显示时使用opacity:1来显示,就不会影响了。
html5 flash中也存在这种问题:
在包含flash的页面中,如果将页面属性设为display:none,之后重新show时会发现,flash会重新刷新(在某些情况下希望操作flash后再重新展现时,flash还处于原来隐藏前的状态)。这时可以手动设置隐藏式页面宽高为0,展现时再重新设置宽高,这样flash就不会刷新了。