专业编程基础技术教程

网站首页 > 基础教程 正文

jQuery 获取元素的位置和宽度

ccvgpt 2024-08-04 12:12:39 基础教程 14 ℃

1.1 盒子尺寸

以下都是获取元素的尺寸类型为number。是可读可写的。

jQuery 获取元素的位置和宽度

height(); 取得匹配元素当前计算的高度值(px)。

width(); 取得匹配元素当前计算的宽度值(px)。

innerHeight(); 获取匹配元素内部区域高度(包括补白padding、不包括边框border)。

innerWidth(); 获取匹配元素内部区域宽度(包括补白padding、不包括边框border)。

outerHeight(); 获取匹配元素外部高度(默认包括补白padding和边框border)。

outerWidth(); 获取匹配元素外部宽度(默认包括补白padding和边框border)。

outerHeight(true); 获取匹配元素外部高度(默认包括补白padding和边框border和边距margin)。

outerWidth(true); 获取匹配元素外部高度(默认包括补白padding和边框border和边距margin)。

div{
width: 300px;
height: 200px;

padding: 20px;/*内边距*/

border: 30px solid yellow;/*边框*/

margin: 40px;/*外边距*/
background-color: orange;
}
<div></div>
<script type="text/javascript">
console.log($("div").width());//获取元素的width
//$("div").width(800);//可读可写

console.log($("div").innerWidth());//获取元素的width+padding

console.log($("div").outerWidth());//获取元素的width+padding+border

console.log($("div").outerWidth(true));//获取元素的width+padding+border+marign
</script>

1.2 window和doucment尺寸

<script type="text/javascript">
console.log($(window).height()); //可视窗口
console.log($(document).height()); //文档高度
</script>

offset([coordinates]) 获取匹配元素在当前文档的相对偏移。

返回的对象包含两个整型属性: top 和 left, 以像素计。此方法只对可见元素有效。

$("p:last").offset({ top: 10, left: 30 });
<html>
<head>
<script type="text/javascript" src="/jquery/jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("button").click(function(){
x=$("p").offset();
$("#span1").text(x.left);
$("#span2").text(x.top);
});
});
</script>
</head>
<body>
<p>本段落的偏移是 <span id="span1">unknown</span> left 和 <span id="span2">unknown</span> top。</p>
<button>获得 offset</button>
</body>
</html>

输出结果: 本段落的偏移是 8 left 和 8 top。

position

position()获取匹配元素相对父元素的偏移。返回的对象包含两个整型属性:top 和 left。为精确计算结果, 请在补白、边框和填充属性上使用像素单位。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style type="text/css">
*{
margin: 0;
padding: 0;
}
div{
width: 300px;
height: 200px;
background-color: orange;

padding: 20px;/*内边距*/

border: 30px solid yellow;/*边框*/

margin: 40px;/*外边距*/
position: relative;
}
p{
width: 100px;
height: 100px;
background-color: red;

position: absolute;
left: 100px;
top: 100px;
}
</style>
</head>
<body>
<div>
<p>pppp</p>
</div>

<script src="js/jquery-2.2.4.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
//返回距离定位祖先元素的距离
console.log($("p").position());//距离有定位的祖先元素的距离 {top: 100, left: 100}
</script>
</body>
</html>

滚动事件:1 滚轮 2 拖拽滚动条 3 方向键

scrollLeft() 设置或返回匹配元素相对滚动条左侧的偏移。

scrollTop() 设置或返回匹配元素相对滚动条顶部的偏移。

$(".btn1").click(function(){
$("div").scrollLeft(100); //向左偏移100px
});
$(document).scroll(function(){
console.log($(window).scrollTop())
})

实例: 平滑滚动页面到某个锚点

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<script src="../jquery/jquery-1.9.1.min.js"></script>
<script type="text/javascript">
    $(document).ready(function(){
    jQuery.scrollTo=function(scrolldom,scrolltime){
    $(scrolldom).click(function(){
    var scrollToDom = $(this).attr("page-scroll");
    $('html,body').animate(
    {
    scrollTop:$(scrollToDom).offset().top //滑动到当前元素的顶部
    },
    scrolltime
    );
    return false;
    });
    };
    $.scrollTo("#scrollnav a",1000);
    });
</script>
<style>
body {
font:62.5% "Trebuchet MS", sans-serif;
margin:64px;
}
#h2-caption {
font:20px "Trebuchet MS", sans-serif;
}
p {
font:16px "Trebuchet MS", sans-serif;
}
a {
font:13.5px "Trebuchet MS", sans-serif;
}
.demoHeaders {
margin-top:2em;
}
#div-log {
font:13.5px "Trebuchet MS", sans-serif;
}
</style>
</head>
<body>
<h2 id="h2-caption">超实用的jQuery代码段 - jQuery平滑滚动页面到某个锚点</h2>
<hr><br>
<div class="scrollnav" id="scrollnav">
<a href="#" page-scroll="#scrolltoTop">滑动到页面顶部</a>  
<a href="#" page-scroll="#scrolltoMid">滑动到页面中部</a>  
<a href="#" page-scroll="#scrolltoEnd">滑动到页面底部</a>  
</div>
<p id="scrolltoTop">jQuery平滑滚动页面 - 页面顶部</p><br><br><br><br><br><br><br><br><br><br><br><br>
<p id="scrolltoMid">jQuery平滑滚动页面 - 页面中部</p><br><br><br><br><br><br><br><br><br><br><br><br>
<p id="scrolltoEnd">jQuery平滑滚动页面 - 页面底部</p><br><br><br><br><br><br><br><br><br><br><br><br>
<br><hr>
<div id="div-log">
<p>日志记录:</p>
</div>
</body>
</html>

解释:平滑滚动页面到某个锚点的效果实际上是通过animate()函数与.offset()函数组合来实现的, 如今已经替代传统HTML操作DOM的window.scrollTo()函数了。

最近发表
标签列表