overflow:hidden带来的问题
即时更新:由@drunber提供的解决办法:设置父元素的padding或者border、float、position:absolute也可以解决问题,经测试验证通过。但是有一点需要说明的是:上下padding和border是必须要有数值的,设置为0无效。
但是对于动画来说,overflow:hidden是必须要设置的,否则里面的文本不会被遮盖。
———===========—– 即时更新分界线 ——===========———–
最近接到个需求,在搜索结果中添加下拉动画,高度和透明度都需要渐变。在测试过程中,遇到这样的一个问题:在一个div容器中包含了几个p标签,而且全在默认样式的情况,这样通过offsetHeight,clientWidth,scrollHeight等等获得div的高度,之后动态设置div的overflow样式属性为hidden,这样上面所获得的高度不准确了,《点击测试吧》,这样的后果就是动画被和谐了。
从这里的overflow:hidden对div的高度的差异可以看出:容器包含内容的解析原理。正常默认情况下,比如div包含一个p标签,这样div的宽高是会忽略p标签默认的margin值;但是一旦给div设置了overflow:hidden之后,div的实际宽高就需要加上p的margin值了。不过值得庆幸的是,在给div设置了overflow:hidden之后,通过offsetHeight等来获取div的宽高,是准确的。
从上面的分析中对于开头遇到的问题,就可以有三种方法来解决了:第一、在动态设置overflow:hidden之后来获取容器的高度,《点点测试吧》;第二、将p标签的margin清0处理,《再点点呗》;第三、干脆就不要使用p标签,改用没有默认margin的div吧,很勉强的方法,《最后点击测试下》。
Tip: 经过测试发现,设置overflow属性为hidden、auto都存在上面所说的情况。