关于元素尺寸,一般地,有偏移大小offset、客户区大小client和滚动大小scroll。前文已经介绍过偏移属性,后文将介绍scroll滚动大小,本文主要介绍客户区大小client
成都创新互联公司是一家集网站建设,湛江企业网站建设,湛江品牌网站建设,网站定制,湛江网站建设报价,网络营销,网络优化,湛江网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。客户区大小client指的是元素内容及其内边距所占据的空间大小
clientHeight
clientHeight属性返回元素节点的客户区高度
clientHeight = padding-top + height + padding-bottom
clientWidth
clientWidth属性返回元素节点的客户区宽度
clientWidth = padding-left + height + padding-right
<div id="test" ></div><script>//120(10+100+10)console.log(test.clientHeight); console.log(test.clientWidth);</script>
[注意]滚动条宽度不计算在内
<div id="test" ></div><script>//103(120-17),滚动条宽度为17pxconsole.log(test.clientHeight); console.log(test.clientWidth);</script>
<div id="test" > 内容<br>内容<br>内容<br>内容<br>内容<br>内容<br></div><script>//83(100-17)console.log(test.clientHeight);</script>
当height和纵向padding的和为0(以及小于17px的情况)时,如果仍然存在滚动条,各浏览器表现不一样
<div id="test" ></div><script>//chrome/safari:-17(0-17)//firefox/IE:0console.log(test.clientHeight);</script>
<div id="test" ></div><script>//chrome/safari:-7(10-17)//firefox/IE:0console.log(test.clientHeight);</script>
bug
如果设置overflow:scroll,使得滚动条始终存在,当不设置高度height值时,各个浏览器表现不一样。firefox存在一个最小高度为34px的垂直滚动条,IE7-浏览器存在一个最小高度为19px的垂直滚动条,而其他浏览器的垂直滚动条无最小高度
所以,当clientHeight的值小于34px时,firefox会返回34;当clientHeight的值小于19px时,IE7-会返回19
<div id="test" ></div><script>//chrome/IE8+/safari:0(因为height和padding都是0)//firefox:34(设置overflow:scroll之后,默认存在一个高34px的垂直滚动条)//IE7-:19(默认存在一个高19px的垂直滚动条)console.log(test.clientHeight);</script>
<div id="test" >内容</div><script>//chrome/IE8+/safari:20(20*1)//firefox:34(20<34)//IE7-:20(20>19)console.log(test.clientHeight);</script>
<div id="test" >内容</div><script>//chrome/IE8+/safari:40(20*1+20)//firefox:40(40>34)//IE7-:40(40>19)console.log(test.clientHeight);</script>
clientLeft
clientLeft属性返回左边框的宽度
clientTop
clientTop属性返回上边框的宽度
<div id="test" ></div><script>//1 1console.log(test.clientLeft); console.log(test.clientTop);</script>
[注意]如果display为inline时,clientLeft属性和clientTop属性都返回0
<div id="test" ></div><script>//0 0console.log(test.clientLeft); console.log(test.clientTop);</script>
常用document.documentElement的client属性来表示页面大小(不包含滚动条宽度)
[注意]在IE7-浏览器中,<html>元素默认存在垂直滚动条
<body ><script>//1903(1920-17)console.log(document.documentElement.clientWidth);//930(947-17)console.log(document.documentElement.clientHeight);</script>
另一个对常用的表示页面大小的属性是window.innerHeight和innerWidth属性(包含滚动条宽度)
innerHeight和innerWidth表示的是浏览器窗口大小减去菜单栏、地址栏等剩余的页面尺寸,由于滚动条是属于页面的,所以包含滚动条
[注意]IE8-浏览器不支持innerHeight和innerWidth属性
<body ><script>//1920console.log(window.innerWidth);//947console.log(window.innerHeight);</script>
如果没有滚动条,这两类属性在电脑端表示同样的值,但是却表示不同的含义。在移动端,innerWidth和innerHeight表示的是视觉视口,即用户正在看到的网站的区域;而document.documentElement.clientWidth和clientHeight表示的是布局视口,指CSS布局的尺寸。详细情况移步至此
[注意]页面的客户区大小和页面的实际大小是不同的,页面的实际大小将由后文的scroll滚动大小来表示
【1】所有客户区client属性都是只读的
<div id="test" ></div><script>console.log(test.clientHeight);//IE8-浏览器会报错,其他浏览器则静默失败test.clientHeight = 10; console.log(test.clientHeight);</script>
【2】如果给元素设置了display:none,则客户区client属性都为0
<div id="test" ></div><script>console.log(test.clientHeight);//0console.log(test.clientTop);//0</script>
【3】每次访问客户区client属性都需要重新计算,重复访问需要耗费大量的性能,所以要尽量避免重复访问这些属性。如果需要重复访问,则把它们的值保存在变量中,以提高性能
<div id="test" ></div> <script>console.time("time");for(var i = 0; i < 100000; i++){ var a = test.clientHeight; } console.timeEnd('time');//66.798ms</script>
<div id="test" ></div> <script>console.time("time");var a = test.clientHeight;for(var i = 0; i < 100000; i++){ var b = a; } console.timeEnd('time');//1.705ms</script>
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
网页题目:客户区尺寸client-创新互联
文章链接:https://www.cdcxhl.com/article18/cehodp.html
成都网站建设公司_创新互联,为您提供网站维护、企业建站、网站策划、网站制作、响应式网站、域名注册
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联