JavaScript中獲取高度和寬度函數(shù)總結(jié)
更新時(shí)間:2014年10月08日 09:59:53 投稿:junjie
這篇文章主要介紹了JavaScript中獲取高度和寬度函數(shù)總結(jié),例如獲取視窗大小、可見(jiàn)區(qū)域?qū)?、可?jiàn)區(qū)域高、獲取元素自身大小等,很方便的一個(gè)總結(jié),需要的朋友可以參考下
html代碼:
復(fù)制代碼 代碼如下:
<body>
<div class="father" id="father">
<h3>這是父元素,屏幕分辨率是1366*768</h3>
<div class="son" id="son">
<h3>這是子元素,祝大家國(guó)慶快樂(lè) </h3>
<div class="grandson" id="grandson">
<h3>這是孫子元素,祝大家國(guó)慶快樂(lè) </h3>
<h3>我的博客:www.dbjr.com.cn</h3>
<h3>程序愛(ài)好者QQ群:</h3>
<h3>259280570 </h3>
<h3>歡迎你加入 </h3>
<h3>國(guó)慶快樂(lè) </h3>
</div>
</div>
</div>
<div class="data">
<h3>數(shù)據(jù)輸出</h3>
<div id="data"></div>
</div>
</body>
css:
復(fù)制代碼 代碼如下:
*
{
margin: 0 auto;
}
.father
{
width: 500px;
height: 750px;
border: 5px solid red;
float: left;
}
.son
{
width: 400px;
height: 300px;
border: 5px solid black;
margin: 20px;
}
.grandson
{
width: 150px;
height: 100px;
border: 5px solid blue;
margin: 20px;
overflow: auto;
}
.data
{
width: 600px;
height: 750px;
border: 5px solid red;
float: left;
margin-left: 15px;
}
js:
復(fù)制代碼 代碼如下:
window.onload = function()
{
/*獲取元素對(duì)象*/
var father = document.getElementById('father');
var son = document.getElementById('son');
var grandson = document.getElementById('grandson');
var data = document.getElementById('data');
data.innerHTML = "<h3>獲取視窗大小(跟窗口大小有關(guān))</h3>";
data.innerHTML += "document.body可見(jiàn)區(qū)域?qū)? "+document.body.clientWidth+"<br/>";
data.innerHTML += "document.body可見(jiàn)區(qū)域高: "+document.body.clientHeight+"<br/>";
data.innerHTML += "window.innerWidth可見(jiàn)區(qū)域?qū)? "+window.innerWidth+"<br/>";
data.innerHTML += "window.innerHeight可見(jiàn)區(qū)域高: "+window.innerHeight+"<br/>";
data.innerHTML += "document.documentElement可見(jiàn)區(qū)域?qū)? "+document.documentElement.clientWidth+"<br/>";
data.innerHTML += "document.documentElement可見(jiàn)區(qū)域高: "+document.documentElement.clientHeight+"<br/>";
data.innerHTML += "<h3>獲取元素自身大小(跟是否有滾動(dòng)條無(wú)關(guān))</h3>";
data.innerHTML += ".son自身寬度(offsetWidth屬性,包括左右邊框):"+son.offsetWidth+"<br/>";
data.innerHTML += ".son自身高度(offsetHeight屬性,包括上下邊框):"+son.offsetHeight+"<br/>";
data.innerHTML += ".son可視寬度(clientWidth屬性,不包括左右邊框):"+son.clientWidth+"<br/>";
data.innerHTML += ".son可視高度(clientHeight屬性,不包括上下邊框):"+son.clientHeight+"<br/>";
data.innerHTML += "<h3>獲取.grandson滾動(dòng)大小和可視大小</h3>";
data.innerHTML += ".grandson滾動(dòng)寬度(scrollWidth屬性):"+grandson.scrollWidth+"<br/>";
data.innerHTML += ".grandson滾動(dòng)高度(scrollHeight屬性):"+grandson.scrollHeight+"<br/>";
data.innerHTML += ".grandson可視寬度(clientWidth屬性,不包括豎直滾動(dòng)條和border):"+grandson.clientWidth+"<br/>";
data.innerHTML += ".grandson可視高度(clientHeight屬性,不包括水平滾動(dòng)條和border):"+grandson.clientHeight+"<br/>";
data.innerHTML += "<h3>獲取.grandson被卷去的大小(跟滾動(dòng)條的位置有關(guān))</h3>";
data.innerHTML += ".grandson被卷去的高(scrollTop屬性,豎直滾動(dòng)條滑到最底端):"+grandson.scrollTop+"<br/>";
data.innerHTML += ".grandson被卷去的左(scrollLeft屬性,水平滾動(dòng)條滑到最右端):"+grandson.scrollLeft+"<br/>";
data.innerHTML += "<h3>獲取瀏覽器窗口位置(跟窗口大小有關(guān))</h3>";
/*
*IE、Chrome、Safari、Opera 都提供了支持 window.screenLeft 和 *window.screenTop,但是Firxfox不支持這個(gè)兩個(gè)屬性;
*Firxfox、Chrome、Safari、Opera 都提供了支持 window.screenX *和 window.screenY,但是 IE 不支持這個(gè)兩個(gè)屬性;
*/
var leftPos = (typeof window.screenLeft == 'number')?window.screenLeft:window.screenX;
var topPos = (typeof window.screenTop == 'number')?window.screenTop:window.screenY;
data.innerHTML += "body網(wǎng)頁(yè)正文部分上(window.screenTop(Y)):"+ topPos+"<br/>";
data.innerHTML += "body網(wǎng)頁(yè)正文部分左(window.screenLeft(X)):"+ leftPos+"<br/>";
data.innerHTML += "<h3>獲取屏幕分辨率</h3>";
data.innerHTML += "屏幕分辨率的高(window.screen.height):"+ window.screen.height+"<br/>";
data.innerHTML += "屏幕分辨率的寬(window.screen.width):"+ window.screen.width+"<br/>";
data.innerHTML += "<h3>獲取屏幕可用的高寬</h3>";
data.innerHTML += "屏幕分辨率的高(window.screen.availHeight):"+ window.screen.availHeight+"<br/>";
data.innerHTML += "屏幕分辨率的寬(window.screen.availWidth):"+ window.screen.availWidth+"<br/>";
data.innerHTML += "<h3>獲取.father的邊框大小</h3>";
data.innerHTML += ".father上邊框(clientTop):"+ father.clientTop+"<br/>";
data.innerHTML += ".father左邊框(clientLeft):"+ father.clientLeft+"<br/>";
data.innerHTML += "<h3>獲取.son到父元素邊界的距離(即對(duì)應(yīng)margin+父元素對(duì)應(yīng)的border)</h3>";
data.innerHTML += ".son到父元素上邊界(offsetTop):"+ son.offsetTop+"<br/>";
data.innerHTML += ".son到父元素左邊界(offsetLeft):"+ son.offsetLeft+"<br/>";
}
ps:瀏覽器對(duì)盒子的解析存在差異,所以以上得出的數(shù)據(jù)也會(huì)存在小小差異。附圖一張。

完整代碼:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta charset="utf-8" />
<title>test</title>
<style type="text/css">
*
{
margin: 0 auto;
}
.father
{
width: 500px;
height: 750px;
border: 5px solid red;
float: left;
}
.son
{
width: 400px;
height: 300px;
border: 5px solid black;
margin: 20px;
}
.grandson
{
width: 150px;
height: 100px;
border: 5px solid blue;
margin: 20px;
overflow: auto;
}
.data
{
width: 600px;
height: 750px;
border: 5px solid red;
float: left;
margin-left: 15px;
}
</style>
<script type="text/javascript">
window.onload = function()
{
/*獲取元素對(duì)象*/
var father = document.getElementById('father');
var son = document.getElementById('son');
var grandson = document.getElementById('grandson');
var data = document.getElementById('data');
data.innerHTML = "<h3>獲取視窗大小(跟窗口大小有關(guān))</h3>";
data.innerHTML += "document.body可見(jiàn)區(qū)域?qū)? "+document.body.clientWidth+"<br/>";
data.innerHTML += "document.body可見(jiàn)區(qū)域高: "+document.body.clientHeight+"<br/>";
data.innerHTML += "window.innerWidth可見(jiàn)區(qū)域?qū)? "+window.innerWidth+"<br/>";
data.innerHTML += "window.innerHeight可見(jiàn)區(qū)域高: "+window.innerHeight+"<br/>";
data.innerHTML += "document.documentElement可見(jiàn)區(qū)域?qū)? "+document.documentElement.clientWidth+"<br/>";
data.innerHTML += "document.documentElement可見(jiàn)區(qū)域高: "+document.documentElement.clientHeight+"<br/>";
data.innerHTML += "<h3>獲取元素自身大小(跟是否有滾動(dòng)條無(wú)關(guān))</h3>";
data.innerHTML += ".son自身寬度(offsetWidth屬性,包括左右邊框):"+son.offsetWidth+"<br/>";
data.innerHTML += ".son自身高度(offsetHeight屬性,包括上下邊框):"+son.offsetHeight+"<br/>";
data.innerHTML += ".son可視寬度(clientWidth屬性,不包括左右邊框):"+son.clientWidth+"<br/>";
data.innerHTML += ".son可視高度(clientHeight屬性,不包括上下邊框):"+son.clientHeight+"<br/>";
data.innerHTML += "<h3>獲取.grandson滾動(dòng)大小和可視大小</h3>";
data.innerHTML += ".grandson滾動(dòng)寬度(scrollWidth屬性):"+grandson.scrollWidth+"<br/>";
data.innerHTML += ".grandson滾動(dòng)高度(scrollHeight屬性):"+grandson.scrollHeight+"<br/>";
data.innerHTML += ".grandson可視寬度(clientWidth屬性,不包括豎直滾動(dòng)條和border):"+grandson.clientWidth+"<br/>";
data.innerHTML += ".grandson可視高度(clientHeight屬性,不包括水平滾動(dòng)條和border):"+grandson.clientHeight+"<br/>";
data.innerHTML += "<h3>獲取.grandson被卷去的大小(跟滾動(dòng)條的位置有關(guān))</h3>";
data.innerHTML += ".grandson被卷去的高(scrollTop屬性,豎直滾動(dòng)條滑到最底端):"+grandson.scrollTop+"<br/>";
data.innerHTML += ".grandson被卷去的左(scrollLeft屬性,水平滾動(dòng)條滑到最右端):"+grandson.scrollLeft+"<br/>";
data.innerHTML += "<h3>獲取瀏覽器窗口位置(跟窗口大小有關(guān))</h3>";
/*
*IE、Chrome、Safari、Opera 都提供了支持 window.screenLeft 和 *window.screenTop,但是Firxfox不支持這個(gè)兩個(gè)屬性;
*Firxfox、Chrome、Safari、Opera 都提供了支持 window.screenX *和 window.screenY,但是 IE 不支持這個(gè)兩個(gè)屬性;
*/
var leftPos = (typeof window.screenLeft == 'number')?window.screenLeft:window.screenX;
var topPos = (typeof window.screenTop == 'number')?window.screenTop:window.screenY;
data.innerHTML += "body網(wǎng)頁(yè)正文部分上(window.screenTop(Y)):"+ topPos+"<br/>";
data.innerHTML += "body網(wǎng)頁(yè)正文部分左(window.screenLeft(X)):"+ leftPos+"<br/>";
data.innerHTML += "<h3>獲取屏幕分辨率</h3>";
data.innerHTML += "屏幕分辨率的高(window.screen.height):"+ window.screen.height+"<br/>";
data.innerHTML += "屏幕分辨率的寬(window.screen.width):"+ window.screen.width+"<br/>";
data.innerHTML += "<h3>獲取屏幕可用的高寬</h3>";
data.innerHTML += "屏幕分辨率的高(window.screen.availHeight):"+ window.screen.availHeight+"<br/>";
data.innerHTML += "屏幕分辨率的寬(window.screen.availWidth):"+ window.screen.availWidth+"<br/>";
data.innerHTML += "<h3>獲取.father的邊框大小</h3>";
data.innerHTML += ".father上邊框(clientTop):"+ father.clientTop+"<br/>";
data.innerHTML += ".father左邊框(clientLeft):"+ father.clientLeft+"<br/>";
data.innerHTML += "<h3>獲取.son到父元素邊界的距離(即對(duì)應(yīng)margin+父元素對(duì)應(yīng)的border)</h3>";
data.innerHTML += ".son到父元素上邊界(offsetTop):"+ son.offsetTop+"<br/>";
data.innerHTML += ".son到父元素左邊界(offsetLeft):"+ son.offsetLeft+"<br/>";
}
</script>
</head>
<body>
<div class="father" id="father">
<h3>這是父元素,屏幕分辨率是1366*768</h3>
<div class="son" id="son">
<h3>這是子元素,祝大家國(guó)慶快樂(lè) </h3>
<div class="grandson" id="grandson">
<h3>這是孫子元素,祝大家國(guó)慶快樂(lè) </h3>
<h3>我的博客:www.dbjr.com.cn</h3>
<h3>程序愛(ài)好者QQ群:</h3>
<h3>259280570 </h3>
<h3>歡迎你加入 </h3>
<h3>國(guó)慶快樂(lè) </h3>
</div>
</div>
</div>
<div class="data">
<h3>數(shù)據(jù)輸出</h3>
<div id="data"></div>
</div>
</body>
</html>
相關(guān)文章
javascript設(shè)計(jì)模式之單體模式學(xué)習(xí)筆記
這篇文章主要為大家詳細(xì)介紹了javascript設(shè)計(jì)模式之單體模式學(xué)習(xí)筆記,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-02-02
利用JavaScript如何查詢某個(gè)值是否數(shù)組內(nèi)
這篇文章主要給大家介紹了關(guān)于利用JavaScript如何查詢某個(gè)值是否數(shù)組內(nèi)的相關(guān)資料,文中通過(guò)示例代碼分別介紹了實(shí)現(xiàn)該問(wèn)題的一些解決方法是否可行,需要的朋友可以參考借鑒,下面跟著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2017-07-07
echarts實(shí)現(xiàn)3d柱狀圖的2種方式舉例
echarts3D效果柱狀圖的實(shí)現(xiàn),這個(gè)太難了,我花了兩天終于調(diào)成我想要的效果啦,要是官網(wǎng)上有例子就好了,太難調(diào)了,下面這篇文章主要給大家介紹了關(guān)于echarts實(shí)現(xiàn)3d柱狀圖的2種方式,需要的朋友可以參考下2023-02-02
JavaScript實(shí)現(xiàn)單圖片上傳并預(yù)覽功能
這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)單圖片上傳并預(yù)覽功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-09-09

