Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如果元素定位设置为绝对,则jQuery position()返回零值

如果元素定位设置为绝对,则jQuery position()返回零值
EN

Stack Overflow用户
提问于 2013-05-11 15:19:58
回答 1查看 4.1K关注 0票数 1

我有一些带有"area“类的div,它们是相邻浮动的。我有以下jQuery代码:

代码语言:javascript
运行
AI代码解释
复制
$(".area").each(function(){
    var pos = $(this).position();
    $(this).css({"left":pos.left, "top":pos.top});
});

这可以很好地工作,但遗憾的是,当元素静态定位时,浏览器不会考虑top和left。如果我修改元素的position值,pos.left和pos.top都为零。也就是说,如果我有这样的代码:

代码语言:javascript
运行
AI代码解释
复制
$(".area").each(function(){
    var pos = $(this).position();
    $(this).css({"left":pos.left, "top":pos.top, "position":"absolute"});
});

然后,$(this).position()始终返回{left:0,top:0}。我是误解了$.position()的工作原理,还是误解了CSS position的工作原理,还是这是个bug?有没有人对如何解决这个问题有什么建议?

EN

回答 1

Stack Overflow用户

发布于 2013-05-11 16:15:36

跟进我的评论。我创建了一个jsFiddle示例来解释发生了什么。

当您定位第一个.area时,它会将其从流中移除,现在您的第二个.area将占据它的位置。这在$.each()中的每个迭代中都会继续。所以如果你的第一个元素从位置0,0开始,那么当它移动到绝对位置时,下一个元素就变成了0,0。理想情况下,您需要先保存一个包含位置的数组,然后重新定位它们:

代码语言:javascript
运行
AI代码解释
复制
$(".area").each(function () {
    var pos = $(this).position();
    savedPos.push({
        left: pos.left,
        top: pos.top
    });
});
$(".area").each(function (i) {
    $(this).css({
        "position": 'absolute',
        "left": savedPos[i].left,
        "top": savedPos[i].top
    });
});

或在设置左/右后设置位置:

代码语言:javascript
运行
AI代码解释
复制
$(".area").each(function () {
    var pos = $(this).position();
    $(this).css({
        "left":pos.left,
        "top": pos.top
    });
});
$('.area').css('position','absolute');
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16498639

复制
相关文章
【CSS】使用绝对定位 / 浮动解决外边距塌陷问题 ( 为父容器 / 子元素设置内边距 / 边框 | 为子元素设置浮动 | 为子元素设置绝对定位 )
如果 子盒子设置 100 像素的外边距 , 父盒子也会被带下来 , 这就是外边距塌陷 ;
韩曙亮
2023/04/16
1.4K0
【CSS】使用绝对定位 / 浮动解决外边距塌陷问题 ( 为父容器 / 子元素设置内边距 / 边框 | 为子元素设置浮动 | 为子元素设置绝对定位 )
【CSS】绝对定位元素设置 水平 / 垂直 居中 ( 绝对定位元素居中设置 - 先偏移 50% 再回退子元素一半尺寸 | 绝对定位居中设置 )
绝对定位 不能通过 设置 margin: auto; 样式的方式 , 设置盒子模型水平居中 ;
韩曙亮
2023/04/16
3.5K0
【CSS】绝对定位元素设置 水平 / 垂直 居中 ( 绝对定位元素居中设置 - 先偏移 50% 再回退子元素一半尺寸 | 绝对定位居中设置 )
CSS 布局_3 Position元素定位
我们之前已经介绍过行元素,块元素及行内块元素的属性了,能够知道它们是具有自己默认的显示方式的,即元素会按照文档流 (document flow) 的方式,自上而下,从左到右进行布局,如果你想要改变元素默认的定位行为,就需要设置 position 属性了
Nian糕
2018/08/21
9640
CSS 布局_3 Position元素定位
绝对定位bottom值为0的位置问题
该文讲述了绝对定位元素bottom为0时,会定位到文档底部的问题,通过分析包含块、initial containing block等概念,得出了bottom:0的div会定位到文档底部的结论。
练小习
2017/12/29
2.3K0
【CSS】定位 ⑤ ( 子元素绝对定位 父元素相对定位 | 代码示例 )
此时就要求父容器必须稳定 , 如果父容器使用了 绝对布局 , 父容器就不会保留位置 ,
韩曙亮
2023/04/16
2.1K0
【CSS】定位 ⑤ ( 子元素绝对定位 父元素相对定位 | 代码示例 )
python后的返回值为零
python后的返回值为零python后的返回值为零python后的返回值为零python后的返回值为零python后的返回值为零python后的返回值为零python后的返回值为零python后的返回值为零python后的返回值为零python后的返回值为零python后的返回值为零python后的返回值为零python后的返回值为零python后的返回值为零python后的返回值为零python后的返回值为零python后的返回值为零python后的返回值为零python后的返回值为零python后的返回值为零python后的返回值为零python后的返回值为零python后的返回值为零python后的返回值为零python后的返回值为零
狼啸风云
2019/03/15
1.9K0
python后的返回值为零
【CSS】通过定位修改 display 显示模式 ( Display 显示模式转换 | inline-block 改块元素为行内块元素示例 | 为块元素设置浮动 | 为块元素设置定位 )
行内盒子 , 一旦使用了 浮动 / 绝对定位 / 固定定位 就可以将该盒子看做 行内块元素 盒子 , 为该盒子设置宽高等属性 ;
韩曙亮
2023/04/16
1.4K0
【CSS】通过定位修改 display 显示模式 ( Display 显示模式转换 | inline-block 改块元素为行内块元素示例 | 为块元素设置浮动 | 为块元素设置定位 )
Position定位
CSS中position属性是比较常用的元素定位方案,position常用的取值有static、relative、absolute、fixed、sticky、inherit。
WindRunnerMax
2020/08/27
1K0
定位(position)
静态定位是所有元素的默认定位方式,当position属性的取值为static时,可以将元素定位于静态位置。 所谓静态位置就是各个元素在HTML文档流中默认的位置。
星辰_大海
2020/09/30
1.3K0
CSS Position 定位
生成绝对定位的元素,其相对于 static 定位以外的第一个父元素进行定位,会脱离normal flow。注意:是除了static外
Autooooooo
2020/11/09
1.2K0
CSS Position 定位
nginx设置header如果没有值
map 指令是由 ngx_http_map_module 模块提供的,默认情况下安装 nginx 都会安装该模块。
十毛
2022/08/23
1.4K0
nginx设置header如果没有值
CSS 定位布局 - 绝对、固定定位设置居中悬浮div
在上一篇 CSS 定位布局 - 相对、绝对、固定三种定位 中,发现当使用定位布局的时候,存在一个无法使用margin居中的方法。
Devops海洋的渔夫
2019/05/31
3.5K0
jQuery获取和设置元素属性
之前使用css方法可以给标签设置样式属性,那么设置标签的其它属性可以使用prop方法了。
落雨
2022/03/01
31K0
jQuery获取和设置元素内容
1. html方法的使用 jquery中的html方法可以获取和设置标签的html内容 示例代码: <script> $(function(){ var $div = $("#div1"); // 获取标签的html内容 var result = $div.html(); alert(result); // 设置标签的html内容,之前的内容会清除 $div.html("<span style='c
落雨
2022/03/01
31.2K0
CSS-定位(position)
静态定位是所有元素的默认定位方式,当position属性的取值为static时,可以将元素定位于静态位置。 所谓静态位置就是各个元素在HTML文档流中默认的位置。
用户9615083
2022/12/25
1.6K0
CSS-定位(position)
从零开始学 Web 之 jQuery(五)操作元素其他属性,为元素绑定事件
如果我们在设置为原来宽高2倍的时候,就要先把获取的宽高转换成数字类型,再乘以2,这样操作比较麻烦,有没有简单的方法呢?
Daotin
2018/08/31
6230
css中绝对定位_绝对定位和相对定位怎么用
bottom属性描述时,以首屏页面左下角为参考点 如果浏览器不动,滚动条动的时候,红色盒子跟随页面动,红绿盒子间距不变。
全栈程序员站长
2022/11/17
2.7K0
css中绝对定位_绝对定位和相对定位怎么用
jQuery offset和position
在jQuery中,offset和position是用于获取元素在文档中位置信息的方法。这两个方法可以帮助我们定位和操作元素。
堕落飞鸟
2023/05/18
7090
jQuery源码解析之offset()
解析: 由于$().offset()没有参数,所以源码里的两个 if 可以忽略,所以offset()的本质即:
进击的小进进
2022/03/28
1.2K0
jQuery源码解析之offset()
前端:CSS定位position
需要注意的是,设置了 left的元素不能再设置 right,设置了 top的元素不能再设置 bottom,反过来也是一样。如果同时设置的话,left的优先级高于 right,top优先级高于 bottom(不论它们出现的位置如何)。
渔父歌
2020/03/26
5200

相似问题

position:绝对元素定位不正确

21

如果输入值为NaN,则返回零

20

如果值小于零,则返回零

12

如果为空,则返回零

20

如果数组的某些元素为零,则返回true

21
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档