为了账号安全,请及时绑定邮箱和手机立即绑定

jquery宽高方法测试

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Document</title>
<style type="text/css">
    html,body{
        margin: 10px;
        padding: 20px;
        border: 5px solid #F00;
    }
    .parentDiv{
        width: 800px;
        height: 500px;
        margin: 5px auto;
        padding: 30px;
        background-color: #F60;
        border: 5px dashed #00F;
    }
    .childrenDiv{
        width: 300px;
        height: 300px;
        margin: 50px auto;
        padding: 5px;
        background-color: #0F0;
        border: 5px solid #FFF;
    }
</style>
</head>
<body>
    <div class="parentDiv">
        <div class="childrenDiv"></div>
    </div>
<script type="text/javascript" src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
<script type="text/javascript">
    console.log($(window).height());
    console.log($(document).height());
    
    console.log($(window).innerHeight());
    console.log($(document).innerHeight());
    
    console.log($(window).outerHeight());
    console.log($(document).outerHeight());
    
    console.log($(window).outerHeight(true));
    console.log($(document).outerHeight(true));
    
    console.log($(".childrenDiv").height());
    console.log($(".childrenDiv").innerHeight());
    console.log($(".childrenDiv").outerHeight());
    console.log($(".childrenDiv").outerHeight(true));
    
    $(".parentDiv").scroll(function () {
    console.log($(this).scrollTop());
    })
    
    console.log($(".childrenDiv").offset().top);
    console.log($(".childrenDiv").offset().left);
    console.log($(".childrenDiv").position().top);
    console.log($(".childrenDiv").position().top);
</script>
</body>
</html>


正在回答

2 回答

虽然高度在不同浏览器中表达有所不同,不过对于确定文档高度来说,只要求取得在浏览器中高的相关属性中的最大值就可以。

以下代码可看到每一个浏览器都可以取得值,值也是最大的。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body style="height: 500">
<script type="text/javascript">
    document.write("document.body.scrollHeight: " + document.body.scrollHeight + "<br />" + "document.documentElement.scrollHeight: " + document.documentElement.scrollHeight + "<br />");

    var docHeight = Math.max(document.documentElement.scrollHeight || document.body.scrollHeight, document.documentElement.clientHeight || document.body.clientHeight);

    document.write("docHeight: " + docHeight);
</script>
</body>
</html>
0 回复 有任何疑惑可以回复我~

其实做法和js的差不多,首先要获取div的scrollHeight,然后是scrolltop,最后就是innerHeight(相当于js里面的clientHeight),代码如下:

<div id="my"><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />

<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /></div>

  $("#my").scroll(function(){

              var scrollTop = $(this).scrollTop();

              var ks_area = $(this).innerHeight();

              var nScrollHight = 0; //滚动距离总长(注意不是滚动条的长度)  

              nScrollHight = $(this)[0].scrollHeight;

//            alert(ks_area);

                if(scrollTop + ks_area >= nScrollHight){

                alert("到底了")

                }

              if($(this).scrollTop() ==0){

              alert("到顶部了");

              }

             });


1 回复 有任何疑惑可以回复我~
#1

仰望星空的天

不好意思,写错了地方
2016-11-10 回复 有任何疑惑可以回复我~
#2

学之舟_36820 提问者 回复 仰望星空的天

没关系
2016-11-10 回复 有任何疑惑可以回复我~
#3

仰望星空的天 回复 学之舟_36820 提问者

我发现火狐和谷歌下的document.body.scrollHeight(都是在给定宽高不大于浏览器窗口的情况下),谷歌显示的是浏览器的窗口的高度,然而火狐显示的的是给定宽高的高度
2016-11-11 回复 有任何疑惑可以回复我~
#4

学之舟_36820 提问者 回复 仰望星空的天

这是跨浏览器实际存在的差异,不同浏览器对相同的属性的值都是有所不同。
2016-11-11 回复 有任何疑惑可以回复我~
查看1条回复

举报

0/150
提交
取消
JS/jQuery宽高的理解和应用
  • 参与学习       34059    人
  • 解答问题       58    个

js/jquery各种宽高的理解,结合实例对宽高做一些简单的应用

进入课程

jquery宽高方法测试

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信