【问题标题】:check if element has css position property setted up检查元素是否设置了 css 位置属性
【发布时间】:2017-11-26 01:02:32
【问题描述】:

如何确定父元素是否设置了css位置属性?

if(!$('#element').parent().css('position')){
    //here I need to be sure to avoid no rewrite the old position if position is already setted up
    //absolute fixed etc....
    $('#element').parent().css('position','relative')
}

有些像这样的跨浏览器工作?

【问题讨论】:

  • 这不起作用,因为默认情况下所有元素都会设置一个位置。为了使您的逻辑正常工作,您需要检查该值是否与您想要的值匹配,例如 === 'block'=== 'static'
  • 您建议最好检查所有这些? static absolute fixed sticky initial inherit or empty ?
  • 没有。这将获得计算的样式。计算样式默认不为空,取决于浏览器的所有外部和内部以及默认设置。

标签: javascript jquery


【解决方案1】:

请按照以下方法:

function elementOrParentIsFixed(element) {
    var $element = $(element);
    var $checkElements = $element.add($element.parents());
    var isFixed = false;
    $checkElements.each(function(){
        if ($(this).css("position") === "relative") {
            isFixed = true;
            return false;
        }
    });
    return 
}

【讨论】:

  • If you're going to rip off someone's code at least credit them。更好的是,投票以重复关闭问题。
  • 做了一项研究,发现这对这里有帮助! :) ...边走边学
  • 你甚至无法复制粘贴整个函数
  • @Danish 在我的搜索中,我没有同样的运气:) ...所以我留下了这个想法,但我会为我的情况重写它。然后我会至少检查这些:static absolute fixed sticky
【解决方案2】:

所以基于@Danish 的建议(复制粘贴自:Detect whether an element has position:fixed (possibly by parent element) via jQuery

我写这个:

function parentHasPosition(element){
    var parent = element.parent();
    if(
        parent.css('position') === 'static' ||
        parent.css('position') === 'absolute' ||
        parent.css('position') === 'fixed' ||
        parent.css('position') === 'sticky'
    ){
        return true;
    }
    return false;
}

【讨论】:

    猜你喜欢
    • 2011-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-27
    • 2011-11-03
    • 2011-03-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多