- From: Garrett Smith <dhtmlkitchen@gmail.com>
- Date: Mon, 30 Jun 2008 17:19:23 -0700
- To: Www-style <www-style@w3.org>
How does a line box get it's - top - value?
In firefox, the top value seems to include the parent line boxes leading.
Is there a way to calculate the position of an element and assert that
that calculation is correct?
IOW, If I have a line box B in a line box P, and B has text-align:
top, it seems that B's top value is starting at the leading P's line
box.
Is this correct? If so, then how can I know where P's line box starts?
Here is an example of that, where B is #target and P is #c1:-
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type"
content="text/html; charset=iso-8859-1" />
<title>Client Rect: Inline</title>
<style type="text/css">
body {
position: relative;
margin:0;
padding:0;
font-size:0;
height: 100px;
}
#target {
position: relative;
top: 0;
left: 1px;
padding: 0;
font-size: 12px;
line-height: 14px;
display: inline;
background: #FF0;
font-family: courier new;
vertical-align: top;
}
#c1 {
position: absolute;
left: 1px;
top: 0;
height: 90px;
padding:0;
background: #00c;
line-height: 20em;
}
</style>
</head>
<body>
<div id="c1">
<a id="target">a</a>
</div>
<script>
(function testTargetInline() {
// XXX Fails in Firefox 3.
// http://meyerweb.com/eric/thoughts/2008/05/06/line-height-abnormal/
var target = document.getElementById("target");
var coords = target.getBoundingClientRect( );
alert([3 + 2, coords.top, "target was display: inline; position:
relative"]);
target.style.fontFamily = "courier";
setTimeout(function(){
coords = target.getBoundingClientRect( );
alert([3 + 2, coords.top, "switched to " + target.style.fontFamily]);
},40)();
})();
</script>
</body>
</html>
Garrett
Received on Tuesday, 1 July 2008 00:20:01 UTC