【经验总结】关于使用某些第三方插件库元素设置display:none后重新show不显示的问题;(display、opacity、宽高0的使用场景)

时间:2023-03-08 23:22:13
【经验总结】关于使用某些第三方插件库元素设置display:none后重新show不显示的问题;(display、opacity、宽高0的使用场景)

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就不会刷新了。