HTML:關於位置的幾個概念

來源:互聯網
上載者:User
  • 原文標題:HTML:scrollLeft,scrollWidth,clientWidth,offsetWidth
  • 作者: 來源: http://bbs.chinaunix.net
  • 核心提示:HTML:scrollLeft,scrollWidth,clientWidth,offsetWidth到底指的哪到哪的距離之完全詳解 scrollHeight: 擷取對象的滾動高度。 scrollLeft:設定或擷取位於對象左邊界和視窗中目前可見內容的最左端之間的距離 scrollTop:設定或擷取位於對象最頂端和視窗中可見內容的最頂端..... HTML:scrollLeft,scrollWidth,clientWidth,offsetWidth到底指的哪到哪的距離之完全詳解

    scrollHeight: 擷取對象的滾動高度。
    scrollLeft:設定或擷取位於對象左邊界和視窗中目前可見內容的最左端之間的距離
    scrollTop:設定或擷取位於對象最頂端和視窗中可見內容的最頂端之間的距離
    scrollWidth:擷取對象的滾動寬度
    offsetHeight:擷取對象相對於版面或由父座標 offsetParent 屬性指定的父座標的高度
    offsetLeft:擷取對象相對於版面或由 offsetParent 屬性指定的父座標的計算左側位置
    offsetTop:擷取對象相對於版面或由 offsetTop 屬性指定的父座標的計算頂端位置
    event.clientX 相對文檔的水平座標
    event.clientY 相對文檔的垂直座標

    event.offsetX 相對容器的水平座標
    event.offsetY 相對容器的垂直座標
    document.documentElement.scrollTop 垂直方向滾動的值
    event.clientX+document.documentElement.scrollTop 相對文檔的水平座標+垂直方向滾動的量

      以上主要指IE之中,FireFox差異如下:
    IE6.0、FF1.06+:
    clientWidth = width + padding
    clientHeight = height + padding
    offsetWidth = width + padding + border
    offsetHeight = height + padding + border
    IE5.0/5.5:
    clientWidth = width - border
    clientHeight = height - border
    offsetWidth = width
    offsetHeight = height
    (需要提一下:CSS中的margin屬性,與clientWidth、offsetWidth、clientHeight、offsetHeight均無關)<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "[url=http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd]http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd[/url]">
    <html xmlns="[url=http://www.w3.org/1999/xhtml]http://www.w3.org/1999/xhtml[/url]" lang="gb2312">
    <head>
    <head>
    <title> 代碼執行個體:關於clientWidth、offsetWidth、clientHeight、offsetHeight的測試比較 </title>
    <meta http-equiv="content-type" content="text/html; charset=gb2312" />
    <meta name="author" content="楓岩,CnLei.y.l@gmail.com">
    <meta name="copyright" content="[url=http://www.cnlei.com]http://www.cnlei.com[/url]" />
    <meta name="description" content="關於clientWidth、offsetWidth、clientHeight、offsetHeight的測試比較" />
    <style type="text/css" media="all">
    body {font-size:14px;}
    a,a:visited {color:#00f;}
    #Div_CnLei {
    width:300px;
    height:200px;
    padding:10px;
    border:10px solid #ccc;
    background:#eee;
    font-size:12px;
    }
    #Div_CnLei p {margin:0;padding:10px;background:#fff;}
    </style>
    <script type="text/javascript">
    function Obj(s){
    return document.getElementById(s)?document.getElementById(s):s;
    }
    function GetClientWidth(o){
    return Obj(o).clientWidth;
    }
    function GetClientHeight(o){
    return Obj(o).clientHeight;
    }
    function GetOffsetWidth(o){
    return Obj(o).offsetWidth;
    }
    function GetOffsetHeight(o){
    return Obj(o).offsetHeight;
    }
    </script>
    </head>
    <body>
    <p>點擊下面的連結:</p>
    <div id="Div_CnLei">
    <p><a href=http://bbs.chinaunix.net/"javascript:alert(GetClientWidth('Div_CnLei'));">GetClientWidth();</a>    <a href=http://bbs.chinaunix.net/"javascript:alert(GetClientHeight('Div_CnLei'));">GetClientHeight();</a></p>
    <p><a href=http://bbs.chinaunix.net/"javascript:alert(GetOffsetWidth('Div_CnLei'));">GetOffsetWidth();</a>    <a href=http://bbs.chinaunix.net/"javascript:alert(GetOffsetHeight('Div_CnLei'));">GetOffsetHeight();</a></p>
    </div>
    <div id="Description">
    <p><strong>IE6.0、FF1.06+:</strong><br />
    clientWidth = width + padding = 300+10×2 = 320<br />
    clientHeight = height + padding = 200+10×2 = 220<br />
    offsetWidth = width + padding + border = 300+10×2+10×2= 340<br />
    offsetHeight = height + padding + border = 200+10×2+10×2 = 240</p>
    <p><strong>IE5.0/5.5:</strong><br />
    clientWidth = width - border = 300-10×2 = 280<br />
    clientHeight = height - border = 200-10×2 = 180<br />
    offsetWidth = width = 300<br />
    offsetHeight = height = 200</p>
    </div>
    </body>
    </html>

     

     

    Javascript:scrollWidth,clientWidth,offsetWidth的區別(轉)

    clientWidth
    是對象可見的寬度,不包捲軸等邊線,會隨視窗的顯示大小改變。

    scrollWidth
    是對象的實際內容的寬,不包邊線寬度,會隨對象中內容的多少改變(內容多了可能會改變對象的實際寬度)  

    offsetWidth
    是對象的可見寬度,包捲軸等邊線,會隨視窗的顯示大小改變。

    ------------------------------------------------
    一個scrollWidth和clientWidth的例子:
    <html>
    <head>
    <title>77.htm檔案</title>
    </head>

    <body>
    <textarea wrap="off" onfocus="alert('scrollWidth:'+this.scrollWidth+'\n clientWidth:'+this.clientWidth);"></textarea>
    </body>
    </html>
    在文字框內輸入內容,當橫向捲軸沒出來前scrollWidth和clientWidth的值是一樣的。
    當一行內容超出文字框的寬度,就有橫向捲軸出來了,scrollWidth的值就變了。
    scrollWidth是對象實際內容的寬度。
    clientWidth是對象看到的寬度(不含邊線),這個例子裡不會改變。

    -----------------------------------------------
    一個clientWidth和offsetWidth的例子:
    <html>
    <head>
    <title>77.htm檔案</title>
    </head>

    <body>
    <textarea wrap="off" onfocus="alert('offsetWidth:'+this.offsetWidth+'\n clientWidth:'+this.clientWidth);"></textarea>
    </body>
    </html>

    offsetWidth的值總是比clientWidth的值打
    clientWidth是對象看到的寬度(不含邊線)
    offsetWidth是對象看到的寬度(含邊線,如捲軸的佔用的寬)

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.