1. 程式人生 > >jquery 對象的 height、innerHeight、outerHeight 的區別以及DOM 元素的 clientHeight、offsetHeight、scrollHeight、offsetTop、scrollTop

jquery 對象的 height、innerHeight、outerHeight 的區別以及DOM 元素的 clientHeight、offsetHeight、scrollHeight、offsetTop、scrollTop

有關 del core body pla port log path jstl

前言:jquery 對象的 height、innerHeight、outerHeight,還有 DOM 元素的 clientHeight、offsetHeight、scrollHeight、offsetTop、scrollTop 概念一直都很模糊,借此寫個demo看看。

舉例看看 jquery 對象的 height、innerHeight、outerHeight 幾個區別:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core
"%> <c:set var="ctx" value="${pageContext.request.contextPath}" /> <html> <head> <title>測試</title> <style> #div1{ border: 1px solid; height: 200px; width: 200px; padding: 10px; margin: 20px; /*
浮動*/ overflow: auto; } </style> </head> <body> <div id="div1"> <div>sdf</div> <div>地方</div> <div>水電費</div> <div>史蒂夫</div> <div>鬼地方個</div> <div>史3玩兒</div> <div
>史3水電費玩兒</div> <div>212</div> <div>435 </div> <div>電飯鍋</div> <div>規劃局</div> <div>好久</div> <div>水電費</div> <div>史3水電費玩兒</div> <div>34</div> <div></div> <div>45</div> <div>sdf</div> <div>地方</div> <div>水電費</div> <div>史蒂夫</div> <div>鬼地方個</div> <div>史3玩兒</div> <div>史3水電費玩兒</div> <div>212</div> <div>435 </div> <div>電飯鍋</div> <div>規劃局</div> <div>好久</div> <div>水電費</div> <div>史3水電費玩兒</div> <div>34</div> <div></div> <div>45</div> </div> <script type="text/javascript" src="${ctx}/static/common/js/jquery-1.8.1.min.js"></script> <script type="text/javascript"> var $div = $("#div1"); //262 222 220 200 console.log($div.outerHeight(true), $div.outerHeight(false), $div.outerHeight(), $div.innerHeight(), $div.height()); var div = $div[0]; //220 222 734 20 0 console.log(div.clientHeight, div.offsetHeight, div.scrollHeight, div.offsetTop, div.scrollTop); </script> </body> </html>
//262 222 220 200
console.log($div.outerHeight(true), $div.outerHeight(false), $div.outerHeight(), $div.innerHeight(), $div.height());

outerHeight 高度為:元素自身高度 + padding + border ;如果參數為true時,高度為:元素自身高度 + padding + border +margin

技術分享圖片

技術分享圖片

innerHeight 包括元素自身的高度+padding部分

技術分享圖片

height 指的是元素本身的高度,不包括padding、border、margin

技術分享圖片

然後看看 DOM 元素的 clientHeight、offsetHeight、scrollHeight、offsetTop、scrollTop 區別

每個HTML元素都具有 clientHeight offsetHeight scrollHeight offsetTop scrollTop 這5個屬性,這些是和元素高度、滾動、位置相關的屬性。其中 clientHeight、offsetHeight 和元素的高度有關,scrollHeight、scrollTop 與滾動有關,offsetTop與父元素有關。

var div = $div[0];
    //220 222 734 20 0
    console.log(div.clientHeight, div.offsetHeight, div.scrollHeight, div.offsetTop, div.scrollTop);

clientHeight:包括padding但不包括border、水平滾動條、margin的元素的高度。對於inline的元素這個屬性一直是0,單位px,只讀元素。
技術分享圖片

offsetHeight:包括padding、border、水平滾動條,但不包括margin的元素的高度。對於inline的元素這個屬性一直是0,單位px,只讀元素。

技術分享圖片

scrollHeight: 因為子元素比父元素高,父元素不想被子元素撐的一樣高就顯示出了滾動條,在滾動的過程中本元素有部分被隱藏了,scrollHeight代表包括當前不可見部分的元素的高度。而可見部分的高度其實就是clientHeight,也就是scrollHeight>=clientHeight恒成立。在有滾動條時討論scrollHeight才有意義,在沒有滾動條時scrollHeight==clientHeight恒成立。單位px,只讀元素。

技術分享圖片

scrollTop: 代表在有滾動條時,滾動條向下滾動的距離也就是元素頂部被遮住部分的高度。在沒有滾動條時scrollTop==0恒成立。單位px,可讀可設置。

技術分享圖片


offsetTop: 當前元素頂部距離最近父元素頂部的距離,和有沒有滾動條沒有關系。單位px,只讀元素。

技術分享圖片

參考:http://www.imooc.com/article/17571

jquery 對象的 height、innerHeight、outerHeight 的區別以及DOM 元素的 clientHeight、offsetHeight、scrollHeight、offsetTop、scrollTop