jQuery元素的尺寸、位置和页面滚动事件

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">

原文地址:http://blog.51cto.com/13742773/2340450

时间: 2024-10-07 14:15:21

jQuery元素的尺寸、位置和页面滚动事件的相关文章

页面滚动事件

页面滚动 事件:window.onscroll, 获得页面滚动位置:document.body.scrollTop: HTML代码: 这里注意此处逻辑,大于500就显示,否则就隐藏,还有注意如果变量名设置为top的话,就出错,都是小坑.

监听页面滚动事件

不知大家在前端开发实践中有没有做过这样一个效果,就是页面布局中有一个顶部通栏的搜索登录框,我们的需求就是当鼠标向下滚动时,顶部通栏始终固定在顶部,并且默认顶部是透明背景,而当页面滚动时,顶部通栏的透明度随着页面卷曲的高度增加而变大,当页面滚动距离超过某一个高度时,透明度就固定不变了.顶部通栏的固定很好实现,只需要令其position属性值为fixed即可,顶部通栏的透明度则通过opacity属性来设置.比较容易出错的地方是这里需要监听页面滚动事件,得到实时的页面滚动距离,从而判断其距离的大小作出

文档事件、图片事件和页面滚动事件

1 <!DOCTYPE html> 2 <html lang="zh"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>文档事件</title> 6 <!-- 代码自身至下解析 --> 7 <script type="text/javascript"> 8 var div = document.querySele

页面滚动事件的使用

在现在更加追加页面加载速度和用户体验的情况下,页面的滚动事件使用的越来越多.通常我们使用滚动事件主要做的事情主要有: ajax异步加载,加快页面首次加载的速度 懒加载(或延迟加载):先把HTML元素放到textarea标签中,或把img的链接先放到一个字段里,页面滚动到某个位置时才进行开始加载 顶部导航或侧边导航的焦点跟踪 侧边数字导航的跟踪(例如百度经验) “回到顶部”功能 这两天做了一个demo,大家可以参考一下:页面滚动效果 上图中指出了用滚动事件实现的功能,不过demo中没有实现异步加载

页面宽高,窗口宽高,元素宽高,元素位置,页面滚动距离

页面宽高: document.body.clientWidth/Height(不包括margin) document.body.offsetWidth/Height(不包括margin) document.body.scrollWidth/Height(包括margin) tips: 1.如果不是最大化浏览器窗口,且在body标签设置min-width,document.body.offsetWidth会比document.body.clientWidth多出2px,那就是滚动条旁边的2px空白

jQuery---7. 常用API(jQuery尺寸位置操作 )

7.1 jQuery尺寸 <body> <div></div> <script> $(function() { // 1. width() / height() 获取设置元素 width和height大小 不包括border和padding console.log($("div").width());//200 // $("div").width(300);里面有参数那就是修改 // 2. innerWidth() /

关于禁止页面滚动的实践(禁止滚轮事件)

禁止网页页面滚动只需要给document添加onmousewheel事件,然后在事件绑定函数当中设置e.preventDefault()就可以了,没错,就是芥末简单. 可是问题又来了,首先,onmousewheel是什么事件呢?它又有什么兼容性上的问题呢? 带着以上的两个问题,我通过查阅资料并且通过实践,得到了一下的认识. 1.onmousewheel是页面滚动事件,与onscroll不同的是,一般我们是通过onscroll来获取页面的滚动高度,然后添加相应的高度. 而onmousewheel,

vue监听滚动事件 实现动态锚点

前几天做项目的时候,需要实现一个动态锚点的效果 如果是传统项目,这个效果就非常简单.但是放到 Vue 中,就有两大难题: 1. 在没有 jQuery 的 animate() 方法的情况下,如何实现平滑滚动? 2. 如何监听页面滚动事件? 在浏览了大量文章.进行多次尝试之后,终于解决了这些问题 期间主要涉及到了 setTimeout 的递归用法,和 Vue 生命周期中的 mounted 一.锚点实现 在实现平滑滚动之前,得先确保基本的锚点功能 如果没有其他要求,直接用 <a href="#i

asp.net页面触发事件panel滚动条高度不变

此文是为解决asp.net页面按钮点击触发事件后panel滚动条非自动回到顶端的解决方案,对于页面触发一个事件后,panel滚动条重新回到顶端,做下面的工作每次都要往下拉一下,特别是选择TreeView的时候,这个问题非常头疼,受到this.MaintainScrollPositionOnPostBack = true;的启示有感而发. 原理是在点击时保存panel滚动条的位置,页面触发事件完成后加载时重新赋值.保证页面每次点击都保存,就包含所有的按钮和别的点击事件. 步骤: 1.脚本 <hea