首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >getBoundingClientRect()替代方法

getBoundingClientRect()替代方法
EN

Stack Overflow用户
提问于 2017-08-02 22:14:04
回答 2查看 5.3K关注 0票数 2

我使用document.body.getBoundingClientRect().right来发现顶部导航中的所有元素都将从视图中消失,以便将它们隐藏起来,并将它们放在“More”下拉列表中。但是这个函数在safari中似乎不起作用。有没有其他方法可以替代这个函数,或者有什么方法可以在safari中修复它?

代码语言:javascript
复制
var windowRightOffset = document.body.getBoundingClientRect().right,
        elementHiddenFlag = false;

    $(".headerNav").find("li").each(function() {
        if ($(this).className !== 'more') {
            var elemRightOffset = $(this).find("a")[0].getBoundingClientRect().right;
            if (elemRightOffset > windowRightOffset) {
                $(this).hide();
                elementHiddenFlag = true;
                $(".more .moreNavItems-content").append($(this).html());
            }
        }
    });
EN

回答 2

Stack Overflow用户

发布于 2017-08-02 22:24:56

由于您使用的是jQuery,因此可以查看jQuery中的positionoffset函数。

要将您的代码替换为jQuery,您将执行以下操作:

代码语言:javascript
复制
var aTag = $(this).find("a")[0];
var left = aTag.offset().left;
var width = aTag.find("a")[0].width();

var aTagRightOffset = width + left;
票数 1
EN

Stack Overflow用户

发布于 2019-06-03 21:48:03

好的,开始吧:-)

代码语言:javascript
复制
function getBounding(name,index){
    this.ele = document.querySelectorAll(name)[index];
    this.y= this.ele.offsetTop;
    this.x= this.ele.offsetLeft;
    this.coordinates();
  }

  getBounding.prototype.coordinates = function(){
    if( this.ele.localName != "body"){
      this.ele = this.ele.offsetParent;
      this.y += this.ele.offsetTop;
      this.x += this.ele.offsetLeft;
      this.coordinates();
    } else {
      return({x:this.x,y:this.y});
    }
  }

新建getBounding(".-img",0)

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

https://stackoverflow.com/questions/45463348

复制
相关文章

相似问题

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