Skip to content

Commit 5cc2414

Browse files
Merge pull request #51 from victor-homyakov/patch-11
Optimize performance in `Element#clonePosition` by skipping unnecessary measurements.
2 parents 0617e85 + 040c028 commit 5cc2414

File tree

1 file changed

+16
-13
lines changed

1 file changed

+16
-13
lines changed

src/prototype/dom/layout.js

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
21
(function() {
32

43
// Converts a CSS percentage value to a decimal.
@@ -1505,20 +1504,24 @@
15051504
// Find page position of source.
15061505
source = $(source);
15071506
element = $(element);
1508-
var p = Element.viewportOffset(source), delta = [0, 0];
1509-
1510-
// A delta of 0/0 will work for `positioned: fixed` elements, but
1511-
// for `position: absolute` we need to get the parent's offset.
1512-
if (Element.getStyle(element, 'position') === 'absolute') {
1513-
var parent = Element.getOffsetParent(element);
1514-
if (parent !== document.body) delta = Element.viewportOffset(parent);
1507+
var p, delta, layout, styles = {};
1508+
1509+
if (options.setLeft || options.setTop) {
1510+
p = Element.viewportOffset(source);
1511+
delta = [0, 0];
1512+
// A delta of 0/0 will work for `positioned: fixed` elements, but
1513+
// for `position: absolute` we need to get the parent's offset.
1514+
if (Element.getStyle(element, 'position') === 'absolute') {
1515+
var parent = Element.getOffsetParent(element);
1516+
if (parent !== document.body) delta = Element.viewportOffset(parent);
1517+
}
15151518
}
1516-
1517-
var layout = Element.getLayout(source);
1518-
1519+
1520+
if (options.setWidth || options.setHeight) {
1521+
layout = Element.getLayout(source);
1522+
}
1523+
15191524
// Set position.
1520-
var styles = {};
1521-
15221525
if (options.setLeft)
15231526
styles.left = (p[0] - delta[0] + options.offsetLeft) + 'px';
15241527
if (options.setTop)

0 commit comments

Comments
 (0)