一枫红叶QIU
慕粉3894160
qq_答案_8
我试了上述代码可以运行。
qq_零_137
测试了一下谷歌和IE都正常
jing0925
因为浏览器版本问题,现在浏览器对body这个元素的dom对象(document.body)处理和其他元素是一致的,不再存在document.body.scroll宽高小于浏览器宽高时的特殊处理。scroll的宽高在不出现滚动的情况下跟client可视区域宽高(content+padding),所以就是你上面的结果。
半俗半雅半疯癫93
精慕门4072777
重新试了一下,把<!DOCTYPE html>里面的html去掉就好了,请问大家谁知道是什么原因吗?
余影拾光
你本身这个页面进去时,是不是没有滚动条。既然没有默认刷新到0了应该 这玩意 意义不大 掌握几个常见的就行了
余影拾光
不清除你的具体是什么原因,可能没有刷新??但是直接在控制台打印就可以出来答案了啊
hengyiyuan
是的.
qq_鹬_1
你看一下应该是childrenDiv的CSS里面设定了box-sizing:border-box,这个属性会使border和padding全会在你设置的宽度和高度内部,所以此时的outerHeight()和outerWidth()值是300+margin*2
逍遥迷望
问题原因:打开浏览器F12 查看body元素可以发现,发生了父子元素间垂直外边距合并问题
【父子元素间垂直外边距合并】现象
父元素的上(下)margin会和子元素上(下)发生合并,值为两者之间最大的那个值,且这个值会成为父元素的上(下)margin
【父子元素间垂直外边距合并】触发条件:
父元素木有设置边框(1)或则padding(2),并且子元素前面(3)或则后面(4)都没有另外一个子元素(只要打破1或则2,又或则3和4一起打破,就能防止发生这种现象)
解决办法有两个:
方法一:因为发生了父子元素间垂直外边距合并问题,此时body的scrollHeight不再是整个文档的高度,但html(document.documentElement)的scrollHeight仍然是整个文档的高度,So
var whHeight=document.documentElement.scrollHeight;
方法二:解决父子元素间垂直外边距合并问题,So我们需要修改style
body{margin:0;}
//因为scrollDiv只设置了上外边距,所以这里只需要设置一个before,如果还设置了下边距,可以用:after
body::before{
content:'';
display:'table';
}以上,希望能帮到这位道友
weibo_阿红_75269_03683181
不知道是不是浏览器解析不一样,这个把滚动条的宽高减去了。
加咖啡喵
我这样写的 滚动条是17:
function getScrollBar(){
var el= document.createElement('p'),
styles={
width:'100px',
height:'100px',
overflowY:'scroll'
},i,scrollBarWidth;
el.innerHTML = "12333";
for(i in styles){
el.style[i]=styles[i]
}
document.body.appendChild(el);
var scrollBarWidth = el.offsetWidth-el.clientWidth;
el.remove();
return scrollBarWidth;
}
console.log(getScrollBar());
一大粒米粒儿
因为没有设置border的宽度,所以不需要考虑左右border的宽度
当2
DOM没加载完毕 js找不到DOM对象 js放body里面的底下
当2
我帮你测试了一下 没有问题的
qq_YUG_0


console.log(window.screen.height) 获取的屏幕高度
console.log(window.screen.availHeight) 获取屏幕可利用高度不包含屏幕属性标题栏任务栏
console.log(window.outerHeight)
所以window.outerHeight不包括最下边任务栏
qq_唯爱YOU_0
你都没有获取到.mdiv这个盒子,在括号后边加个[0]即可,document.getElementsByClassName('mdiv')[0]
xiaoxiaoxiao遥
是一个js框架,06年就出来了,让dom操作更简单易学,还有很多扩展的插件
qq_乐乐乐_1
WPS的截图就有啊。
慕粉3397126
在<head>标签里面加上<meta charset="UTF-8">就好了,解析中文字体的,不用中文字体就会乱码
夢想起航
qq_谜离_03319966
console是window对象的属性,直接调用console.log即可
qq_谜离_03319966
是的~~~~~
qq_谜离_03319966
window.resize()就可以实时更新高度
派大星星
提问的方式也要改进,你那630是用哪个方法执行得出的,说都没说,叫别人怎么分析,怎么解答你
dd093380112
$("div").height();
一家之煮
window.onload=function(){var person={ name:"张三",old:30 };for( i in person){ alert(i); alert(person[i]);}}//遍历(枚举)对象obj(person)的属性 ,对象的属性(name,old)用for(i in person )分别赋值给变量 i.再通过person[i]输出person每个属性的值。其实person.name=person[name];person.old=person[old] 只不过中通过for(i in person ){ alert(i); }遍历属性而已。
一家之煮
你可以把浏览器更新到最新版本试试