aboutsummaryrefslogtreecommitdiffstats
path: root/tests/visual
diff options
context:
space:
mode:
authorJörn Zaefferer <joern.zaefferer@gmail.com>2012-04-13 16:05:29 +0200
committerJörn Zaefferer <joern.zaefferer@gmail.com>2012-04-13 16:05:29 +0200
commita5fc9eb7db292629271e6414db9e98c3dc60224d (patch)
tree4a69486080e5176ff62490d3fd963ecd72ab1aaf /tests/visual
parentcb67eb535c0f695941235f402cc4b405f70bc022 (diff)
downloadjquery-ui-a5fc9eb7db292629271e6414db9e98c3dc60224d.tar.gz
jquery-ui-a5fc9eb7db292629271e6414db9e98c3dc60224d.zip
Position: Expose target and element dimensions to allow further customization, like calculating the angle between the two elements
Diffstat (limited to 'tests/visual')
-rw-r--r--tests/visual/position/position_feedback.html12
-rw-r--r--tests/visual/position/position_feedback_rotate.html105
2 files changed, 111 insertions, 6 deletions
diff --git a/tests/visual/position/position_feedback.html b/tests/visual/position/position_feedback.html
index 5b50ff32c..f23d8a299 100644
--- a/tests/visual/position/position_feedback.html
+++ b/tests/visual/position/position_feedback.html
@@ -13,13 +13,13 @@
<script type="text/javascript">
$(function() {
function using( position, feedback ) {
- $(this).offset( position );
- $(this).text(feedback.horizontal + " " + feedback.vertical + " " + feedback.important)
$(this)
- .removeClass("left right top bottom center middle vertical horizontal")
- .addClass(feedback.horizontal)
- .addClass(feedback.vertical)
- .addClass(feedback.important);
+ .offset( position )
+ .text( feedback.horizontal + " " + feedback.vertical + " " + feedback.important )
+ .removeClass( "left right top bottom center middle vertical horizontal" )
+ .addClass( feedback.horizontal )
+ .addClass( feedback.vertical )
+ .addClass( feedback.important );
}
var target = $("#target").position({
my: "center",
diff --git a/tests/visual/position/position_feedback_rotate.html b/tests/visual/position/position_feedback_rotate.html
new file mode 100644
index 000000000..a93287e7d
--- /dev/null
+++ b/tests/visual/position/position_feedback_rotate.html
@@ -0,0 +1,105 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="UTF-8" />
+ <title>Position Visual Test: Default</title>
+ <link rel="stylesheet" href="../visual.css" type="text/css" />
+ <link rel="stylesheet" href="../../../themes/base/jquery.ui.all.css" type="text/css" title="ui-theme" />
+ <script type="text/javascript" src="../../../jquery-1.7.2.js"></script>
+ <script type="text/javascript" src="../../../ui/jquery.ui.core.js"></script>
+ <script type="text/javascript" src="../../../ui/jquery.ui.widget.js"></script>
+ <script type="text/javascript" src="../../../ui/jquery.ui.position.js"></script>
+ <script type="text/javascript" src="../../../ui/jquery.ui.menu.js"></script>
+ <script type="text/javascript">
+ $(function() {
+ function using( position, feedback ) {
+ var angleRad = Math.atan2( feedback.target.top + feedback.target.height / 2 - feedback.element.top - feedback.element.height / 2, feedback.target.left + feedback.target.width / 2 - feedback.element.left - feedback.element.width / 2 ) * 180 / Math.PI;
+ var angle = (Math.round( angleRad * 100) / 100 );
+ $(this)
+ .offset( position )
+ .text( feedback.horizontal + " " + feedback.vertical + " " + feedback.important + " " + angle + "°" )
+ .css({
+ "-webkit-transform": "rotate(" + angle + "deg)",
+ "-moz-transform": "rotate(" + angle + "deg)",
+ "-ms-transform": "rotate(" + angle + "deg)",
+ "-o-transform": "rotate(" + angle + "deg)",
+ "transform": "rotate(" + angle + "deg)"
+ });
+ }
+ var target = $("#target").position({
+ my: "center",
+ at: "center",
+ of: window
+ });
+ var element = $(".element");
+ $.each([
+ "center top-100",
+ "right+25 top-50",
+ "right+75 top",
+ "right+75 center",
+ "right+75 bottom",
+ "right+25 bottom+50",
+ "center bottom+100",
+ "left-25 bottom+50",
+ "left-75 bottom",
+ "left-75 center",
+ "left-75 top",
+ "left-25 top-50"
+ ], function(index, direction) {
+ element.clone().insertAfter(target).position({
+ my: "center",
+ at: direction,
+ of: target,
+ using: using
+ })
+ });
+
+ var targetOffset = target.offset();
+ var oppositeElement = element.clone().width(50).appendTo('body');
+ var leftElement = element.clone().width(50).height(150).appendTo('body');
+ var rightElement = element.clone().height(150).width(150).appendTo('body');
+ element.width(150);
+ $(document).on( "mousemove", function(event) {
+ var base = {
+ my: "left top",
+ at: "left top",
+ of: target,
+ using: using
+ }
+ element.position( $.extend({
+ offset: (event.pageX - targetOffset.left) + " " + (event.pageY - targetOffset.top)
+ }, base));
+ oppositeElement.position( $.extend({
+ offset: (-1 * (event.pageX - targetOffset.left)) + " " + (-1 * (event.pageY - targetOffset.top))
+ }, base));
+ leftElement.position( $.extend({
+ offset: (-0.9 * (event.pageX - targetOffset.left)) + " " + (0.9 * (event.pageY - targetOffset.top))
+ }, base));
+ rightElement.position( $.extend({
+ offset: (0.9 * (event.pageX - targetOffset.left)) + " " + (-0.9 * (event.pageY - targetOffset.top))
+ }, base));
+ });
+ });
+ </script>
+ <style>
+ #target, .element {
+ position: absolute;
+ border: 1px solid black;
+ border-radius: 5px;
+ width: 75px;
+ height: 25px;
+ padding: 5px;
+ }
+ #target {
+ height: 75px;
+ }
+ </style>
+</head>
+<body>
+
+ <div id="target">all around me</div>
+
+ <div class="element"></div>
+
+</body>
+</html>