在jQuery中,有些時候我們需要獲取元素的具體位置,然後進行必要操作。例如 學習網的“在線調色板”中,就是根據元素的位置來確定顏色值的。
在jQuery中,如果我們想要獲取元素的位置,有2種方法:
在jQuery中,我們可以使用offset()方法用於“獲取”或“設置”元素相對於“當前文檔”(也就是浏覽器窗口)的偏移距離。
語法:
$().offset().top; $().offset().left
說明:
$().offset()返回的是一個坐標對象,該對象有2個屬性:top和left。
$().offset().top表示獲取元素相對於當前文檔“頂部”的距離。
$().offset().left表示獲取元素相對於當前文檔“左部”的距離。
這兩種方法返回的都是一個數字(不帶單位)。
舉例:
在線測試
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<style type="text/css">
body
{
text-align:center;
}
#main
{
text-align:left;
margin:100px auto;
padding:15px;
border:1px dashed gray;
display:inline-block;
}
#box1,#box2
{
display:inline-block;
height:100px;
width:100px;
}
#box1
{
background-color:Red;
}
#box2
{
background-color:Orange;
}
</style>
<script type="text/javascript" src="jquery-1.12.0.min.js"></script>
<script type="text/javascript">
$(function () {
$("#btn").click(function () {
//獲取box2距離頂部的距離
var top = $("#box2").offset().top;
//獲取box2距離左部的距離
var left = $("#box2").offset().left;
var str = "box2與文檔頂部距離是:" + top + "\n" + "box2與文檔左部距離是:" + left;
alert(str);
})
})
</script>
</head>
<body>
<div id="main">
<div id="box1"></div><br />
<div id="box2"></div><br />
<input id="btn" type="button" value="獲取" />
</div>
</body>
</html>
在浏覽器預覽效果如下:
分析:
當我們點擊“獲取”按鈕,就可以獲取id為box2的元素相對當前文檔頂部距離以及左部距離。
在jQuery中,我們可以使用position()方法來“獲取”或“設置”當前元素相對於“其被定位的祖輩元素”的偏移距離。
語法:
$().position().top $().position().left
說明:
$().position()返回的是一個坐標對象,該對象有2個屬性:top和left。
$().position().top表示元素相對於被定位的祖輩元素的頂部的垂直距離。
$().position().left表示元素相對於被定位的祖輩元素的左部的水平距離。
這兩種方法返回的都是一個數字(不帶單位)。
舉例:
在線測試
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<style type="text/css">
#father
{
position:relative;
width:200px;
height:200px;
background-color:orange;
}
#son
{
position:absolute;
top:20px;
left:50px;
width:50px;
height:50px;
background-color:red;
}
</style>
<script type="text/javascript" src="jquery-1.12.0.min.js"></script>
<script type="text/javascript">
$(function () {
$("#btn").click(function () {
var top = $("#son").position().top;
var left = $("#son").position().left;
var str = "子元素相對父元素頂部距離是:" + top + "\n" + "子元素相對父元素左部距離是:" + left;
alert(str);
})
})
</script>
</head>
<body>
<div id="father">
<div id="son"></div>
</div>
<input id="btn" type="button" value="獲取" />
</body>
</html>
在浏覽器預覽效果如下:
分析:
當我們點擊“獲取”按鈕之後,就可以獲取所選元素相對父元素的垂直相對距離以及水平相對距離。在CSS定位布局中,如果我們對父元素設置position:relative,我們就可以使用position:absolute來設置子元素相對於父元素的定位距離,這就是我們常說的“外相對,內絕對”。如果大家對這個例子不太懂的話,建議先去打好CSS基礎先。
在web應用開發中,獲取元素的坐標是非常常見的操作。jQuery的offset()和position()的結合使用,方便我們快速獲取元素坐標,大家必須予以重視。當然在以後教程中,我們會結合這些技術給大家講解實際開發的綜合應用實例。