diff options
author | Scott González <scott.gonzalez@gmail.com> | 2013-05-16 08:32:58 -0400 |
---|---|---|
committer | Scott González <scott.gonzalez@gmail.com> | 2013-05-16 08:32:58 -0400 |
commit | 0da5f9946d0a87f3bdd47cf8848fd63956e261d3 (patch) | |
tree | cecbe7d184c302c017aedb53aa9f306a54d235e9 | |
parent | 1d3b8ff78eaa3d64a839ba34af34d1e8b24f82af (diff) | |
download | jquery-ui-0da5f9946d0a87f3bdd47cf8848fd63956e261d3.tar.gz jquery-ui-0da5f9946d0a87f3bdd47cf8848fd63956e261d3.zip |
Revert "Position: Use absolute positioning when getting scrollbar width to avoid reflows of user content. Fixes #9291 - Position - $.position.scrollbarWidth detection causes layout issues."
This reverts commit 1d3b8ff78eaa3d64a839ba34af34d1e8b24f82af.
-rw-r--r-- | demos/position/default.html | 150 | ||||
-rw-r--r-- | ui/jquery.ui.position.js | 2 |
2 files changed, 105 insertions, 47 deletions
diff --git a/demos/position/default.html b/demos/position/default.html index f94d316e3..ad5a3d874 100644 --- a/demos/position/default.html +++ b/demos/position/default.html @@ -12,68 +12,126 @@ <script src="../../ui/jquery.ui.position.js"></script> <link rel="stylesheet" href="../demos.css"> <style> - body { - margin: 0; - padding: 0; + #parent { + width: 60%; + height: 40px; + margin: 10px auto; + padding: 5px; + border: 1px solid #777; + background-color: #fbca93; + text-align: center; } - body > div[style*='display'] { - /* Workaround */ - /* position: absolute; */ + .positionable { + position: absolute; + display: block; + right: 0; + bottom: 0; + background-color: #bcd5e6; + text-align: center; } - .blue { - background: blue; - float: left; - width: 100px; + #positionable1 { + width: 75px; + height: 75px; } - .red { - background: red; - float: left; - overflow-y: hidden; + #positionable2 { + width: 120px; + height: 40px; } - .content { - width: 2000px; - height: 400px; - border: 2px solid white; + select, input { + margin-left: 15px; } - #uiPosition { - width: 100px; - height: 100px; - background: #ccc; - } - </style> <script> $(function() { - $( "#redBlock" ).css({ - width: $( window ).width() - $( "#blueBlock" ).width() - }); - $( ".block" ).css({ - height: $( window ).height() - }); + function position() { + $( ".positionable" ).position({ + of: $( "#parent" ), + my: $( "#my_horizontal" ).val() + " " + $( "#my_vertical" ).val(), + at: $( "#at_horizontal" ).val() + " " + $( "#at_vertical" ).val(), + collision: $( "#collision_horizontal" ).val() + " " + $( "#collision_vertical" ).val() + }); + } - $( "button" ).on('click', function (e) { - $( "#uiPosition" ) - .position({ - my: "left top", - at: "left bottom", - of: e.target, - within: $( "#redBlock" ), - collision: "flip" - }); + $( ".positionable" ).css( "opacity", 0.5 ); + + $( "select, input" ).bind( "click keyup change", position ); + + $( "#parent" ).draggable({ + drag: position }); + + position(); }); </script> </head> <body> - <div class="block blue" id="blueBlock"></div> - <div class="block red" id="redBlock"> - <div class="content"> - <button>Position</button> - </div> - </div> +<div id="parent"> + <p> + This is the position parent element. + </p> +</div> + +<div class="positionable" id="positionable1"> + <p> + to position + </p> +</div> + +<div class="positionable" id="positionable2"> + <p> + to position 2 + </p> +</div> - <div id="uiPosition"></div> +<div style="padding: 20px; margin-top: 75px;"> + position... + <div style="padding-bottom: 20px;"> + <b>my:</b> + <select id="my_horizontal"> + <option value="left">left</option> + <option value="center">center</option> + <option value="right">right</option> + </select> + <select id="my_vertical"> + <option value="top">top</option> + <option value="center">center</option> + <option value="bottom">bottom</option> + </select> + </div> + <div style="padding-bottom: 20px;"> + <b>at:</b> + <select id="at_horizontal"> + <option value="left">left</option> + <option value="center">center</option> + <option value="right">right</option> + </select> + <select id="at_vertical"> + <option value="top">top</option> + <option value="center">center</option> + <option value="bottom">bottom</option> + </select> + </div> + <div style="padding-bottom: 20px;"> + <b>collision:</b> + <select id="collision_horizontal"> + <option value="flip">flip</option> + <option value="fit">fit</option> + <option value="flipfit">flipfit</option> + <option value="none">none</option> + </select> + <select id="collision_vertical"> + <option value="flip">flip</option> + <option value="fit">fit</option> + <option value="flipfit">flipfit</option> + <option value="none">none</option> + </select> + </div> +</div> +<div class="demo-description"> +<p>Use the form controls to configure the positioning, or drag the positioned element to modify its offset. +<br>Drag around the parent element to see collision detection in action.</p> +</div> </body> </html> diff --git a/ui/jquery.ui.position.js b/ui/jquery.ui.position.js index d45b24bb1..2d3451c06 100644 --- a/ui/jquery.ui.position.js +++ b/ui/jquery.ui.position.js @@ -70,7 +70,7 @@ $.position = { return cachedScrollbarWidth; } var w1, w2, - div = $( "<div style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>" ), + div = $( "<div style='display:block;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>" ), innerDiv = div.children()[0]; $( "body" ).append( div ); |