aboutsummaryrefslogtreecommitdiffstats
path: root/demos/slider/side-scroll.html
diff options
context:
space:
mode:
authorRichard Worth <rdworth@gmail.com>2009-03-03 11:15:16 +0000
committerRichard Worth <rdworth@gmail.com>2009-03-03 11:15:16 +0000
commitc701c7126cadee162f7783ae0d5b6003ca9e1b16 (patch)
tree14c8abb71cc44b719b98fe0e8f97b03eff7da272 /demos/slider/side-scroll.html
parentf291a813115b8b25d11f542ba2d4353189a868d4 (diff)
downloadjquery-ui-c701c7126cadee162f7783ae0d5b6003ca9e1b16.tar.gz
jquery-ui-c701c7126cadee162f7783ae0d5b6003ca9e1b16.zip
reverted r2179 (demos: removed Slider 'Simple scrollbar' and Tabs 'Simple manipulation' for now as both have issues in Safari) restoring broken demos to trunk so they can be worked on for the next release (1.7.1)
Diffstat (limited to 'demos/slider/side-scroll.html')
-rw-r--r--demos/slider/side-scroll.html135
1 files changed, 135 insertions, 0 deletions
diff --git a/demos/slider/side-scroll.html b/demos/slider/side-scroll.html
new file mode 100644
index 000000000..5357eb18c
--- /dev/null
+++ b/demos/slider/side-scroll.html
@@ -0,0 +1,135 @@
+<!doctype html>
+<html lang="en">
+<head>
+ <title>jQuery UI Slider - Slider scrollbar</title>
+ <link type="text/css" href="../../themes/base/ui.all.css" rel="stylesheet" />
+ <script type="text/javascript" src="../../jquery-1.3.2.js"></script>
+ <script type="text/javascript" src="../../ui/ui.core.js"></script>
+ <script type="text/javascript" src="../../ui/ui.slider.js"></script>
+ <link type="text/css" href="../demos.css" rel="stylesheet" />
+ <style type="text/css">
+ #demo-frame > div.demo { padding: 10px !important; }
+ .scroll-pane { overflow: auto; width: 99%; float:left; }
+ .scroll-content { width: 2440px; float: left; }
+ .scroll-content-item { width: 100px; height: 100px; float: left; margin: 10px; font-size: 3em; line-height: 96px; text-align: center; }
+ * html .scroll-content-item { display: inline; } /* IE6 float double margin bug */
+ .scroll-bar-wrap { clear: left; padding: 0 4px 0 2px; margin: 0 -1px -1px -1px; }
+ .scroll-bar-wrap .ui-slider { background: none; border:0; height: 2em; margin: 0 auto; }
+ .scroll-bar-wrap .ui-handle-helper-parent { position: relative; width: 100%; height: 100%; margin: 0 auto; }
+ .scroll-bar-wrap .ui-slider-handle { top:.2em; height: 1.5em; }
+ .scroll-bar-wrap .ui-slider-handle .ui-icon { margin: -8px auto 0; position: relative; top: 50%; }
+ </style>
+ <script type="text/javascript">
+ $(function() {
+ //scrollpane parts
+ var scrollPane = $('.scroll-pane');
+ var scrollContent = $('.scroll-content');
+
+ //build slider
+ var scrollbar = $(".scroll-bar").slider({
+ slide:function(e, ui){
+ if( scrollContent.width() > scrollPane.width() ){ scrollContent.css('margin-left', Math.round( ui.value / 100 * ( scrollPane.width() - scrollContent.width() )) + 'px'); }
+ else { scrollContent.css('margin-left', 0); }
+ }
+ });
+
+ //append icon to handle
+ var handleHelper = scrollbar.find('.ui-slider-handle')
+ .mousedown(function(){
+ scrollbar.width( handleHelper.width() );
+ })
+ .mouseup(function(){
+ scrollbar.width( '100%' );
+ })
+ .append('<span class="ui-icon ui-icon-grip-dotted-vertical"></span>')
+ .wrap('<div class="ui-handle-helper-parent"></div>').parent();
+
+ //change overflow to hidden now that slider handles the scrolling
+ scrollPane.css('overflow','hidden');
+
+ //size scrollbar and handle proportionally to scroll distance
+ function sizeScrollbar(){
+ var remainder = scrollContent.width() - scrollPane.width();
+ var proportion = remainder / scrollContent.width();
+ var handleSize = scrollPane.width() - (proportion * scrollPane.width());
+ scrollbar.find('.ui-slider-handle').css({
+ width: handleSize,
+ 'margin-left': -handleSize/2
+ });
+ handleHelper.width('').width( scrollbar.width() - handleSize);
+ }
+
+ //reset slider value based on scroll content position
+ function resetValue(){
+ var remainder = scrollPane.width() - scrollContent.width();
+ var leftVal = scrollContent.css('margin-left') == 'auto' ? 0 : parseInt(scrollContent.css('margin-left'));
+ var percentage = Math.round(leftVal / remainder * 100);
+ scrollbar.slider("value", percentage);
+ }
+ //if the slider is 100% and window gets larger, reveal content
+ function reflowContent(){
+ var showing = scrollContent.width() + parseInt( scrollContent.css('margin-left') );
+ var gap = scrollPane.width() - showing;
+ if(gap > 0){
+ scrollContent.css('margin-left', parseInt( scrollContent.css('margin-left') ) + gap);
+ }
+ }
+
+ //change handle position on window resize
+ $(window)
+ .resize(function(){
+ resetValue();
+ sizeScrollbar();
+ reflowContent();
+ });
+ //init scrollbar size
+ setTimeout(sizeScrollbar,10);//safari wants a timeout
+ });
+ </script>
+</head>
+<body>
+
+<div class="demo">
+
+<div class="scroll-pane ui-widget ui-widget-header ui-corner-all">
+ <div class="scroll-content">
+ <div class="scroll-content-item ui-widget-header">1</div>
+ <div class="scroll-content-item ui-widget-header">2</div>
+ <div class="scroll-content-item ui-widget-header">3</div>
+ <div class="scroll-content-item ui-widget-header">4</div>
+ <div class="scroll-content-item ui-widget-header">5</div>
+ <div class="scroll-content-item ui-widget-header">6</div>
+ <div class="scroll-content-item ui-widget-header">7</div>
+ <div class="scroll-content-item ui-widget-header">8</div>
+ <div class="scroll-content-item ui-widget-header">9</div>
+ <div class="scroll-content-item ui-widget-header">10</div>
+ <div class="scroll-content-item ui-widget-header">11</div>
+ <div class="scroll-content-item ui-widget-header">12</div>
+ <div class="scroll-content-item ui-widget-header">13</div>
+ <div class="scroll-content-item ui-widget-header">14</div>
+ <div class="scroll-content-item ui-widget-header">15</div>
+ <div class="scroll-content-item ui-widget-header">16</div>
+ <div class="scroll-content-item ui-widget-header">17</div>
+ <div class="scroll-content-item ui-widget-header">18</div>
+ <div class="scroll-content-item ui-widget-header">19</div>
+ <div class="scroll-content-item ui-widget-header">20</div>
+ </div>
+ <div class="scroll-bar-wrap ui-widget-content ui-corner-bottom">
+ <div class="scroll-bar"></div>
+ </div>
+</div>
+
+
+
+</div><!-- End demo -->
+
+
+
+<div class="demo-description">
+
+<p>Use a slider to manipulate the positioning of content on the page. In this case, it acts as a scrollbar with the potential to capture values if needed.</p>
+
+</div><!-- End demo-description -->
+
+</body>
+</html>