老师,请问3-7如果用position怎么达到同样效果?

老师,请问3-7如果用position怎么达到同样效果?

老师在讲课的时候只说了offset()和position()的获取方法,并没有讲如何设置?请老师说明一下?

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
卡布琦诺 2017-06-18 14:53:46

1、offset()方法的定义和用法:此方法返回或设置所匹配元素相对于document对象的偏移量。语法结构一:$(selector).offset()获取匹配元素在当前document的相对偏移。返回的对象包含两个整型属:top和left。此方法只对可见元素有效。

<!DOCTYPE html>
<html>
<head>
<meta charset=" utf-8">
<title>offset()</title>
<style type="text/css">
*{
  margin:0px;
  padding:0px;
}
.father{
  border:1px solid black;
  width:400px;
  height:300px;
  padding:10px;
  margin:50px;
}
.children{
  height:150px;
  width:200px;
  margin-left:50px;
  background-color:green;
}
</style>
<script type="text/javascript" src="mytest/jQuery/jquery-1.8.3.js"></script>
<script type="text/javascript">
$(document).ready(function(){
  $("button").click(function(){
     a=$(".children").offset();
     alert("元素的偏移量坐标是:"+a.top+"|"+a.left+"");
   })
})
</script>
</head>
<body>
<div class="father">
  <div class="children"></div>
</div>
<button>获取元素的坐标</button>
</body>
</html>

   语法结构二:$(selector).offset(value)设置匹配元素相对于document对象的坐标。offset()方法可以让我们重新设置元素的位置。这个元素的位置是相对于document对象的。如果对象原先的position样式属性是static的话,会被改成relative来实现重定位。其中value规定以像素计的 top 和 left 坐标。可能的值:1.值对,比如 {top:200,left:10}。2.带有top和left 属性的对象。

<!DOCTYPE html>
<html>
<head>
<meta charset=" utf-8">
<title>offset()</title>
<style type="text/css">
.father{
  border:1px solid black;
  width:400px;
  height:300px;
}
.children{
  height:150px;
  width:200px;
  background-color:green;
}
</style>
<script type="text/javascript" src="mytest/jQuery/jquery-1.8.3.js"></script>
<script type="text/javascript">
$(document).ready(function(){
  $("button").click(function(){
     $(".children").offset({top:100,left:100})
  })
})
</script>
</head>
<body>
<div class="father">
  <div class="children"></div>
</div>
<button>点击设置偏移量</button>
</body>
</html>

以上代码可以设置div相对于document的偏移量。
语法结构三:$(selector).offset(function(index,oldoffset))。function(index,oldvalue)规定返回被选元素新偏移坐标的函数:index - 可选。元素的索引。oldvalue - 可选。当前坐标。    

<!DOCTYPE html>
<html>
<head>
<meta charset=" utf-8">
<title>offset()</title>
<style type="text/css">
.father{
  border:1px solid black;
  width:400px;
  height:300px;
}
.children{
  height:150px;
  width:200px;
  background-color:green;
}
</style>
<script type="text/javascript" src="mytest/jQuery/jquery-1.8.3.js"></script>
<script type="text/javascript">
$(document).ready(function(){
  $("button").click(function(){
    $(".children").offset(function(a,b){
      var newpoint= new Object();
      newpoint.top=b.top+50;
      newpoint.left=b.left+50;
      return newpoint;
    })
  })
})
</script>
</head>
<body>
<div class="father">
  <div class="children"></div>
</div>
<button>点击设置偏移量</button>
</body>
</html>

position()方法的定义和用法:此方法获取匹配元素相对某些元素的偏移量。返回一个包含两个整型属性(top和left)的对象。此方法只对可见元素有效。特别说明:偏移是从匹配元素的margin外边距开始计算的。语法:$(selector).position()

<!DOCTYPE html>
<html>
<head>
<meta charset=" utf-8">
<title>position()</title>
<style type="text/css">
*{
  margin:0px;
  padding:0px;
}
.father{
  background-color:green;
  width:200px;
  height:200px;
  padding:50px;
  margin-bottom:50px;
  margin-left:100px;
}
.children{
  height:150px;
  width:150px;
  background-color:red;
  line-height:150px;
  text-align:center;
}
</style>
<script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
  $(".children").each(function(){
   var text;
   text="left:"+$(this).position().left;
   text+="top:"+$(this).position().top;
   $(this).text(text);
  })
})
</script>
</head>
<body>
<div class="father" style="position:relative">
  <div class="children"></div>
</div>
<div class="father">
  <div class="children"></div>
</div>
</body>
</html>

希望可以帮到你~

  • 提问者 唐小贱 #1
    老师,我问的是设置position(),不是获取啊?
    2017-06-18 20:24:45
  • 卡布琦诺 回复 提问者 唐小贱 #2
    仔细看一下案例,案例中有关于设置position()的方法哦
    2017-06-19 09:20:54
  • 提问者 唐小贱 回复 卡布琦诺 #3
    看不懂啊,能不能举一个简单一点的案例?
    2017-06-19 09:32:33
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
前端小白入门系列课程
  • 参与学习           人
  • 提交作业       11218    份
  • 解答问题       36713    个

从一个不会编程的小白到一个老司机是需要过程的,首先得入门,学习基础知识,然后才能进阶,最后再到精通,本专题是你走进前端世界的不二选择!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师