最近的项目需要一个点击,然后弹出遮罩层的效果,于是在页面中加了一个遮罩层(设定高度为100%)。
但是今天偶然发现,遮罩层只能遮住一屏的高度,若页面比一屏高的话,只要向下滚就可以发现没有被遮住的部分。
查资料得知,出现这种现象的原因是虽然设置了遮罩层的高度为100%,但是js代码执行的时候自动获取的其实还是当前屏幕的高度,因此导致它只能遮住一屏的内容。那么解决的方案也就是获取屏幕高度和当前页面高度,选取较大的一个设置为遮罩层的高度即可。
修正的代码如下,亲测有效:
var doc = document.documentElement;
relHeight = (doc.clientHeight > doc.scrollHeight) ? doc.clientHeight : doc.scrollHeight;//获取屏幕高度和当前页面高度中的较大值
document.getElementById('bg').style.height = relHeight+'px';//id为bg的div就是我页面中的遮罩层
需要注意的是,在设置遮罩层的高度的时候后面一定要拼接上‘px’这个字符串,开始时我没有拼接,发现代码完全无效,纠结了很久……