Search and Top Navigation
#7691 closed bug (notabug)
Opened September 04, 2011 08:47PM UTC
Closed September 05, 2011 01:53AM UTC
In webkit browsers elements positioned using percentages will not be positioned correctly
| Reported by: | maximiato | Owned by: | |
|---|---|---|---|
| Priority: | minor | Milestone: | 1.9.0 |
| Component: | ui.position | Version: | 1.8.9 |
| Keywords: | Cc: | ||
| Blocked by: | Blocking: |
Description
When positioning an element with CSS top and left coordinates set in percentages, the ui.position component will not position the elements correctly at another element. I was able to reproduce this in:
Safari 5.1 on Mac OS X Lion,
Google Chrome 13.0.782.220 on Mac OS X Lion,
Google Chrome 13.0.782.220 on Windows 7
It does not happen in Firefox, so I guess this is a Webkit browser issue. The jQuery UI version I tested was 1.8.9. In the test case if you press the buttons 'Position DIV 1 (Relative) to DIV 4/5' or 'Position DIV 2 (Relative) to DIV 4/5', the element should be positioned to the right bottom of the destination DIV. This does not happen, the elements will be positioned incorrectly. 20% will simply change to 20px instead of the correct conversion.
Code to reproduce this error:
<html>
<head>
<title>jQuery UI Position bug test case</title>
<script src='/js/jquery/jquery.js' type='text/javascript'></script>
<script src='/js/jquery/ui/jquery.ui.core.js' type='text/javascript'></script>
<script src='/js/jquery/ui/jquery.ui.widget.js' type='text/javascript'></script>
<script src='/js/jquery/ui/jquery.ui.position.js' type='text/javascript'></script>
<style type="text/css">
body {
font-family: "Lucida Sans", 'Verdana', sans-serif;
}
div {
position: absolute;
}
.relative {
background-color: #DDFFDD;
border: 1px solid #000;
z-index: 1;
}
.absolute {
background-color: #FFDDDD;
border: 1px solid #000;
z-index: 2;
}
.destination {
background-color: #DDDDFF;
border: 1px solid #000;
z-index: 0;
}
</style>
<script type="text/javascript">
function position1() {
$('#relative1').position({my:'right bottom',at:'right bottom',of:$('#destination1')});
}
function position2() {
$('#relative2').position({my:'right bottom',at:'right bottom',of:$('#destination1')});
}
function position3() {
$('#absolute').position({my:'right bottom',at:'right bottom',of:$('#destination1')});
}
function position4() {
$('#relative1').position({my:'right bottom',at:'right bottom',of:$('#destination2')});
}
function position5() {
$('#relative2').position({my:'right bottom',at:'right bottom',of:$('#destination2')});
}
function position6() {
$('#absolute').position({my:'right bottom',at:'right bottom',of:$('#destination2')});
}
</script>
</head>
<body>
<button onmouseup="position1()">Position DIV 1 (Relative) at DIV 4</button>
<button onmouseup="position2()">Position DIV 2 (Relative) at DIV 4</button>
<button onmouseup="position3()">Position DIV 3 (Absolute) at DIV 4</button>
<button onmouseup="position4()">Position DIV 1 (Relative) at DIV 5</button>
<button onmouseup="position5()">Position DIV 2 (Relative) at DIV 5</button>
<button onmouseup="position6()">Position DIV 3 (Absolute) at DIV 5</button><br />
The DIVs should be positioned to the right bottom of the destination DIV.
In Safari or Chrome the first time positioning the DIV,
the DIV goes to the wrong coordinates
(% gets changed to px without the right conversion).
This only happens with DIV's positioned using percentages, with absolute
and relative I am referring to the CSS coordinates, not to the CSS property. All
DIVs have the absolute position property.
<div class='relative' id='relative1' style='top:100px;left:20%;width:200px;'>Relative DIV 1</div>
<div class='relative' id='relative2' style='top:50%;left:15%;width:15%;'>Relative DIV 2</div>
<div class='absolute' id='absolute' style='top:500px;left:100px;'>Absolute DIV 3</div>
<div class='destination' id='destination1' style='top:50%;left:50%;width:200px;height:200px;'>
DIV 4 that will be aligned with,
positioned relatively
</div>
<div class='destination' id='destination2' style='top:100px;left:600px;width:200px;height:200px;'>
DIV 5 that will be aligned with,
positioned absolutely
</div>
</body>
</html>
Attachments (0)
Change History (1)
Changed September 05, 2011 01:53AM UTC by comment:1
| resolution: | → invalid |
|---|---|
| status: | new → closed |
Position doesn't support percentages. See #7028 for the feature request.