检查div是否有自动保证金

时间:2015-02-04 12:35:27

标签: javascript jquery html css

我有一个带有自动边距的div,位于中心(水平)。

如果div有自动保证金,我想用jQuery检查。

我试图通过.css()获得保证金。 Mozilla Firefox显示0px,Chrome显示多个像素......所以使用这种方法我无法检查div是否有自动边距...

我尝试了什么:

$( document ).ready(function() {
    $("#the_margin").append( $("#example").css("margin-left") );
});

// Check with Chrome and Firefox...
// Firefox returns 0px, but Chrome returns a number of pixels
#example {
  margin: 0 auto 0;
  width: 300px;
  border: 1px solid #CCC;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="example">
  Some Content   
</div>

<div id="the_margin" style="font-weight: bold;">
The left margin is: 
</div>

我该怎么办? 非常感谢!

修改

更清楚:我如何检查如果DIV在JQUERY中有MARGIN自动?

3 个答案:

答案 0 :(得分:0)

我认为您的问题 Mozilla Firefox显示0px,Chrome显示多个像素可以通过这种方式修复: -

#example {
-webkit-margin: 0 auto 0;
-moz-margin: 0 auto 0;
width: 300px;
border: 1px solid #CCC;
}

FIDDLE

您需要在设置margin css

时指定浏览器

答案 1 :(得分:0)

我认为可以计算另一种方式。

仅计算保证金左值的最佳示例:

$('#example').offset().left - $('#example').position().left 

&#13;
&#13;
$(document).ready(function() {
  $("#the_margin").append(
    $('#example').offset().left - $('#example').position().left
  );
});
&#13;
#example {
  margin-top: 0;
  margin-left: auto;
  margin-right: auto;
  margin-bottom: 0;
  position: relative;
  width: 300px;
  border: 1px solid #CCC;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id="example">
  Some Content
</div>

<div id="the_margin" style="font-weight: bold;">
  The left margin is:
</div>
&#13;
&#13;
&#13;

答案 2 :(得分:0)

创建了一个函数,该函数读取css并检查指定的id是否有自动保证金。

JS(JQuery)

function check_center( the_id ) {
    var result = "";
    var sheets = document.styleSheets;
    var attribute_style = $(the_id).attr( "style" );
    if(attribute_style.match(/margin:([a-z0-9- ]+?)auto/) || attribute_style.match(/margin:auto/) || (attribute_style.match(/margin-left:auto/) && attribute_style.match(/margin-right:auto/)) || (attribute_style.match(/margin-left: auto/) && attribute_style.match(/margin-right: auto/)) ) {
        result = "true";
    } else {
    the_id.matches = the_id.matches || the_id.webkitMatchesSelector || the_id.mozMatchesSelector || the_id.msMatchesSelector || the_id.oMatchesSelector;
    for (var i in sheets) {
        var rules = sheets[i].rules || sheets[i].cssRules;
        for (var r in rules) {
            if (the_id.matches(rules[r].selectorText)) {
                if(result != "true") {
                    if(rules[r].cssText.match(/margin:([a-z0-9- ]+?)auto/) || rules[r].cssText.match(/margin:auto/) || (rules[r].cssText.match(/margin-left:auto/) && rules[r].cssText.match(/margin-right:auto/)) || (rules[r].cssText.match(/margin-left: auto/) && rules[r].cssText.match(/margin-right: auto/)) ) {
                     result = "true";
                    } else {
                     result = "false";  
                    }
                }
            }
        }
    }
    }
    if(result == "") {
     result = "false";   
    }
    return result;
}

$( document ).ready(function() {
    $("#the_margin").append( check_center(document.getElementById('example')) );
});

HTML

<div id="example" style="width: 300px;">
    Some Content   
</div>

<div id="the_margin" style="font-weight: bold;">
    The div is centered?  
</div>

CSS

#example {
margin: 0 auto 0;
border: 1px solid #CCC;
}

小提琴http://jsfiddle.net/vn6ajt6r/6/

适用于:

  • 外部样式表
  • 内部样式表
  • 内联样式