jQuery UI 实例 – 定位(Position)
相对窗口、文档、锚、光标/鼠标等元素定位一个元素。
如需了解更多有关 .position()
方法的细节,请查看 API 文档 .position()。
默认功能
使用表单控件配置位置,或者拖拽被定位的元素来修改它的偏移量。向四周拖拽父元素来查看碰撞检测。
<!doctype html> <html lang=\"en\"> <head> <meta charset=\"utf-8\"> <title>jQuery UI 定位(Position) - 默认功能</title> <link rel=\"stylesheet\" href=\"//code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css\"> <script src=\"//code.jquery.com/jquery-1.9.1.js\"></script> <script src=\"//code.jquery.com/ui/1.10.4/jquery-ui.js\"></script> <link rel=\"stylesheet\" href=\"http://jqueryui.com/resources/demos/style.css\"> <style> #parent { width: 60%; height: 40px; margin: 10px auto; padding: 5px; border: 1px solid #777; background-color: #fbca93; text-align: center; } .positionable { position: absolute; display: block; right: 0; bottom: 0; background-color: #bcd5e6; text-align: center; } #positionable1 { width: 75px; height: 75px; } #positionable2 { width: 120px; height: 40px; } select, input { margin-left: 15px; } </style> <script> $(function() { 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() }); } $( \".positionable\" ).css( \"opacity\", 0.5 ); $( \"select, input\" ).bind( \"click keyup change\", position ); $( \"#parent\" ).draggable({ drag: position }); position(); }); </script> </head> <body> <div> <p> 这是父元素的位置。 </p> </div> <div> <p> to position </p> </div> <div> <p> to position 2 </p> </div> <div style=\"padding: 20px; margin-top: 75px;\"> 定位... <div style=\"padding-bottom: 20px;\"> <b>my:</b> <select> <option value=\"left\">left</option> <option value=\"center\">center</option> <option value=\"right\">right</option> </select> <select> <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> <option value=\"left\">left</option> <option value=\"center\">center</option> <option value=\"right\">right</option> </select> <select> <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> <option value=\"flip\">flip</option> <option value=\"fit\">fit</option> <option value=\"flipfit\">flipfit</option> <option value=\"none\">none</option> </select> <select> <option value=\"flip\">flip</option> <option value=\"fit\">fit</option> <option value=\"flipfit\">flipfit</option> <option value=\"none\">none</option> </select> </div> </div> </body> </html>
图像循环
一个照片浏览器的原型,使用 Position 分别把图片定为在左边、中间、右边,然后循环显示。使用顶部的链接来循环图像,或者在图像的左侧或右侧点击来循环图像。请注意,当调整窗口大小时,会重新定位图像。
<!doctype html> <html lang=\"en\"> <head> <meta charset=\"utf-8\"> <title>jQuery UI 定位(Position) - 图像循环</title> <link rel=\"stylesheet\" href=\"//code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css\"> <script src=\"//code.jquery.com/jquery-1.9.1.js\"></script> <script src=\"//code.jquery.com/ui/1.10.4/jquery-ui.js\"></script> <link rel=\"stylesheet\" href=\"http://jqueryui.com/resources/demos/style.css\"> <style> body { margin: 0; } #container { overflow: hidden; position: relative; height: 400px; } img { position: absolute; } </style> <script> $(function() { // 重构部件,去除这些插件方法 $.fn.left = function( using ) { return this.position({ my: \"right middle\", at: \"left+25 middle\", of: \"#container\", collision: \"none\", using: using }); }; $.fn.right = function( using ) { return this.position({ my: \"left middle\", at: \"right-25 middle\", of: \"#container\", collision: \"none\", using: using }); }; $.fn.center = function( using ) { return this.position({ my: \"center middle\", at: \"center middle\", of: \"#container\", using: using }); }; $( \"img:eq(0)\" ).left(); $( \"img:eq(1)\" ).center(); $( \"img:eq(2)\" ).right(); function animate( to ) { $( this ).stop( true, false ).animate( to ); } function next( event ) { event.preventDefault(); $( \"img:eq(2)\" ).center( animate ); $( \"img:eq(1)\" ).left( animate ); $( \"img:eq(0)\" ).right().appendTo( \"#container\" ); } function previous( event ) { event.preventDefault(); $( \"img:eq(0)\" ).center( animate ); $( \"img:eq(1)\" ).right( animate ); $( \"img:eq(2)\" ).left().prependTo( \"#container\" ); } $( \"#previous\" ).click( previous ); $( \"#next\" ).click( next ); $( \"img\" ).click(function( event ) { $( \"img\" ).index( this ) === 0 ? previous( event ) : next( event ); }); $( window ).resize(function() { $( \"img:eq(0)\" ).left( animate ); $( \"img:eq(1)\" ).center( animate ); $( \"img:eq(2)\" ).right( animate ); }); }); </script> </head> <body> <div> <img loading=\"lazy\" src=\"/wp-content/uploads/2014/03/earth.jpg\" width=\"458\" height=\"308\" alt=\"earth\"> <img loading=\"lazy\" src=\"/wp-content/uploads/2014/03/flight.jpg\" width=\"512\" height=\"307\" alt=\"flight\"> <img loading=\"lazy\" src=\"/wp-content/uploads/2014/03/rocket.jpg\" width=\"300\" height=\"353\" alt=\"rocket\"> <a href=\"#\">上一个</a> <a href=\"#\">下一个</a> </div> </body> </html>
点我分享笔记