首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >getBoundingClientRect().x of lastChild

getBoundingClientRect().x of lastChild
EN

Stack Overflow用户
提问于 2015-04-30 13:21:15
回答 2查看 940关注 0票数 2

我目前的代码工作得很好:

CSS:

代码语言:javascript
复制
#center
{
    background:#781111;
    color:#fff;
    position:absolute;
    left:50%;
    margin-left:-50px;
    width:100px;
}

#c
{
    position:absolute;
    right:0;
    background:yellow;
    color:#781111;
    width:10px;
}

HTML:

代码语言:javascript
复制
<div id="center">
    <div id="a">a</div>
    <div id="a">b</div>
    <div id="c">c</div>
    &nbsp;
</div>

Javascript:

代码语言:javascript
复制
alert(document.getElementById('center').getBoundingClientRect().x);

现在,直到现在为止,所有的东西都可以很好地工作,但是当我尝试像这样获取lastChild (div#c)时:

代码语言:javascript
复制
alert(document.getElementById('center').lastChild.getBoundingClientRect().x);

它不能正常工作。

这是我的jsFiddle:gangina/3m2n9otr/

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-30 13:43:23

要获得最后一个子元素,您应该使用lastElementChild并获得BoundingClientRect get left属性的x位置,如下所示:

代码语言:javascript
复制
var xLastChild = document.getElementById('center').lastElementChild.getBoundingClientRect().left;

at/3m2n9otr/5/

票数 4
EN

Stack Overflow用户

发布于 2015-04-30 13:24:56

第一个问题:lastChild返回任何节点,而不仅仅是HTML元素。#center的最后一个子节点是Text节点(包含&nbsp;),而不是Element,因此它没有getBoundingClientRect方法。您可以像这样选择#c

代码语言:javascript
复制
document.querySelector('#center > *:last-child')

第二个问题:getBoundingClientRect的结果没有x字段。您可以使用left代替:

代码语言:javascript
复制
document.querySelector('#center > *:last-child').getBoundingClientRect().left

http://jsfiddle.net/3m2n9otr/2/

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29968883

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档