【发布时间】:2009-07-25 17:29:52
【问题描述】:
CSS 不支持 margin-left: -60px + 50% of the width of the parent div 等算术运算。但我这样做的愿望是压倒性的。有人知道使用 JavaScript 或其他方式的解决方案吗?
谢谢
迈克
【问题讨论】:
标签: javascript html css
CSS 不支持 margin-left: -60px + 50% of the width of the parent div 等算术运算。但我这样做的愿望是压倒性的。有人知道使用 JavaScript 或其他方式的解决方案吗?
谢谢
迈克
【问题讨论】:
标签: javascript html css
试试这个:
var elem = document.getElementById("foobar"),
parent = elem.parentNode;
while (parent && parent.nodeName != "DIV") {
parent = parent.parentNode;
}
if (parent.nodeName == "DIV") {
elem.style.marginLeft = - 60 + (parent.style.width * 0.5) + "px";
} else {
elem.style.marginLeft = "-60px";
}
【讨论】:
getElementById 只是一个例子。 getElementsByClassName 已在某些浏览器中实现,但尚未全部实现。所以你应该更好地使用像jQuery这样的框架。请参阅 thedz 的答案。
getElementsByClassName 返回具有该类的元素列表。因此,您必须遍历该列表(简单的for 循环)并将所有内容放入该循环中。所以:var elems = document.getElementsByClassName("innerBox"); for (var i=0; i<elems.length; i++) { var elem = elems[i], parent = elem.parentNode; … }.
使用 JS 当然可以,但具体代码会根据您使用的内容(原版、框架等)而有所不同。这是一个 jQuery 示例:
$('#div').css('width', (-60+($('#div').parent().width()*.5))+'px');
【讨论】: