课程表

jQuery UI 基础

jQuery UI 主题

jQuery UI 部件库

jQuery UI 参考手册

jQuery UI 实例

工具箱
速查手册

滑块(Slider)

当前位置:免费教程 » JS/JS库/框架 » jQuery UI

拖动手柄来选择一个数值。

如需了解更多有关 slider 部件的细节,请查看 API 文档 滑块部件(Slider Widget)

默认功能

基本的滑块是水平的,有一个单一的手柄,可以用鼠标或箭头键进行移动。

  1. <!doctype html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="utf-8">
  5. <title>jQuery UI 滑块(Slider) - 默认功能</title>
  6. <link rel="stylesheet" href="//code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css">
  7. <script src="//code.jquery.com/jquery-1.9.1.js"></script>
  8. <script src="//code.jquery.com/ui/1.10.4/jquery-ui.js"></script>
  9. <link rel="stylesheet" href="http://jqueryui.com/resources/demos/style.css">
  10. <script>
  11. $(function() {
  12. $( "#slider" ).slider();
  13. });
  14. </script>
  15. </head>
  16. <body>
  17. <div id="slider"></div>
  18. </body>
  19. </html>

我要试一下

颜色选择器

组合了三个滑块,来创建一个简单的 RGB 颜色选择器。

  1. <!doctype html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="utf-8">
  5. <title>jQuery UI 滑块(Slider) - 颜色选择器</title>
  6. <link rel="stylesheet" href="//code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css">
  7. <script src="//code.jquery.com/jquery-1.9.1.js"></script>
  8. <script src="//code.jquery.com/ui/1.10.4/jquery-ui.js"></script>
  9. <link rel="stylesheet" href="http://jqueryui.com/resources/demos/style.css">
  10. <style>
  11. #red, #green, #blue {
  12. float: left;
  13. clear: left;
  14. width: 300px;
  15. margin: 15px;
  16. }
  17. #swatch {
  18. width: 120px;
  19. height: 100px;
  20. margin-top: 18px;
  21. margin-left: 350px;
  22. background-image: none;
  23. }
  24. #red .ui-slider-range { background: #ef2929; }
  25. #red .ui-slider-handle { border-color: #ef2929; }
  26. #green .ui-slider-range { background: #8ae234; }
  27. #green .ui-slider-handle { border-color: #8ae234; }
  28. #blue .ui-slider-range { background: #729fcf; }
  29. #blue .ui-slider-handle { border-color: #729fcf; }
  30. </style>
  31. <script>
  32. function hexFromRGB(r, g, b) {
  33. var hex = [
  34. r.toString( 16 ),
  35. g.toString( 16 ),
  36. b.toString( 16 )
  37. ];
  38. $.each( hex, function( nr, val ) {
  39. if ( val.length === 1 ) {
  40. hex[ nr ] = "0" + val;
  41. }
  42. });
  43. return hex.join( "" ).toUpperCase();
  44. }
  45. function refreshSwatch() {
  46. var red = $( "#red" ).slider( "value" ),
  47. green = $( "#green" ).slider( "value" ),
  48. blue = $( "#blue" ).slider( "value" ),
  49. hex = hexFromRGB( red, green, blue );
  50. $( "#swatch" ).css( "background-color", "#" + hex );
  51. }
  52. $(function() {
  53. $( "#red, #green, #blue" ).slider({
  54. orientation: "horizontal",
  55. range: "min",
  56. max: 255,
  57. value: 127,
  58. slide: refreshSwatch,
  59. change: refreshSwatch
  60. });
  61. $( "#red" ).slider( "value", 255 );
  62. $( "#green" ).slider( "value", 140 );
  63. $( "#blue" ).slider( "value", 60 );
  64. });
  65. </script>
  66. </head>
  67. <body class="ui-widget-content" style="border:0;">
  68. <p class="ui-state-default ui-corner-all ui-helper-clearfix" style="padding:4px;">
  69. <span class="ui-icon ui-icon-pencil" style="float:left; margin:-2px 5px 0 0;"></span>
  70. 简单的颜色选择器
  71. </p>
  72. <div id="red"></div>
  73. <div id="green"></div>
  74. <div id="blue"></div>
  75. <div id="swatch" class="ui-widget-content ui-corner-all"></div>
  76. </body>
  77. </html>

我要试一下

多个滑块

组合水平的和垂直的滑块,每个都带有各自的选项,来创建一个音乐播放器的 UI。

  1. <!doctype html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="utf-8">
  5. <title>jQuery UI 滑块(Slider) - 多个滑块</title>
  6. <link rel="stylesheet" href="//code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css">
  7. <script src="//code.jquery.com/jquery-1.9.1.js"></script>
  8. <script src="//code.jquery.com/ui/1.10.4/jquery-ui.js"></script>
  9. <link rel="stylesheet" href="http://jqueryui.com/resources/demos/style.css">
  10. <style>
  11. #eq span {
  12. height:120px; float:left; margin:15px
  13. }
  14. </style>
  15. <script>
  16. $(function() {
  17. // 设置主音量
  18. $( "#master" ).slider({
  19. value: 60,
  20. orientation: "horizontal",
  21. range: "min",
  22. animate: true
  23. });
  24. // 设置图形均衡器
  25. $( "#eq > span" ).each(function() {
  26. // 从标记读取初始值并删除
  27. var value = parseInt( $( this ).text(), 10 );
  28. $( this ).empty().slider({
  29. value: value,
  30. range: "min",
  31. animate: true,
  32. orientation: "vertical"
  33. });
  34. });
  35. });
  36. </script>
  37. </head>
  38. <body>
  39. <p class="ui-state-default ui-corner-all ui-helper-clearfix" style="padding:4px;">
  40. <span class="ui-icon ui-icon-volume-on" style="float:left; margin:-2px 5px 0 0;"></span>
  41. 主音量
  42. </p>
  43. <div id="master" style="width:260px; margin:15px;"></div>
  44. <p class="ui-state-default ui-corner-all" style="padding:4px;margin-top:4em;">
  45. <span class="ui-icon ui-icon-signal" style="float:left; margin:-2px 5px 0 0;"></span>
  46. 图形均衡器
  47. </p>
  48. <div id="eq">
  49. <span>88</span>
  50. <span>77</span>
  51. <span>55</span>
  52. <span>33</span>
  53. <span>40</span>
  54. <span>45</span>
  55. <span>70</span>
  56. </div>
  57. </body>
  58. </html>

我要试一下

范围滑块

设置 range 选项为 true,来获取带有两个拖拽手柄的值的范围。手柄之间的控件用不同的背景颜色填充来表示该区间的值是可选择的。

  1. <!doctype html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="utf-8">
  5. <title>jQuery UI 滑块(Slider) - 范围滑块</title>
  6. <link rel="stylesheet" href="//code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css">
  7. <script src="//code.jquery.com/jquery-1.9.1.js"></script>
  8. <script src="//code.jquery.com/ui/1.10.4/jquery-ui.js"></script>
  9. <link rel="stylesheet" href="http://jqueryui.com/resources/demos/style.css">
  10. <script>
  11. $(function() {
  12. $( "#slider-range" ).slider({
  13. range: true,
  14. min: 0,
  15. max: 500,
  16. values: [ 75, 300 ],
  17. slide: function( event, ui ) {
  18. $( "#amount" ).val( "$" + ui.values[ 0 ] + " - $" + ui.values[ 1 ] );
  19. }
  20. });
  21. $( "#amount" ).val( "$" + $( "#slider-range" ).slider( "values", 0 ) +
  22. " - $" + $( "#slider-range" ).slider( "values", 1 ) );
  23. });
  24. </script>
  25. </head>
  26. <body>
  27. <p>
  28. <label for="amount">价格范围:</label>
  29. <input type="text" id="amount" style="border:0; color:#f6931f; font-weight:bold;">
  30. </p>
  31. <div id="slider-range"></div>
  32. </body>
  33. </html>

我要试一下

带有固定最大值的范围

固定范围滑块的最大值,用户只能选择最小值。设置 range 选项为 "max"。

  1. <!doctype html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="utf-8">
  5. <title>jQuery UI 滑块(Slider) - 带有固定最大值的范围</title>
  6. <link rel="stylesheet" href="//code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css">
  7. <script src="//code.jquery.com/jquery-1.9.1.js"></script>
  8. <script src="//code.jquery.com/ui/1.10.4/jquery-ui.js"></script>
  9. <link rel="stylesheet" href="http://jqueryui.com/resources/demos/style.css">
  10. <script>
  11. $(function() {
  12. $( "#slider-range-max" ).slider({
  13. range: "max",
  14. min: 1,
  15. max: 10,
  16. value: 2,
  17. slide: function( event, ui ) {
  18. $( "#amount" ).val( ui.value );
  19. }
  20. });
  21. $( "#amount" ).val( $( "#slider-range-max" ).slider( "value" ) );
  22. });
  23. </script>
  24. </head>
  25. <body>
  26. <p>
  27. <label for="amount">最小的房间数量:</label>
  28. <input type="text" id="amount" style="border:0; color:#f6931f; font-weight:bold;">
  29. </p>
  30. <div id="slider-range-max"></div>
  31. </body>
  32. </html>

我要试一下

带有固定最小值的范围

固定范围滑块的最小值,用户只能选择最大值。设置 range 选项为 "min"。

  1. <!doctype html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="utf-8">
  5. <title>jQuery UI 滑块(Slider) - 带有固定最小值的范围</title>
  6. <link rel="stylesheet" href="//code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css">
  7. <script src="//code.jquery.com/jquery-1.9.1.js"></script>
  8. <script src="//code.jquery.com/ui/1.10.4/jquery-ui.js"></script>
  9. <link rel="stylesheet" href="http://jqueryui.com/resources/demos/style.css">
  10. <script>
  11. $(function() {
  12. $( "#slider-range-min" ).slider({
  13. range: "min",
  14. value: 37,
  15. min: 1,
  16. max: 700,
  17. slide: function( event, ui ) {
  18. $( "#amount" ).val( "$" + ui.value );
  19. }
  20. });
  21. $( "#amount" ).val( "$" + $( "#slider-range-min" ).slider( "value" ) );
  22. });
  23. </script>
  24. </head>
  25. <body>
  26. <p>
  27. <label for="amount">最大价格:</label>
  28. <input type="text" id="amount" style="border:0; color:#f6931f; font-weight:bold;">
  29. </p>
  30. <div id="slider-range-min"></div>
  31. </body>
  32. </html>

我要试一下

绑定到 select 的滑块

如何绑定一个滑块到一个已有的 select 元素。选择保持可见以便显示变化。当选择改变时,同时更新滑块。

  1. <!doctype html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="utf-8">
  5. <title>jQuery UI 滑块(Slider) - 绑定到 select 的滑块</title>
  6. <link rel="stylesheet" href="//code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css">
  7. <script src="//code.jquery.com/jquery-1.9.1.js"></script>
  8. <script src="//code.jquery.com/ui/1.10.4/jquery-ui.js"></script>
  9. <link rel="stylesheet" href="http://jqueryui.com/resources/demos/style.css">
  10. <script>
  11. $(function() {
  12. var select = $( "#minbeds" );
  13. var slider = $( "<div id='slider'></div>" ).insertAfter( select ).slider({
  14. min: 1,
  15. max: 6,
  16. range: "min",
  17. value: select[ 0 ].selectedIndex + 1,
  18. slide: function( event, ui ) {
  19. select[ 0 ].selectedIndex = ui.value - 1;
  20. }
  21. });
  22. $( "#minbeds" ).change(function() {
  23. slider.slider( "value", this.selectedIndex + 1 );
  24. });
  25. });
  26. </script>
  27. </head>
  28. <body>
  29. <form id="reservation">
  30. <label for="minbeds">最小的床位数</label>
  31. <select name="minbeds" id="minbeds">
  32. <option>1</option>
  33. <option>2</option>
  34. <option>3</option>
  35. <option>4</option>
  36. <option>5</option>
  37. <option>6</option>
  38. </select>
  39. </form>
  40. </body>
  41. </html>

我要试一下

滑块滚动条

使用滑块来操作页面上内容的定位。本实例中,它是一个能获取值的滚动条。

  1. <!doctype html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="utf-8">
  5. <title>jQuery UI 滑块(Slider) - 滑块滚动条</title>
  6. <link rel="stylesheet" href="//code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css">
  7. <script src="//code.jquery.com/jquery-1.9.1.js"></script>
  8. <script src="//code.jquery.com/ui/1.10.4/jquery-ui.js"></script>
  9. <link rel="stylesheet" href="http://jqueryui.com/resources/demos/style.css">
  10. <style>
  11. .scroll-pane { overflow: auto; width: 99%; float:left; }
  12. .scroll-content { width: 2440px; float: left; }
  13. .scroll-content-item { width: 100px; height: 100px; float: left; margin: 10px; font-size: 3em; line-height: 96px; text-align: center; }
  14. .scroll-bar-wrap { clear: left; padding: 0 4px 0 2px; margin: 0 -1px -1px -1px; }
  15. .scroll-bar-wrap .ui-slider { background: none; border:0; height: 2em; margin: 0 auto; }
  16. .scroll-bar-wrap .ui-handle-helper-parent { position: relative; width: 100%; height: 100%; margin: 0 auto; }
  17. .scroll-bar-wrap .ui-slider-handle { top:.2em; height: 1.5em; }
  18. .scroll-bar-wrap .ui-slider-handle .ui-icon { margin: -8px auto 0; position: relative; top: 50%; }
  19. </style>
  20. <script>
  21. $(function() {
  22. //滚动面板部分
  23. var scrollPane = $( ".scroll-pane" ),
  24. scrollContent = $( ".scroll-content" );
  25. //创建滑块
  26. var scrollbar = $( ".scroll-bar" ).slider({
  27. slide: function( event, ui ) {
  28. if ( scrollContent.width() > scrollPane.width() ) {
  29. scrollContent.css( "margin-left", Math.round(
  30. ui.value / 100 * ( scrollPane.width() - scrollContent.width() )
  31. ) + "px" );
  32. } else {
  33. scrollContent.css( "margin-left", 0 );
  34. }
  35. }
  36. });
  37. //追加要处理的图标
  38. var handleHelper = scrollbar.find( ".ui-slider-handle" )
  39. .mousedown(function() {
  40. scrollbar.width( handleHelper.width() );
  41. })
  42. .mouseup(function() {
  43. scrollbar.width( "100%" );
  44. })
  45. .append( "<span class='ui-icon ui-icon-grip-dotted-vertical'></span>" )
  46. .wrap( "<div class='ui-handle-helper-parent'></div>" ).parent();
  47. //由于滑块手柄滚动,改变要隐藏的溢出部分
  48. scrollPane.css( "overflow", "hidden" );
  49. //根据要滚动距离按比例定义滚动条和手柄的尺寸
  50. function sizeScrollbar() {
  51. var remainder = scrollContent.width() - scrollPane.width();
  52. var proportion = remainder / scrollContent.width();
  53. var handleSize = scrollPane.width() - ( proportion * scrollPane.width() );
  54. scrollbar.find( ".ui-slider-handle" ).css({
  55. width: handleSize,
  56. "margin-left": -handleSize / 2
  57. });
  58. handleHelper.width( "" ).width( scrollbar.width() - handleSize );
  59. }
  60. //基于滚动内容位置,重置滑块的值
  61. function resetValue() {
  62. var remainder = scrollPane.width() - scrollContent.width();
  63. var leftVal = scrollContent.css( "margin-left" ) === "auto" ? 0 :
  64. parseInt( scrollContent.css( "margin-left" ) );
  65. var percentage = Math.round( leftVal / remainder * 100 );
  66. scrollbar.slider( "value", percentage );
  67. }
  68. //如果滑块是 100%,且窗口变大,则显示内容
  69. function reflowContent() {
  70. var showing = scrollContent.width() + parseInt( scrollContent.css( "margin-left" ), 10 );
  71. var gap = scrollPane.width() - showing;
  72. if ( gap > 0 ) {
  73. scrollContent.css( "margin-left", parseInt( scrollContent.css( "margin-left" ), 10 ) + gap );
  74. }
  75. }
  76. //当缩放窗口时改变手柄的位置
  77. $( window ).resize(function() {
  78. resetValue();
  79. sizeScrollbar();
  80. reflowContent();
  81. });
  82. //初始化滚动条大小
  83. setTimeout( sizeScrollbar, 10 );//safari 超时
  84. });
  85. </script>
  86. </head>
  87. <body>
  88. <div class="scroll-pane ui-widget ui-widget-header ui-corner-all">
  89. <div class="scroll-content">
  90. <div class="scroll-content-item ui-widget-header">1</div>
  91. <div class="scroll-content-item ui-widget-header">2</div>
  92. <div class="scroll-content-item ui-widget-header">3</div>
  93. <div class="scroll-content-item ui-widget-header">4</div>
  94. <div class="scroll-content-item ui-widget-header">5</div>
  95. <div class="scroll-content-item ui-widget-header">6</div>
  96. <div class="scroll-content-item ui-widget-header">7</div>
  97. <div class="scroll-content-item ui-widget-header">8</div>
  98. <div class="scroll-content-item ui-widget-header">9</div>
  99. <div class="scroll-content-item ui-widget-header">10</div>
  100. <div class="scroll-content-item ui-widget-header">11</div>
  101. <div class="scroll-content-item ui-widget-header">12</div>
  102. <div class="scroll-content-item ui-widget-header">13</div>
  103. <div class="scroll-content-item ui-widget-header">14</div>
  104. <div class="scroll-content-item ui-widget-header">15</div>
  105. <div class="scroll-content-item ui-widget-header">16</div>
  106. <div class="scroll-content-item ui-widget-header">17</div>
  107. <div class="scroll-content-item ui-widget-header">18</div>
  108. <div class="scroll-content-item ui-widget-header">19</div>
  109. <div class="scroll-content-item ui-widget-header">20</div>
  110. </div>
  111. <div class="scroll-bar-wrap ui-widget-content ui-corner-bottom">
  112. <div class="scroll-bar"></div>
  113. </div>
  114. </div>
  115. </body>
  116. </html>

我要试一下

对齐增量

通过把 step 选项设置为一个整数来设置滑块值的增量,通常是滑块最大值的除数。默认增量是 1。

  1. <!doctype html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="utf-8">
  5. <title>jQuery UI 滑块(Slider) - 对齐增量</title>
  6. <link rel="stylesheet" href="//code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css">
  7. <script src="//code.jquery.com/jquery-1.9.1.js"></script>
  8. <script src="//code.jquery.com/ui/1.10.4/jquery-ui.js"></script>
  9. <link rel="stylesheet" href="http://jqueryui.com/resources/demos/style.css">
  10. <script>
  11. $(function() {
  12. $( "#slider" ).slider({
  13. value:100,
  14. min: 0,
  15. max: 500,
  16. step: 50,
  17. slide: function( event, ui ) {
  18. $( "#amount" ).val( "$" + ui.value );
  19. }
  20. });
  21. $( "#amount" ).val( "$" + $( "#slider" ).slider( "value" ) );
  22. });
  23. </script>
  24. </head>
  25. <body>
  26. <p>
  27. <label for="amount">捐款金额($50 增量):</label>
  28. <input type="text" id="amount" style="border:0; color:#f6931f; font-weight:bold;">
  29. </p>
  30. <div id="slider"></div>
  31. </body>
  32. </html>

我要试一下

垂直的范围滑块

改变范围滑块的方向为垂直的。通过 .height() 分配一个高度值,或通过 CSS 设置高度,同时设置 orientation 选项为 "vertical"。

  1. <!doctype html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="utf-8">
  5. <title>jQuery UI 滑块(Slider) - 垂直的范围滑块</title>
  6. <link rel="stylesheet" href="//code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css">
  7. <script src="//code.jquery.com/jquery-1.9.1.js"></script>
  8. <script src="//code.jquery.com/ui/1.10.4/jquery-ui.js"></script>
  9. <link rel="stylesheet" href="http://jqueryui.com/resources/demos/style.css">
  10. <script>
  11. $(function() {
  12. $( "#slider-range" ).slider({
  13. orientation: "vertical",
  14. range: true,
  15. values: [ 17, 67 ],
  16. slide: function( event, ui ) {
  17. $( "#amount" ).val( "$" + ui.values[ 0 ] + " - $" + ui.values[ 1 ] );
  18. }
  19. });
  20. $( "#amount" ).val( "$" + $( "#slider-range" ).slider( "values", 0 ) +
  21. " - $" + $( "#slider-range" ).slider( "values", 1 ) );
  22. });
  23. </script>
  24. </head>
  25. <body>
  26. <p>
  27. <label for="amount">销售目标(百万):</label>
  28. <input type="text" id="amount" style="border:0; color:#f6931f; font-weight:bold;">
  29. </p>
  30. <div id="slider-range" style="height:250px;"></div>
  31. </body>
  32. </html>

我要试一下

垂直的滑块

改变滑块的方向为垂直的。通过 .height() 分配一个高度值,或通过 CSS 设置高度,同时设置 orientation 选项为 "vertical"。

  1. <!doctype html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="utf-8">
  5. <title>jQuery UI 滑块(Slider) - 垂直的滑块</title>
  6. <link rel="stylesheet" href="//code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css">
  7. <script src="//code.jquery.com/jquery-1.9.1.js"></script>
  8. <script src="//code.jquery.com/ui/1.10.4/jquery-ui.js"></script>
  9. <link rel="stylesheet" href="http://jqueryui.com/resources/demos/style.css">
  10. <script>
  11. $(function() {
  12. $( "#slider-vertical" ).slider({
  13. orientation: "vertical",
  14. range: "min",
  15. min: 0,
  16. max: 100,
  17. value: 60,
  18. slide: function( event, ui ) {
  19. $( "#amount" ).val( ui.value );
  20. }
  21. });
  22. $( "#amount" ).val( $( "#slider-vertical" ).slider( "value" ) );
  23. });
  24. </script>
  25. </head>
  26. <body>
  27. <p>
  28. <label for="amount">体积:</label>
  29. <input type="text" id="amount" style="border:0; color:#f6931f; font-weight:bold;">
  30. </p>
  31. <div id="slider-vertical" style="height:200px;"></div>
  32. </body>
  33. </html>

查看演示

转载本站内容时,请务必注明来自W3xue,违者必究。
 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号