aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorScott González <scott.gonzalez@gmail.com>2013-05-16 08:32:58 -0400
committerScott González <scott.gonzalez@gmail.com>2013-05-16 08:32:58 -0400
commit0da5f9946d0a87f3bdd47cf8848fd63956e261d3 (patch)
treececbe7d184c302c017aedb53aa9f306a54d235e9
parent1d3b8ff78eaa3d64a839ba34af34d1e8b24f82af (diff)
downloadjquery-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.html150
-rw-r--r--ui/jquery.ui.position.js2
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 );