1. 程式人生 > >js各種寬高的總結

js各種寬高的總結

doc round highlight 20px ttr nth setw get 寬高

1.clientWidth和clientHeight
指元素的可視部分寬度和高度,就是padding+content
如果沒有滾動條,就是設定的寬度和高度

如果有滾動條,就是設定的寬度和高度減去滾動條的寬度和高度


  1. body{
  2. border:20px solid #ccc;
  3. margin:10px;
  4. padding:40px;
  5. background:#eee;
  6. height:350px;
  7. width:500px;
  8. overflow:scroll
  9. }
  10. document.body.clientWidth //500+80=580
  11. document.body.clientHeight//350+80=430
  12. #mydiv{
  13. width:200px;
  14. height:200px;
  15. background:red;
  16. border:1px solid #eee;
  17. overflow:auto;
  18. }
  19. //在div中添加文字,出現滾動條
  20. var mydiv=document.getElementById(‘mydiv‘);
  21. mydiv.clientHeight//200
  22. mydiv.clientWidth//200-7
  23. 小結:
  24. 無padding無滾動:clientWidth=style.width
  25. 有padding無滾動:clientWidth=style.width+padding*2
  26. 有padding有滾動:clientWidth=style.width+padding*2-滾動軸寬度
  27. clientLeft和clientTop
  28. 這一對屬性是讀取元素border的寬度和高度
  29. clientTop=border-top的border-width
  30. clientLeft=border-left的border-width


2.offsetWidth offsetHeight

就是padding+content+border


    1. body{
    2. border:20px solid #ccc;
    3. margin:10px;
    4. padding:40px;
    5. background:#eee;
    6. height:350px;
    7. width:500px;
    8. overflow:scroll
    9. }
    10. document.body.offsetWidth //500+80+40=620
    11. document.body.offsetHeight//350+80+40=470
    12. 小結:
    13. 無padding無滾動無border
    14. offsetWidth=clientWidth=style.width
    15. 有padding無滾動有border
    16. offsetWidth=style.width+style.padding*2+(border-width)*2
    17. offsetWidth=clientWidth+(border-width)*2
    18. 有padding有滾動有border
    19. offsetWidth=style.width+style.padding*2+(border-width)*2+滾動條寬度

js各種寬高的總結