jQuery元素的尺寸、位置和页面滚动事件
更新:HHH   时间:2023-1-7


1.获取和设置元素的尺寸

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>获取尺寸</title>
<script type="text/javascript" src="../jQuery库/jquery-3.3.1.min.js"></script>
<script type="text/javascript">

$(function(){
    var $div = $('.box');
    /*盒子内容尺寸*/
    console.log($div.width());
    console.log($div.height());
    /*盒子内容+padding*/
    console.log($div.innerHeight());
    console.log($div.innerWidth());
    /*盒子真实尺寸,内容+padding+border*/
    console.log($div.outerHeight());
    console.log($div.outerWidth());
    /*盒子真实尺寸+margin*/
    console.log($div.outerHeight(true));
    console.log($div.outerWidth(true));
})
</script>

<style type="text/css">

.box{
    width: 300px;
    height: 200px;
    background-color: antiquewhite;
    margin: 50px;
    padding: 10px;
    border: 1px solid #000;
}
</style>

</head>

<body>

<div class="box"></div>

</body>
</html>

2.获取元素相对页面的绝对位置:offset()

$(function(){

    var div = $('.box');
    div.click(function(){

        var oPos = $('.box').offset(); /*获取页面绝对位置*/
        /*console.log(oPos);*/
        document.title = oPos.left + '|' + oPos.top;  /*更改标签*/
    })

})

例子:购物车

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>购物车</title>
<script type="text/javascript" src="../jQuery库/jquery-3.3.1.min.js"></script>
<script type="text/javascript">

$(function(){
    var $car = $('.car');
    var $count = $('.car em');

    var $btn = $('.btn');
    var $pot = $('.point');

    var $w = $btn.outerWidth();      /*真实大小*/
    var $h = $btn.outerHeight();

    var $w01 = $car.outerWidth();
    var $h01 = $car.outerHeight();

    $btn.click(function(){
        var carp = $car.offset();
        var btnp = $btn.offset();

        $pot.css({'left':btnp.left+parseInt($w/2)-8,'top':btnp.top+parseInt($h/2)-8}); /*计算绝对距离*/
        $pot.show();
        $pot.animate({'left':carp.left+parseInt($w01/2)-8,'top':carp.top+parseInt($h01/2)-8},500,function(){
            $pot.hide();
            var iNum = $count.html();  /*读*/
            $count.html(parseInt(iNum)+1);  /*写*/
        });
        /*$pot.hide();*/

    })
})
</script>

<style type="text/css">

.car{             /*购物车*/
    width: 150px;
    height: 50px;
    border: 2px solid #000;
    line-height: 50px;
    text-align: center;
    float: right;
    margin: 50px 100px 0 0;

}
.car em{               /*购物车商品数量*/
    font-style: normal;
    color: red;
    font-weight: bold;  /*设置文本粗细,bold加粗*/
}
.btn{                 /*加入购物车按钮*/
    width: 100px;
    height: 50px;
    background-color: #F32914;
    border: 0;
    color: #fff;
    margin: 50px 0 0 100px;
    float: left;
}
.point{                  /*小圆点*/
    width: 16px;
    height: 16px;
    background-color: gold;
    border-radius: 8px;
    position: fixed;
    left: 0;
    top: 0;
    z-index: 100;
    display: none;
}
</style>

</head>

<body>

<div class="car">购物车<em>0</em></div>
<input type="button" name="" value="加入购物车" class="btn">
<div class="point"></div>

</body>
</html>

3.获取浏览器可视宽度高度

4.获取页面文档的宽度高度

$(function(){
/可视区屏幕范围/
console.log('可视区宽度:'+$(window).width());
console.log('可视区高度:'+$(window).height());
/实际文本范围/
console.log('text区宽度:'+$(document).width());
console.log('text区高度:'+$(document).height());
})

**5.获取页面滚动距离**

/页面滚动距离/
console.log('上滚动距离:'+$(document).scrollTop());
console.log('左滚动距离:'+$(document).scrollLeft());

**6.页面滚动事件**

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>滚动菜单</title>
<script type="text/javascript" src="../jQuery库/jquery-3.3.1.min.js"></script>
<script type="text/javascript">

$(function(){
    var $menu = $('.menu');
    var $menub = $('.menu_back');

    var $arrow = $('.arrow');
    /*滚动事件*/
    $(window).scroll(function(){
        /*获取滚动top值*/
        var iNum = $(window).scrollTop();
        if(iNum>200){
            $menu.css({
                'position':'fixed',
                'top':0,
                /*设置定位后配置居中*/
                'left':'50%',
                'marginLeft':-450,
            });
            $menub.show(); /*定位之后脱离文档流,会导致下面的文档突然消失,用一个相同的div代替*/
        }
        else{
            $menu.css({
                /*定位默认值,不定位,*/
                'position':'static',
                /*系统自动居中*/
                'margin':'auto',
            });
            $menub.hide();
        }
        /*滚动一定距离才显示*/
        if(iNum>400){
            $arrow.fadeIn();
        }
        else{
            $arrow.fadeOut();
        }
    });
    $arrow.click(function(){
        /*兼容各个浏览器,body或者HTML*/
        $('body,html').animate({'scrollTop':0})
    })
})
</script>

<style type="text/css">

.blank{

    width: 900px;
    height: 300px;
    background-color: aqua;
    margin: 0 auto;

}
.menu{
    width: 900px;
    height: 100px;
    background-color: antiquewhite;
    margin: 0 auto;
    text-align: center;
    line-height: 100px;
    /*opacity: 0.3;*/
}
.menu_back{
    width: 900px;
    height: 100px;
    margin: 0 auto;
    display: none;
}
p{
    color: red;
    margin: 0 auto;
    text-align: center;
}
.arrow{
    width: 60px;
    height: 60px;
    background-color: #000000;
    position: fixed;
    right: 30px;
    bottom: 50px;
    text-align: center;
    line-height: 60px;
    font-size: 40px;
    border-radius: 30px;
    opacity: 0.5;
    cursor: pointer;
    display: none;
}
.arrow:hover{
    opacity: 1;
}
</style>

</head>

<body>

<div class="blank"></div>
<div class="menu">菜单</div>
<div class="menu_back"></div>
<div class="arrow">

返回web开发教程...