JS中float对scrollHeight、clientHeight、offsetHeight的影响

背景:在项目中使用百度地图API javascript库 InfoBox时,发现代码:

 /**
         * 得到infobox的高度跟宽度
         * @return none
         */
        _getInfoBoxSize: function(){
         this._boxWidth = parseInt(this._div.offsetWidth,10);
         this._boxHeight = parseInt(this._div.offsetHeight,10);
        },

获得的this._boxHeight的值为0;经分析,是我们在内容样式中设置的有float属性。所以结合前一篇(JS中offsetHeight/offsetWidth,clientHeight/clientWidth,scrollHeight/scrollWidth详解)手动测试float对scrollHeight、clientHeight、offsetHeight的影响。

测试环境:IE11

测试1:未使用float

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
    <style type="text/css">
        div#content {           
            width:100px; 
            border:3px solid red;
            margin:15px;
            padding:5px;
        }
        div#a {
            width: 50px;
            border: 2px solid green;
            margin:11px;
            padding:3px;
        }
        div#b {
            width:20px;
            height:20px;
            border:1px solid blue;
            margin:7px;
            padding:2px;
        }
    </style>
</head>
<body>
    <div id="content">
        <div id="a">
            <div id="b"></div>
        </div>
    </div>
</body>
</html>

测试结果:

content.scrollHeight:82;content.clientHeight:82;content.offsetHeight:88
a.scrollHeight:46;a.clientHeight:46;a.offsetHeight:50
b.scrollHeight:24;b.clientHeight:24;b.offsetHeight:26

测试2:对标签<div id="a">应用“float:left”

测试结果:

content.scrollHeight:66;content.clientHeight:10;content.offsetHeight:16
a.scrollHeight:46;a.clientHeight:46;a.offsetHeight:50
b.scrollHeight:24;b.clientHeight:24;b.offsetHeight:26

测试3:对标签<div id="b">应用“float:left”

content.scrollHeight:54;content.clientHeight:42;content.offsetHeight:48
a.scrollHeight:36;a.clientHeight:6;a.offsetHeight:10
b.scrollHeight:24;b.clientHeight:24;b.offsetHeight:26

测试4:对标签<div id="a">和<div id="b">应用“float:left”

测试结果:

content.scrollHeight:66;content.clientHeight:10;content.offsetHeight:16
a.scrollHeight:46;a.clientHeight:46;a.offsetHeight:50
b.scrollHeight:24;b.clientHeight:24;b.offsetHeight:26

测试分析:

1:浮动元素会生成一个块级框,而不论它本身是何种元素(摘自CSS手册)。

2:浮动元素只对其父类不是浮动元素的scrollHeight、clientHeight、offsetHeight有影响。

实际应用:

因此,在使用百度地图API javascript库中的InfoBox时,需要为标签设置float属性。

参考示例:

var infoBox = new BMapLib.InfoBox(map,"百度地图api",{boxStyle:{background:"url(‘tipbox.gif‘) no-repeat center top",width: "200px",float:"left"},closeIconMargin: "10px 2px 0 0",enableAutoPan: true ,alignBottom: false});
时间: 2024-12-13 09:50:12

JS中float对scrollHeight、clientHeight、offsetHeight的影响的相关文章

JS中Float类型加减乘除 修复

MXS&Vincene  ─╄OvЁ  &0000027─╄OvЁ  MXS&Vincene MXS&Vincene  ─╄OvЁ:今天很残酷,明天更残酷,后天很美好,但是绝大部分人是死在明天晚上,只有那些真正的英雄才能见到后天的太阳. MXS&Vincene  ─╄OvЁ:We're here to put a dent in the universe. Otherwise why else even be here? 正文>>>>>

height、clientHeight、scrollHeight、offsetHeight区别

1.top 此属性仅仅在对象的定位(position)属性被设置时可用.否则,此属性设置会被忽略. 复制代码 代码如下: <div style="background-color:red; position:absolute; width:100px; height:100px;"> <p style=" position:absolute; top:-5px;">测试top</p> </div> 上面是一个段落P包含

DOM元素中height, clientHeight,offsetHeight等,到底是什么?

<div  style="height:200px;padding:10px;border:1px solid green;"></div> 对于上面的div,它的border的height有多高?答案是200+10*2+1*2=222. 直接上结论:在style或css样式中的 height:200px  指的是内容可视区的高度,不含内边距,不含border,不含外边距,而不是div的高度. 以下结论在 firefox.chrome.IE10+.QQ浏览器中都

clientHeight ,offsetHeight,style.height,scrollHeight的区别与联系

style.height 包括元素的滚动条,不包括边框 clientHeight 不包括元素的滚动条和边框,只有在没有元素的滚动条的情况下,style.height相等于clientHeight offsetHeight 包括元素的滚动条和边框,只有在没有元素的滚动条和边框的情况下,offsetHeight==style.height==clientHeight scrollHeight offsetHeight+scrollTop,只有在没有元素的滚动条和边框和滚动时的情况下,offsetHe

clientHeight ,offsetHeight,style.height,scrollHeight有区别与联系

style.height 包括 元素的滚动条,不包括边框clientHeight 不包括元素的滚动条和边框,只有在没有元素的滚动条的情况下,style.height相等于clientHeightoffsetHeight 包括元素的滚动条和边框,只有在没有元素的滚动条和边框的情况下,offsetHeight==style.height==clientHeightscrollHeight offsetHeight+scrollTop,只有在没有元素的滚动条和边框和滚动时的情况下,offsetHeig

document.body的一些用法以及js中的常见问题

document.body的一些用法以及js中的常见问题 网页可见区域宽: document.body.clientWidth; 网页可见区域高: document.body.clientHeight; 网页可见区域宽: document.body.offsetWidth    (包括边线的宽); 网页可见区域高: document.body.offsetHeight   (包括边线的宽); 网页正文全文宽: document.body.scrollWidth; 网页正文全文高: documen

js中的各种宽高以及位置总结

在javascript中操作dom节点让其运动的时候,常常会涉及到各种宽高以及位置坐标等概念,如果不能很好地理解这些属性所代表的意义,就不能理解js的运动原理,同时,由于这些属性概念较多,加上浏览器之间 实现方式不同,常常会造成概念混淆,经过研究之后,这里来进行一个总结. 第一部分:DOM对象 1.1只读属性 所谓的只读属性指的是DOM节点的固有属性,该属性只能通过js去获取而不能通过js去设置,而且获取的值是只有数字并不带单位的(px,em等),如下: 1)clientWidth和client

js中offsetTop、clientTop、scrollTop

Js中的offsetTop.clientTop.scrollTop各属性介绍 页可见区域宽: document.body.clientWidth;  /document.documentElement.clientWidth网页可见区域高: document.body.clientHeight;网页可见区域宽: document.body.offsetWidth   (包括边线的宽);网页可见区域高: document.body.offsetHeight (包括边线的宽);网页正文全文宽: do

js中各种距离clientWidth

由于本人对原生js中各种距离得应用和区分不是很好,特别总结了一下: clientWidth是对象看到的宽度(不含边线,即border)scrollWidth是对象实际内容的宽度(若无padding,那就是边框之间距离,如有padding,就是左padding和右padding之间距离).offsetWidth是指对象自身的宽度,整型,单位像素(含边线,如滚动条的占用的宽,值会随着内容的输入而不断改变). scrollHeight: 获取对象的滚动高度.scrollLeft:设置或获取位于对象左边