JavaScript DHTML/GUI Components/Slider

Материал из Web эксперт
Перейти к: навигация, поиск

Slider for color picker

   <source lang="html4strict">

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"

   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml"

   xmlns:x2="http://www.w3.org/TR/xhtml2"
   xmlns:role="http://www.w3.org/2005/01/wai-rdf/GUIRoleTaxonomy#"
   xmlns:state="http://www.w3.org/2005/07/aaa">

<head> <title>Yahoo! UI Library - Slider Widget</title> <link rel="stylesheet" type="text/css" href="./examples/slider/css/screen.css"> <style type="text/css">

 .dragPanel { 
   position: absolute;
   background-color: #eeeeee;
   top: 200px;
   left: 20px;
   width: 320px;
   height: 180px;
 }
 .dragPanel h4 { 
   background-color: #bbbbbb;
   height: 10px;
       margin: 0px;
   cursor: move;
 }
 input { font-size: 85%}
 .thumb { 
   cursor:default;
   width:18px; 
   height:18px; 
   z-index: 9;
   position: absolute; 
       left: 0px;
 }
 .bg {
   position:absolute; 
   left:10px; 
   height:18px; 
   width:146px; 
   border: 0px solid #aaaaaa;
 }
 
 .bg span, .bg p {
   cursor:default;
   position: relative;
   font-size: 2px;
   overflow: hidden;
   color: #aaaaaa;
   top: 4px;
   height: 10px;
   width: 4px;
   display: block;
   float:left;
 }
 .bg span {
   border-top:1px solid #cccccc;
   border-bottom:1px solid #cccccc;
 }
 .bg .lb {
   border-left:1px solid #cccccc;
 }
 .bg .rb {
   border-right:1px solid #cccccc;
 }
 #valdiv { position:absolute; top: 100px; left:10px; } 
 #rBG {top:30px}
 #gBG {top:50px}
 #bBG {top:70px}
 #swatch {
   position:absolute; 
   left:160px; 
   top:34px;
   height:50px; 
   width:50px; 
   border:1px solid #aaaaaa;
 }

</style>

<script type="text/javascript" src="./build/yahoo/yahoo.js" ></script> <script type="text/javascript" src="./build/event/event.js" ></script> <script type="text/javascript" src="./build/logger/logger.js" ></script> <script type="text/javascript" src="./build/dom/dom.js" ></script> <script type="text/javascript" src="./build/animation/animation.js" ></script> <script type="text/javascript" src="./build/dragdrop/dragdrop.js" ></script> <script type="text/javascript" src="./examples/slider/js/color.js" ></script> <script type="text/javascript" src="./examples/slider/js/key.js" ></script> <script type="text/javascript" src="./build/slider/slider-debug.js" ></script></head> <body>

Slider Widget

<style type="text/css">

   #logButtonHeader input { font-size: 80% }

/* logger default styles */ /* font size is controlled here: default 77% */

  1. yui-log {position:absolute;top:1em;right:1em;font-size:77%;text-align:left;}

/* width is controlled here: default 31em */ .yui-log {background-color:#AAA;border:1px solid black;font-family:monospace;z-index:9000;} .yui-log p {margin:1px;padding:.1em;} .yui-log button {font-family:monospace;} .yui-log .yui-log-hd {padding:.5em;background-color:#575757;color:#FFF;} /* height is controlled here: default 20em*/ .yui-log .yui-log-bd {width:100%;height:20em;background-color:#FFF;border:1px solid gray;overflow:auto;} .yui-log .yui-log-ft {margin-top:.5em;margin-bottom:1em;} .yui-log .yui-log-ft .yui-log-categoryfilters {} .yui-log .yui-log-ft .yui-log-sourcefilters {width:100%;border-top:1px solid #575757;margin-top:.75em;padding-top:.75em;} .yui-log .yui-log-btns {position:relative;float:right;bottom:.25em;} .yui-log .yui-log-filtergrp {margin-right:.5em;} .yui-log .info {background-color:#A7CC25;} /* A7CC25 green */ .yui-log .warn {background-color:#F58516;} /* F58516 orange */ .yui-log .error {background-color:#E32F0B;} /* E32F0B red */ .yui-log .time {background-color:#A6C9D7;} /* A6C9D7 blue */ .yui-log .window {background-color:#F2E886;} /* F2E886 tan */

</style>

   <script type="text/javascript">
   YAHOO.example.logApp = function() {
       return {
           init: function() {
               if (YAHOO.widget.Logger) {
                   var reader = new YAHOO.widget.LogReader( "logDiv", 
                           { newestOnTop: true, height: "400px" } );
                   reader._onClickPauseBtn(null, reader);
               }
           }
       };
   } (); 
   YAHOO.util.Event.on(window, "load", YAHOO.example.logApp.init);
   </script>


RGB Slider

The RGB slider implements three slider controls to generate a RGB color. The background color of each slider is also dynamically modified to reflect the colors that could be generated by moving a single slider.

The logger is paused for performance reasons. Click "Resume" to re-enable it.

 

<img src="./examples/slider/img/vline.png" />
<img src="./examples/slider/img/vline.png" />
<img src="./examples/slider/img/vline.png" />
   <form name="rgbform" onsubmit="return userUpdate()">
   RGB
   <input name="rval" id="rval" type="text" value="0" size="4" maxlength="4" />
   <input name="gval" id="gval" type="text" value="0" size="4" maxlength="4" />
   <input name="bval" id="bval" type="text" value="0" size="4" maxlength="4" />
   <input type="button" value="Update" onclick="userUpdate()" />
   Hex: #
   <input name="hexval" id="hexval" type="text" value="" size="6" maxlength="6" />
   <input type="button" value="Update" onclick="userUpdate(true)" />
   <input type="button" value="Reset" onclick="userReset()" />
   </form>
 

<script type="text/javascript">

 var r, g, b;
 var dd;
 function init() {
       rgbInit();
   }
 function rgbInit() {
   r = YAHOO.widget.Slider.getHorizSlider("rBG", "rthumb", 0, 128);
   r.onChange = function(newVal) { listenerUpdate("r", newVal*2); };
   g = YAHOO.widget.Slider.getHorizSlider("gBG", "gthumb", 0, 128);
   g.onChange = function(newVal) { listenerUpdate("g", newVal*2); };
   b = YAHOO.widget.Slider.getHorizSlider("bBG", "bthumb", 0, 128);
   b.onChange = function(newVal) { listenerUpdate("b", newVal*2); };
   initColor();
   dd = new YAHOO.util.DD("ddRGB");
   dd.setHandleElId("pickerHandle");
 }
 window.onload = init;
 function initColor() {
   var ch = " ";
   d = document.createElement("P");
   d.className = "rb";
   r.getEl().appendChild(d);
   d = document.createElement("P");
   d.className = "rb";
   g.getEl().appendChild(d);
   d = document.createElement("P");
   d.className = "rb";
   b.getEl().appendChild(d);
   for (var i=0; i<34; i++) {
     d = document.createElement("SPAN");
     d.id = "rBG" + i
     // d.innerHTML = ch;
     r.getEl().appendChild(d);
     d = document.createElement("SPAN");
     d.id = "gBG" + i
     // d.innerHTML = ch;
     g.getEl().appendChild(d);
     d = document.createElement("SPAN");
     d.id = "bBG" + i
     // d.innerHTML = ch;
     b.getEl().appendChild(d);
   }
   d = document.createElement("P");
   d.className = "lb";
   r.getEl().appendChild(d);
   d = document.createElement("P");
   d.className = "lb";
   g.getEl().appendChild(d);
   d = document.createElement("P");
   d.className = "lb";
   b.getEl().appendChild(d);
   userUpdate();
 }
 function updateSliderColors() {
   var curr, curg, curb;
   curr = Math.min(r.getValue() * 2, 255);
   curg = Math.min(g.getValue() * 2, 255);
   curb = Math.min(b.getValue() * 2, 255);
       YAHOO.log("updateSliderColor " + curr + ", " + curg + ", " + curb);
   var d;
   for (var i=0; i<34; i++) {
     d = document.getElementById("rBG" + i);
     d.style.backgroundColor = 
       "rgb(" + (i*8) + "," + curg + "," + curb + ")";
     d = document.getElementById("gBG" + i);
     d.style.backgroundColor = 
       "rgb(" + curr + "," + (i*8) + "," + curb + ")";
     d = document.getElementById("bBG" + i);
     d.style.backgroundColor = 
       "rgb(" + curr + "," + curg + "," + (i*8) + ")";
   }
   document.getElementById("swatch").style.backgroundColor =
     "rgb(" + curr + "," + curg + "," + curb + ")";
   document.getElementById("hexval").value = 
         YAHOO.util.Color.rgb2hex(curr, curg, curb);
 }
 function listenerUpdate(whichSlider, newVal) {
   if (newVal == 256) {
     newVal = 255;
   }
   document.getElementById(whichSlider + "val").value = newVal;
   updateSliderColors();
 }
 function userUpdate(isHex) {
   var v;
   var f = document.forms["rgbform"];
   if (isHex) {
     var hexval = f["hexval"].value;
     // shorthand #369
     if (hexval.length == 3) {
       var newval = "";
       for (var i=0;i<3;i++) {
         var a = hexval.substr(i, 1);
         newval += a + a;
       }
       hexval = newval;
     }
     YAHOO.log("hexval:" + hexval);
     if (hexval.length != 6) {
       alert("illegal hex code: " + hexval);
     } else {
       var rgb = YAHOO.util.Color.hex2rgb(hexval);
       // alert(rgb.toString());
       if (YAHOO.util.Color.isValidRGB(rgb)) {
         f["rval"].value = rgb[0];
         f["gval"].value = rgb[1];
         f["bval"].value = rgb[2];
       }
     }
   }
   // red
   v = parseFloat(f["rval"].value);
   v = ( isNaN(v) ) ? 0 : Math.round(v);
       YAHOO.log("setValue, r: " + v);
   r.setValue(Math.round(v) / 2);
   v = parseFloat(f["gval"].value);
   v = ( isNaN(v) ) ? 0 : Math.round(v);
       YAHOO.log("setValue, g: " + g);
   g.setValue(Math.round(v) / 2);
   v = parseFloat(f["bval"].value);
   v = ( isNaN(v) ) ? 0 : Math.round(v);
       YAHOO.log("setValue, b: " + b);
   b.setValue(Math.round(v) / 2);
   updateSliderColors();
   return false;
 }
 function userReset() {
   var v;
   var f = document.forms["rgbform"];
   r.setValue(0);
   g.setValue(0);
   b.setValue(0);
 }

</script> </body> </html>


      </source>
   
  

<A href="http://www.wbex.ru/Code/JavaScriptDownload/yui.zip">yui.zip( 3,714 k)</a>


Slider: vertical and horizontal, tick mark, animate the movement of the thumb

   <source lang="html4strict">

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"

   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml"

   xmlns:x2="http://www.w3.org/TR/xhtml2"
   xmlns:role="http://www.w3.org/2005/01/wai-rdf/GUIRoleTaxonomy#"
   xmlns:state="http://www.w3.org/2005/07/aaa">

<head> <title>Yahoo! UI Library - Slider Widget</title> <link rel="stylesheet" type="text/css" href="./examples/dragdrop/css/screen.css"> <style type="text/css"> </style> </head> <body>

Drag and Drop - Slider Widgets

Basic Sliders

The slider widget is an implementation of YAHOO.util.DragDrop It also will use YAHOO.util.Animation if available to animate the movement of the thumb when you click the slider background. The only difference between the two sliders aside from the fact that one is vertical and one horizontal is that the horizontal slider implements the "tick mark" feature of drag and drop; it will "snap" to the tick marks spaced 25 pixels apart.

<img src="./examples/dragdrop/img/vertSlider.png">
                   <form name="formV" onsubmit="return updateVert()">
                   <input name="vertVal" id="vertVal" type="text" value="0" size="4" maxlength="4" />
                   <input type="button" value="Update" onclick="updateVert()" />
                   </form>
<img src="./examples/dragdrop/img/horizSlider.png">
               <form name="formH" onsubmit="return updateHoriz()">
               <input name="horizVal" id="horizVal" type="text" value="0" size="4" maxlength="4" />
               <input type="button" value="Update" onclick="updateHoriz()" />
               </form>

Color Picker

Implements a slider region and a vertical slider to implement an HSV color picker.

 

             <img id="pickerbg" src="./examples/dragdrop/img/pickerbg.png" alt="">
<img src="./examples/dragdrop/img/select.gif">
<img src="./examples/dragdrop/img/hline.png">
               <form name="pickerform" onsubmit="return pickerUpdate()">
               
R <input name="pickerrval" id="pickerrval" type="text" value="0" size="3" maxlength="3" /> H <input name="pickerhval" id="pickerhval" type="text" value="0" size="3" maxlength="3" />
G <input name="pickergval" id="pickergval" type="text" value="0" size="3" maxlength="3" /> S <input name="pickergsal" id="pickersval" type="text" value="0" size="3" maxlength="3" />
B <input name="pickerbval" id="pickerbval" type="text" value="0" size="3" maxlength="3" /> V <input name="pickervval" id="pickervval" type="text" value="0" size="3" maxlength="3" />

# <input name="pickerhexval" id="pickerhexval" type="text" value="0" size="6" maxlength="6" />
</form>
 
 </div>

</div> <script type="text/javascript" src="./build/yahoo/yahoo.js" ></script> <script type="text/javascript" src="./build/event/event.js" ></script> <script type="text/javascript" src="./build/dom/dom.js"></script> <script type="text/javascript" src="./build/logger/logger.js" ></script> <script type="text/javascript" src="./build/dragdrop/dragdrop.js" ></script> <script type="text/javascript" src="./examples/dragdrop/js/color.js" ></script> <script type="text/javascript" src="./examples/dragdrop/js/key.js" ></script> <script type="text/javascript" src="./build/animation/animation.js" ></script> <script type="text/javascript" src="./build/slider/slider.js" ></script> <script type="text/javascript">

 var hue;
 var picker;
 var dd1, dd2;
 var r, g, b;
 function init() {
       standardSliderInit();
       // rgbInit();
       pickerInit();
   }
   // Picker ---------------------------------------------------------
   function pickerInit() {
   hue = YAHOO.widget.Slider.getVertSlider("hueBg", "hueThumb", 0, 180);
   hue.onChange = function(newVal) { hueUpdate(newVal); };
   picker = YAHOO.widget.Slider.getSliderRegion("pickerDiv", "selector", 
       0, 180, 0, 180);
   picker.onChange = function(newX, newY) { pickerUpdate(newX, newY); };
   hueUpdate();
   dd1 = new YAHOO.util.DD("pickerPanel");
   dd1.setHandleElId("pickerHandle");
   dd1.endDrag = function(e) {
     // picker.thumb.resetConstraints();
     // hue.thumb.resetConstraints(); 
       };
 }
 window.onload = init;
 function pickerUpdate(newX, newY) {
   pickerSwatchUpdate();
 }
 function hueUpdate(newVal) {
   var h = (180 - hue.getValue()) / 180;
   if (h == 1) { h = 0; }
   YAHOO.log("hue " + hue.getValue());
   var a = YAHOO.util.Color.hsv2rgb( h, 1, 1);
   document.getElementById("pickerDiv").style.backgroundColor = 
     "rgb(" + a[0] + ", " + a[1] + ", " + a[2] + ")";
   pickerSwatchUpdate();
 }
 function pickerSwatchUpdate() {
   var h = (180 - hue.getValue());
   if (h == 180) { h = 0; }
   document.getElementById("pickerhval").value = (h*2);
   h = h / 180;
   YAHOO.log("h " + hue.getValue());
   var s = picker.getXValue() / 180;
   document.getElementById("pickersval").value = Math.round(s * 100);
   YAHOO.log("s " + s);
   var v = (180 - picker.getYValue()) / 180;
   document.getElementById("pickervval").value = Math.round(v * 100);
   YAHOO.log("v " + v);
   var a = YAHOO.util.Color.hsv2rgb( h, s, v );
   document.getElementById("pickerSwatch").style.backgroundColor = 
     "rgb(" + a[0] + ", " + a[1] + ", " + a[2] + ")";
   document.getElementById("pickerrval").value = a[0];
   document.getElementById("pickergval").value = a[1];
   document.getElementById("pickerbval").value = a[2];
   document.getElementById("pickerhexval").value = 
     YAHOO.util.Color.rgb2hex(a[0], a[1], a[2]);
 }
   // RGB slider ---------------------------------------------------------
 function rgbInit() {
   r = YAHOO.widget.Slider.getHorizSlider("rBG", "rthumb", 0, 128);
   r.onChange = function(newVal) { listenerUpdate("r", newVal*2); };
   g = YAHOO.widget.Slider.getHorizSlider("gBG", "gthumb", 0, 128);
   g.onChange = function(newVal) { listenerUpdate("g", newVal*2); };
   b = YAHOO.widget.Slider.getHorizSlider("bBG", "bthumb", 0, 128);
   b.onChange = function(newVal) { listenerUpdate("b", newVal*2); };
   initColor();
   dd2 = new YAHOO.util.DD("rgbPanel");
   dd2.setHandleElId("rgbHandle");
   dd2.endDrag = function(e) {
     // r.thumb.resetConstraints();
     // g.thumb.resetConstraints();
     // b.thumb.resetConstraints();
   }
 }
 function initColor() {
   var ch = " ";
   d = document.createElement("P");
   d.className = "rb";
   r.getEl().appendChild(d);
   d = document.createElement("P");
   d.className = "rb";
   g.getEl().appendChild(d);
   d = document.createElement("P");
   d.className = "rb";
   b.getEl().appendChild(d);
   for (var i=0; i<34; i++) {
     d = document.createElement("SPAN");
     d.id = "rBG" + i
     // d.innerHTML = ch;
     r.getEl().appendChild(d);
     d = document.createElement("SPAN");
     d.id = "gBG" + i
     // d.innerHTML = ch;
     g.getEl().appendChild(d);
     d = document.createElement("SPAN");
     d.id = "bBG" + i
     // d.innerHTML = ch;
     b.getEl().appendChild(d);
   }
   d = document.createElement("P");
   d.className = "lb";
   r.getEl().appendChild(d);
   d = document.createElement("P");
   d.className = "lb";
   g.getEl().appendChild(d);
   d = document.createElement("P");
   d.className = "lb";
   b.getEl().appendChild(d);
   userUpdate();
 }
 function updateSliderColors() {
   var curr, curg, curb;
   curr = Math.min(r.getValue() * 2, 255);
   curg = Math.min(g.getValue() * 2, 255);
   curb = Math.min(b.getValue() * 2, 255);
       YAHOO.log("updateSliderColor " + curr + ", " + curg + ", " + curb);
   var d;
   for (var i=0; i<34; i++) {
     d = document.getElementById("rBG" + i);
     d.style.backgroundColor = 
       "rgb(" + (i*8) + "," + curg + "," + curb + ")";
     d = document.getElementById("gBG" + i);
     d.style.backgroundColor = 
       "rgb(" + curr + "," + (i*8) + "," + curb + ")";
     d = document.getElementById("bBG" + i);
     d.style.backgroundColor = 
       "rgb(" + curr + "," + curg + "," + (i*8) + ")";
   }
   document.getElementById("rgbSwatch").style.backgroundColor =
     "rgb(" + curr + "," + curg + "," + curb + ")";
   document.getElementById("hexval").value = 
         YAHOO.util.Color.rgb2hex(curr, curg, curb);
 }
 function listenerUpdate(whichSlider, newVal) {
   if (newVal == 256) {
     newVal = 255;
   }
   document.getElementById(whichSlider + "val").value = newVal;
   updateSliderColors();
 }
 function userUpdate(isHex) {
       YAHOO.log("userupdate");
   var v;
   var f = document.forms["rgbform"];
   if (isHex) {
     var hexval = f["hexval"].value;
     // shorthand #369
     if (hexval.length == 3) {
       var newval = "";
       for (var i=0;i<3;i++) {
         var a = hexval.substr(i, 1);
         newval += a + a;
       }
       hexval = newval;
     }
     YAHOO.log("hexval:" + hexval);
     if (hexval.length != 6) {
       alert("illegal hex code: " + hexval);
     } else {
       var rgb = YAHOO.util.Color.hex2rgb(hexval);
       // alert(rgb.toString());
       if (YAHOO.util.Color.isValidRGB(rgb)) {
         f["rval"].value = rgb[0];
         f["gval"].value = rgb[1];
         f["bval"].value = rgb[2];
       }
     }
   }
   // red
   v = parseFloat(f["rval"].value);
   v = ( isNaN(v) ) ? 0 : Math.round(v);
   r.setValue(Math.round(v) / 2);
   v = parseFloat(f["gval"].value);
   v = ( isNaN(v) ) ? 0 : Math.round(v);
   g.setValue(Math.round(v) / 2);
   v = parseFloat(f["bval"].value);
   v = ( isNaN(v) ) ? 0 : Math.round(v);
   b.setValue(Math.round(v) / 2);
   updateSliderColors();
   return false;
 }
 function userReset() {
   var v;
   var f = document.forms["rgbform"];
   r.setValue(0);
   g.setValue(0);
   b.setValue(0);
 }

var slider1, slider2;

 function standardSliderInit() {
   slider1 = YAHOO.widget.Slider.getVertSlider("vertBGDiv", "vertHandleDiv", 0, 200);
   slider1.onChange = function(offsetFromStart) {
     document.getElementById("vertVal").value = offsetFromStart;
   }
   slider2 = YAHOO.widget.Slider.getHorizSlider("horizBGDiv", "horizHandleDiv", 100, 100, 25);
   slider2.onChange = function(offsetFromStart) {
     document.getElementById("horizVal").value = offsetFromStart;
   }
       // if (document.getElementById("vertBGDiv").getAttributeNS) {
           // slider1.focusOnClick = true;
           // slider2.focusOnClick = true;
       // }
 }
 function updateVert() {
   var v = parseFloat(document.forms["formV"]["vertVal"].value, 10);
   if ( isNaN(v) ) v = 0;
   slider1.setValue(Math.round(v));
   return false;
 }
 
 function updateHoriz() {
   var v = parseFloat(document.forms["formH"]["horizVal"].value, 10);
   if ( isNaN(v) ) v = 0;
   slider2.setValue(Math.round(v));
   return false;
 }

// accessibility keypress test function handleHorizSliderKey(slider, ev) {

   YAHOO.log("horizontal slider keypress");
   // Firefox 1.5+ only at this point
   if (!slider.getAttributeNS) {
       return true;
   }
 // var valueNow = parseInt(slider.getAttributeNS("http://www.w3.org/2005/07/aaa", "valuenow"));
 var valueNow = slider2.getValue();
 var valueMin = parseInt(slider.getAttributeNS("http://www.w3.org/2005/07/aaa", "valuemin"));
 var valueMax = parseInt(slider.getAttributeNS("http://www.w3.org/2005/07/aaa", "valuemax"));
 var delta = 0;
 var kc = ev.keyCode;
 YAHOO.log("keycode: " + kc);
 if (kc == YAHOO.util.Key.DOM_VK_LEFT) {
   delta = -25;
 } else if (kc == YAHOO.util.Key.DOM_VK_RIGHT) {
   delta = 25;
 } else if (kc == YAHOO.util.Key.DOM_VK_HOME) {
   delta = -( valueNow - valueMin );
 } else if (kc == YAHOO.util.Key.DOM_VK_END) {
   delta = valueMax - valueNow;
 } else {
   return true;
 }
 
 valueNow += delta;
 slider2.setValue(valueNow, true);
 slider.setAttributeNS("http://www.w3.org/2005/07/aaa", "valuenow", valueNow);
 
 // displaySlider(slider);
 return false;

} function handleVertSliderKey(slider, ev) {

 YAHOO.log("vertical slider keypress");
   // Firefox 1.5+ only at this point
   if (!slider.getAttributeNS) {
       return true;
   }
 // var valueNow = parseInt(slider.getAttributeNS("http://www.w3.org/2005/07/aaa", "valuenow"));
 var valueNow = slider1.getValue();
 var valueMin = parseInt(slider.getAttributeNS("http://www.w3.org/2005/07/aaa", "valuemin"));
 var valueMax = parseInt(slider.getAttributeNS("http://www.w3.org/2005/07/aaa", "valuemax"));
 var delta = 0;
 var kc = ev.keyCode;
 if (kc == YAHOO.util.Key.DOM_VK_UP) {
   delta = -20;
 }
 else if (kc == YAHOO.util.Key.DOM_VK_DOWN) {
   delta = 20;
 }
 else if (kc == YAHOO.util.Key.DOM_VK_HOME) {
   delta = -( valueNow - valueMin );
 }
 else if (kc == YAHOO.util.Key.DOM_VK_END) {
   delta = valueMax - valueNow;
 }
 else {
   return true;
 }
 
 valueNow += delta;
 if (valueNow < valueMin) {
   valueNow = valueMin;
 }
 if (valueNow > valueMax) {
   valueNow = valueMax;
 }  
 slider.setAttributeNS("http://www.w3.org/2005/07/aaa", "valuenow", valueNow);
 
 // displaySlider(slider);
 slider1.setValue(valueNow, true);
 return false;

} </script>


</body> </html>

      </source>
   
  

<A href="http://www.wbex.ru/Code/JavaScriptDownload/yui.zip">yui.zip( 3,714 k)</a>


The RGB slider implements three slider controls to generate a RGB color

   <source lang="html4strict">

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"

   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml"

   xmlns:x2="http://www.w3.org/TR/xhtml2"
   xmlns:role="http://www.w3.org/2005/01/wai-rdf/GUIRoleTaxonomy#"
   xmlns:state="http://www.w3.org/2005/07/aaa">

<head> <title>Yahoo! UI Library - Slider Widget</title> <link rel="stylesheet" type="text/css" href="./examples/slider/css/screen.css"> <style type="text/css">

 .dragPanel { 
   position: absolute;
   background-color: #eeeeee;
   top: 200px;
   left: 20px;
   width: 320px;
   height: 180px;
 }
 .dragPanel h4 { 
   background-color: #bbbbbb;
   height: 10px;
       margin: 0px;
   cursor: move;
 }
 input { font-size: 85%}
 .thumb { 
   cursor:default;
   width:18px; 
   height:18px; 
   z-index: 9;
   position: absolute; 
       left: 0px;
 }
 .bg {
   position:absolute; 
   left:10px; 
   height:18px; 
   width:146px; 
   border: 0px solid #aaaaaa;
 }
 
 .bg span, .bg p {
   cursor:default;
   position: relative;
   font-size: 2px;
   overflow: hidden;
   color: #aaaaaa;
   top: 4px;
   height: 10px;
   width: 4px;
   display: block;
   float:left;
 }
 .bg span {
   border-top:1px solid #cccccc;
   border-bottom:1px solid #cccccc;
 }
 .bg .lb {
   border-left:1px solid #cccccc;
 }
 .bg .rb {
   border-right:1px solid #cccccc;
 }
 #valdiv { position:absolute; top: 100px; left:10px; } 
 #rBG {top:30px}
 #gBG {top:50px}
 #bBG {top:70px}
 #swatch {
   position:absolute; 
   left:160px; 
   top:34px;
   height:50px; 
   width:50px; 
   border:1px solid #aaaaaa;
 }

</style>

<script type="text/javascript" src="./build/yahoo/yahoo.js" ></script> <script type="text/javascript" src="./build/event/event.js" ></script> <script type="text/javascript" src="./build/logger/logger.js" ></script> <script type="text/javascript" src="./build/dom/dom.js" ></script> <script type="text/javascript" src="./build/animation/animation.js" ></script> <script type="text/javascript" src="./build/dragdrop/dragdrop.js" ></script> <script type="text/javascript" src="./examples/slider/js/color.js" ></script> <script type="text/javascript" src="./examples/slider/js/key.js" ></script> <script type="text/javascript" src="./build/slider/slider-debug.js" ></script></head> <body>

Slider Widget

<style type="text/css">

   #logButtonHeader input { font-size: 80% }

/* logger default styles */ /* font size is controlled here: default 77% */

  1. yui-log {position:absolute;top:1em;right:1em;font-size:77%;text-align:left;}

/* width is controlled here: default 31em */ .yui-log {background-color:#AAA;border:1px solid black;font-family:monospace;z-index:9000;} .yui-log p {margin:1px;padding:.1em;} .yui-log button {font-family:monospace;} .yui-log .yui-log-hd {padding:.5em;background-color:#575757;color:#FFF;} /* height is controlled here: default 20em*/ .yui-log .yui-log-bd {width:100%;height:20em;background-color:#FFF;border:1px solid gray;overflow:auto;} .yui-log .yui-log-ft {margin-top:.5em;margin-bottom:1em;} .yui-log .yui-log-ft .yui-log-categoryfilters {} .yui-log .yui-log-ft .yui-log-sourcefilters {width:100%;border-top:1px solid #575757;margin-top:.75em;padding-top:.75em;} .yui-log .yui-log-btns {position:relative;float:right;bottom:.25em;} .yui-log .yui-log-filtergrp {margin-right:.5em;} .yui-log .info {background-color:#A7CC25;} /* A7CC25 green */ .yui-log .warn {background-color:#F58516;} /* F58516 orange */ .yui-log .error {background-color:#E32F0B;} /* E32F0B red */ .yui-log .time {background-color:#A6C9D7;} /* A6C9D7 blue */ .yui-log .window {background-color:#F2E886;} /* F2E886 tan */

</style>

   <script type="text/javascript">
   YAHOO.example.logApp = function() {
       return {
           init: function() {
               if (YAHOO.widget.Logger) {
                   var reader = new YAHOO.widget.LogReader( "logDiv", 
                           { newestOnTop: true, height: "400px" } );
                   reader._onClickPauseBtn(null, reader);
               }
           }
       };
   } (); 
   YAHOO.util.Event.on(window, "load", YAHOO.example.logApp.init);
   </script>


RGB Slider

The RGB slider implements three slider controls to generate a RGB color. The background color of each slider is also dynamically modified to reflect the colors that could be generated by moving a single slider.

The logger is paused for performance reasons. Click "Resume" to re-enable it.

 

<img src="./examples/slider/img/vline.png" />
<img src="./examples/slider/img/vline.png" />
<img src="./examples/slider/img/vline.png" />
   <form name="rgbform" onsubmit="return userUpdate()">
   RGB
   <input name="rval" id="rval" type="text" value="0" size="4" maxlength="4" />
   <input name="gval" id="gval" type="text" value="0" size="4" maxlength="4" />
   <input name="bval" id="bval" type="text" value="0" size="4" maxlength="4" />
   <input type="button" value="Update" onclick="userUpdate()" />
   Hex: #
   <input name="hexval" id="hexval" type="text" value="" size="6" maxlength="6" />
   <input type="button" value="Update" onclick="userUpdate(true)" />
   <input type="button" value="Reset" onclick="userReset()" />
   </form>
 

<script type="text/javascript">

 var r, g, b;
 var dd;
 function init() {
       rgbInit();
   }
 function rgbInit() {
   r = YAHOO.widget.Slider.getHorizSlider("rBG", "rthumb", 0, 128);
   r.onChange = function(newVal) { listenerUpdate("r", newVal*2); };
   g = YAHOO.widget.Slider.getHorizSlider("gBG", "gthumb", 0, 128);
   g.onChange = function(newVal) { listenerUpdate("g", newVal*2); };
   b = YAHOO.widget.Slider.getHorizSlider("bBG", "bthumb", 0, 128);
   b.onChange = function(newVal) { listenerUpdate("b", newVal*2); };
   initColor();
   dd = new YAHOO.util.DD("ddRGB");
   dd.setHandleElId("pickerHandle");
 }
 window.onload = init;
 function initColor() {
   var ch = " ";
   d = document.createElement("P");
   d.className = "rb";
   r.getEl().appendChild(d);
   d = document.createElement("P");
   d.className = "rb";
   g.getEl().appendChild(d);
   d = document.createElement("P");
   d.className = "rb";
   b.getEl().appendChild(d);
   for (var i=0; i<34; i++) {
     d = document.createElement("SPAN");
     d.id = "rBG" + i
     // d.innerHTML = ch;
     r.getEl().appendChild(d);
     d = document.createElement("SPAN");
     d.id = "gBG" + i
     // d.innerHTML = ch;
     g.getEl().appendChild(d);
     d = document.createElement("SPAN");
     d.id = "bBG" + i
     // d.innerHTML = ch;
     b.getEl().appendChild(d);
   }
   d = document.createElement("P");
   d.className = "lb";
   r.getEl().appendChild(d);
   d = document.createElement("P");
   d.className = "lb";
   g.getEl().appendChild(d);
   d = document.createElement("P");
   d.className = "lb";
   b.getEl().appendChild(d);
   userUpdate();
 }
 function updateSliderColors() {
   var curr, curg, curb;
   curr = Math.min(r.getValue() * 2, 255);
   curg = Math.min(g.getValue() * 2, 255);
   curb = Math.min(b.getValue() * 2, 255);
       YAHOO.log("updateSliderColor " + curr + ", " + curg + ", " + curb);
   var d;
   for (var i=0; i<34; i++) {
     d = document.getElementById("rBG" + i);
     d.style.backgroundColor = 
       "rgb(" + (i*8) + "," + curg + "," + curb + ")";
     d = document.getElementById("gBG" + i);
     d.style.backgroundColor = 
       "rgb(" + curr + "," + (i*8) + "," + curb + ")";
     d = document.getElementById("bBG" + i);
     d.style.backgroundColor = 
       "rgb(" + curr + "," + curg + "," + (i*8) + ")";
   }
   document.getElementById("swatch").style.backgroundColor =
     "rgb(" + curr + "," + curg + "," + curb + ")";
   document.getElementById("hexval").value = 
         YAHOO.util.Color.rgb2hex(curr, curg, curb);
 }
 function listenerUpdate(whichSlider, newVal) {
   if (newVal == 256) {
     newVal = 255;
   }
   document.getElementById(whichSlider + "val").value = newVal;
   updateSliderColors();
 }
 function userUpdate(isHex) {
   var v;
   var f = document.forms["rgbform"];
   if (isHex) {
     var hexval = f["hexval"].value;
     // shorthand #369
     if (hexval.length == 3) {
       var newval = "";
       for (var i=0;i<3;i++) {
         var a = hexval.substr(i, 1);
         newval += a + a;
       }
       hexval = newval;
     }
     YAHOO.log("hexval:" + hexval);
     if (hexval.length != 6) {
       alert("illegal hex code: " + hexval);
     } else {
       var rgb = YAHOO.util.Color.hex2rgb(hexval);
       // alert(rgb.toString());
       if (YAHOO.util.Color.isValidRGB(rgb)) {
         f["rval"].value = rgb[0];
         f["gval"].value = rgb[1];
         f["bval"].value = rgb[2];
       }
     }
   }
   // red
   v = parseFloat(f["rval"].value);
   v = ( isNaN(v) ) ? 0 : Math.round(v);
       YAHOO.log("setValue, r: " + v);
   r.setValue(Math.round(v) / 2);
   v = parseFloat(f["gval"].value);
   v = ( isNaN(v) ) ? 0 : Math.round(v);
       YAHOO.log("setValue, g: " + g);
   g.setValue(Math.round(v) / 2);
   v = parseFloat(f["bval"].value);
   v = ( isNaN(v) ) ? 0 : Math.round(v);
       YAHOO.log("setValue, b: " + b);
   b.setValue(Math.round(v) / 2);
   updateSliderColors();
   return false;
 }
 function userReset() {
   var v;
   var f = document.forms["rgbform"];
   r.setValue(0);
   g.setValue(0);
   b.setValue(0);
 }

</script> </body> </html>

      </source>
   
  

<A href="http://www.wbex.ru/Code/JavaScriptDownload/yui.zip">yui.zip( 3,714 k)</a>


Yahoo! UI Library - Slider Widget

   <source lang="html4strict">

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <title>Yahoo! UI Library - Slider Widget</title> <link rel="stylesheet" type="text/css" href="./examples/slider/css/screen.css">

<script type="text/javascript" src="./build/yahoo/yahoo.js" ></script> <script type="text/javascript" src="./build/event/event.js" ></script> <script type="text/javascript" src="./build/logger/logger.js" ></script> <script type="text/javascript" src="./build/dom/dom.js" ></script> <script type="text/javascript" src="./build/animation/animation.js" ></script> <script type="text/javascript" src="./build/dragdrop/dragdrop.js" ></script> <script type="text/javascript" src="./examples/slider/js/color.js" ></script> <script type="text/javascript" src="./examples/slider/js/key.js" ></script> <script type="text/javascript" src="./build/slider/slider-debug.js" ></script></head> <body>

Slider Widget


<style type="text/css">

   #logButtonHeader input { font-size: 80% }

/* logger default styles */ /* font size is controlled here: default 77% */

  1. yui-log {position:absolute;top:1em;right:1em;font-size:77%;text-align:left;}

/* width is controlled here: default 31em */ .yui-log {background-color:#AAA;border:1px solid black;font-family:monospace;z-index:9000;} .yui-log p {margin:1px;padding:.1em;} .yui-log button {font-family:monospace;} .yui-log .yui-log-hd {padding:.5em;background-color:#575757;color:#FFF;} /* height is controlled here: default 20em*/ .yui-log .yui-log-bd {width:100%;height:20em;background-color:#FFF;border:1px solid gray;overflow:auto;} .yui-log .yui-log-ft {margin-top:.5em;margin-bottom:1em;} .yui-log .yui-log-ft .yui-log-categoryfilters {} .yui-log .yui-log-ft .yui-log-sourcefilters {width:100%;border-top:1px solid #575757;margin-top:.75em;padding-top:.75em;} .yui-log .yui-log-btns {position:relative;float:right;bottom:.25em;} .yui-log .yui-log-filtergrp {margin-right:.5em;} .yui-log .info {background-color:#A7CC25;} /* A7CC25 green */ .yui-log .warn {background-color:#F58516;} /* F58516 orange */ .yui-log .error {background-color:#E32F0B;} /* E32F0B red */ .yui-log .time {background-color:#A6C9D7;} /* A6C9D7 blue */ .yui-log .window {background-color:#F2E886;} /* F2E886 tan */

</style>

Links

   <script type="text/javascript">
   YAHOO.example.logApp = function() {
       return {
           init: function() {
               if (YAHOO.widget.Logger) {
                   var reader = new YAHOO.widget.LogReader( "logDiv", 
                           { newestOnTop: true, height: "400px" } );
                   reader._onClickPauseBtn(null, reader);
               }
           }
       };
   } (); 
   YAHOO.util.Event.on(window, "load", YAHOO.example.logApp.init);
   </script>


Slider

This example uses a scale factor to convert pixels into a "real" value.

The logger is paused for performance reasons. Click "Resume" to re-enable it.

<img alt="" src="./examples/slider/img/vertSlider.png" />
                 <form name="formV" id="formV">
                     <input name="vertVal" id="vertVal" type="text" value="0" size="4" maxlength="4" />
                     <input id="vertButton" type="button" value="Update" />
                 </form>
             <input id="re2" type="button" value="removeTicks" />

<script type="text/javascript"> // YAHOO.widget.SliderThumb.prototype.toString = function () {

   // return "ASDF";

// } YAHOO.example.SliderApp = function() {

 var verticalSlider;
   // The slider can move 0 pixels up
   var topConstraint = 0;
   // The slider can move 200 pixels down
   var bottomConstraint = 200;
   // Custom scale factor for converting the pixel offset into a real value
   var scaleFactor = 1.5;
   return {
       init: function() {
           YAHOO.util.Event.addListener("formV", "submit", this.updateVert);
           YAHOO.util.Event.addListener("vertButton", "click", this.updateVert);
           verticalSlider = YAHOO.widget.Slider.getVertSlider("vertBGDiv", 
                            "vertHandleDiv", topConstraint, bottomConstraint, 20);
           verticalSlider.onChange = function(offsetFromStart) {
               // use the scale factor to convert the pixel offset into a
               // real value
               var actualValue = parseInt(offsetFromStart * scaleFactor, 10);
               document.getElementById("vertVal").value = actualValue;
               document.getElementById("vertBGDiv").title = 
                           "Vertical Slider, value = " + actualValue;
           };
           verticalSlider.onSlideStart = function() {
               YAHOO.log("slidestart");
           };
           verticalSlider.onSlideEnd = function() {
               YAHOO.log("slideend");
           };
           // verticalSlider.unreg();
           // verticalSlider.backgroundEnabled = false;
           verticalSlider.setValue(20);
       },
       updateVert: function() {
           var v = parseFloat(document.forms["formV"]["vertVal"].value, 10);
           if ( isNaN(v) ) v = 0;
           // convert the real value into a pixel offset
           verticalSlider.setValue(Math.round(v/scaleFactor));
           return false;
       },
       clearConstraints: function() {
           verticalSlider.getThumb().clearConstraints();
       },
       clearTicks: function() {
           verticalSlider.getThumb().clearTicks();
       }
   };

} (); //YAHOO.example.SliderApp.init(); YAHOO.util.Event.addListener(window, "load", YAHOO.example.SliderApp.init,

                            YAHOO.example.SliderApp, true);

YAHOO.util.Event.addListener("re2", "click", YAHOO.example.SliderApp.clearTicks); </script> </body> </html>

      </source>
   
  

<A href="http://www.wbex.ru/Code/JavaScriptDownload/yui.zip">yui.zip( 3,714 k)</a>


Yahoo! UI Library - Slider Widget 2: animate the movement of the thumb

   <source lang="html4strict">

<!DOCTYPE html PUBLIC "-//W4C//DTD XHTML 1.0 Strict//EN"

   "http://www.w3.org/TR/xhtml2/DTD/xhtml1-strict.dtd">

<html lang="en" xml:lang="en" xmlns="http://www.w4.org/1999/xhtml"

   xmlns:x2="http://www.w3.org/TR/xhtml2"
   xmlns:role="http://www.w3.org/2005/01/wai-rdf/GUIRoleTaxonomy#"
   xmlns:state="http://www.w3.org/2005/07/aaa">

<head> <title>Yahoo! UI Library - Slider Widget</title> <link rel="stylesheet" type="text/css" href="./examples/slider/css/screen.css" ></link>

<script type="text/javascript" src="./build/yahoo/yahoo.js" ></script> <script type="text/javascript" src="./build/event/event.js" ></script> <script type="text/javascript" src="./build/logger/logger.js" ></script> <script type="text/javascript" src="./build/dom/dom.js" ></script> <script type="text/javascript" src="./build/animation/animation.js" ></script> <script type="text/javascript" src="./build/dragdrop/dragdrop.js" ></script> <script type="text/javascript" src="./examples/slider/js/color.js" ></script> <script type="text/javascript" src="./examples/slider/js/key.js" ></script> <script type="text/javascript" src="./build/slider/slider-debug.js" ></script></head> <body>

Slider Widget

<style type="text/css">

   #logButtonHeader input { font-size: 80% }

/* logger default styles */ /* font size is controlled here: default 77% */

  1. yui-log {position:absolute;top:1em;right:1em;font-size:77%;text-align:left;}

/* width is controlled here: default 31em */ .yui-log {background-color:#AAA;border:1px solid black;font-family:monospace;z-index:9000;} .yui-log p {margin:1px;padding:.1em;} .yui-log button {font-family:monospace;} .yui-log .yui-log-hd {padding:.5em;background-color:#575757;color:#FFF;} /* height is controlled here: default 20em*/ .yui-log .yui-log-bd {width:100%;height:20em;background-color:#FFF;border:1px solid gray;overflow:auto;} .yui-log .yui-log-ft {margin-top:.5em;margin-bottom:1em;} .yui-log .yui-log-ft .yui-log-categoryfilters {} .yui-log .yui-log-ft .yui-log-sourcefilters {width:100%;border-top:1px solid #575757;margin-top:.75em;padding-top:.75em;} .yui-log .yui-log-btns {position:relative;float:right;bottom:.25em;} .yui-log .yui-log-filtergrp {margin-right:.5em;} .yui-log .info {background-color:#A7CC25;} /* A7CC25 green */ .yui-log .warn {background-color:#F58516;} /* F58516 orange */ .yui-log .error {background-color:#E32F0B;} /* E32F0B red */ .yui-log .time {background-color:#A6C9D7;} /* A6C9D7 blue */ .yui-log .window {background-color:#F2E886;} /* F2E886 tan */

</style>

   <script type="text/javascript">
   YAHOO.example.logApp = function() {
       return {
           init: function() {
               if (YAHOO.widget.Logger) {
                   var reader = new YAHOO.widget.LogReader( "logDiv", 
                           { newestOnTop: true, height: "400px" } );
                   reader._onClickPauseBtn(null, reader);
               }
           }
       };
   } (); 
   YAHOO.util.Event.on(window, "load", YAHOO.example.logApp.init);
   </script>


Sliders

The slider widget is an implementation of YAHOO.util.DragDrop It also will use YAHOO.util.Animation if available to animate the movement of the thumb when you click the slider background. The only difference between the two sliders aside from the fact that one is vertical and one horizontal is that the horizontal slider implements the "tick mark" feature of drag and drop; it will "snap" to the tick marks spaced 25 pixels apart.

The logger is paused for performance reasons. Click "Resume" to re-enable it.

<img alt="" src="./examples/slider/img/vertSlider.png" />
                 <form name="formV" onsubmit="return updateVert()">
                 <input name="vertVal" id="vertVal" type="text" value="0" size="4" maxlength="4" />
                 <input type="button" value="Update" onclick="updateVert()" />
                 </form>
<img alt="" src="./examples/slider/img/horizSlider.png" />
               <form name="formH" onsubmit="return updateHoriz()">
               <input name="horizVal" id="horizVal" type="text" value="0" size="4" maxlength="4" />
               <input type="button" value="Update" onclick="updateHoriz()" />
               </form>

<script type="text/javascript"> function handleHorizSliderKey(slider, ev) {

 if (gLogger) gLogger.debug("horizontal slider keypress");
 // var valueNow = parseInt(slider.getAttributeNS("http://www.w3.org/2005/07/aaa", "valuenow"), 10);
 var valueNow = horizontalSlider.getValue();
 // var valueMin = parseInt(slider.getAttributeNS("http://www.w3.org/2005/07/aaa", "valuemin"), 10);
 // var valueMax = parseInt(slider.getAttributeNS("http://www.w3.org/2005/07/aaa", "valuemax"), 10);
 var valueMin = horizontalSlider.thumb.rightConstraint;
 var valueMax = horizontalSlider.thumb.leftConstraint;
 var delta = 0;
 var kc = ev.keyCode;
 if (gLogger) gLogger.debug("keycode: " + kc);
 if (kc == YAHOO.util.Key.DOM_VK_LEFT) {
   delta = -25;
 } else if (kc == YAHOO.util.Key.DOM_VK_RIGHT) {
   delta = 25;
 } else if (kc == YAHOO.util.Key.DOM_VK_HOME) {
   delta = -( valueNow - valueMin );
 } else if (kc == YAHOO.util.Key.DOM_VK_END) {
   delta = valueMax - valueNow;
 } else {
   return true;
 }
 
 valueNow += delta;
 horizontalSlider.setValue(valueNow, true);
   if (slider.setAttributeNS) {
     slider.setAttributeNS("http://www.w3.org/2005/07/aaa", 
                             "valuenow", 
                             valueNow);
   }
 
 // displaySlider(slider);
   YAHOO.util.Event.stopEvent(ev);
 return false;

} function handleVertSliderKey(slider, ev) {

 if (gLogger) gLogger.debug("vertical slider keypress");
 // var valueNow = parseInt(slider.getAttributeNS("http://www.w3.org/2005/07/aaa", "valuenow"), 10);
 var valueNow = verticalSlider.getValue();
 // var valueMin = parseInt(slider.getAttributeNS("http://www.w3.org/2005/07/aaa", "valuemin"), 10);
 // var valueMax = parseInt(slider.getAttributeNS("http://www.w3.org/2005/07/aaa", "valuemax"), 10);
 var valueMin = verticalSlider.thumb.topConstraint;
 var valueMax = verticalSlider.thumb.bottomConstraint;
 var delta = 0;
 var kc = ev.keyCode;
 if (kc == YAHOO.util.Key.DOM_VK_UP) {
   delta = -20;
 }
 else if (kc == YAHOO.util.Key.DOM_VK_DOWN) {
   delta = 20;
 }
 else if (kc == YAHOO.util.Key.DOM_VK_HOME) {
   delta = -( valueNow - valueMin );
 }
 else if (kc == YAHOO.util.Key.DOM_VK_END) {
   delta = valueMax - valueNow;
 }
 else {
   return true;
 }
 
 valueNow += delta;
 if (valueNow < valueMin) {
   valueNow = valueMin;
 }
 if (valueNow > valueMax) {
   valueNow = valueMax;
 }  
   if (slider.setAttributeNS) {
     slider.setAttributeNS("http://www.w3.org/2005/07/aaa", 
                             "valuenow", valueNow);
   }
 
 // displaySlider(slider);
 verticalSlider.setValue(valueNow, true);
   YAHOO.util.Event.stopEvent(ev);
 return false;

}

 var verticalSlider, horizontalSlider;
 var gLogger;
 function init() {
   if (typeof(ygLogger) != "undefined") {
     ygLogger.init(document.getElementById("logDiv"));
     gLogger = new ygLogger("slider.php");
   }
       //////////////////////////////////////////////////////////////////
   verticalSlider = YAHOO.widget.Slider.getVertSlider("vertBGDiv", 
                        "vertHandleDiv", 0, 200);
   verticalSlider.onChange = function(offsetFromStart) {
     document.getElementById("vertVal").value = offsetFromStart;
     document.getElementById("vertBGDiv").title = 
                       "Vertical Slider, value = " + offsetFromStart;
   };
       verticalSlider.onSlideStart = function() {
           //alert("slidestart");
           YAHOO.log("VERT slidestart", "warn");
       }
       verticalSlider.onSlideEnd = function() {
           //alert("slideend");
           YAHOO.log("VERT slideend", "warn");
       }
       // verticalSlider.setValue(20);
       // verticalSlider.lock();
       //verticalSlider.animate = false;
     document.getElementById("vertVal").title = 
                           "Type in slider value between 0 and 200.";
       //////////////////////////////////////////////////////////////////
   horizontalSlider = YAHOO.widget.Slider.getHorizSlider("horizBGDiv", 
                          "horizHandleDiv", 100, 100, 25);
   horizontalSlider.onChange = function(offsetFromStart) {
     document.getElementById("horizVal").value = offsetFromStart;
     document.getElementById("horizBGDiv").title = 
                       "Horizontal Slider, value = " + offsetFromStart;
   };
       horizontalSlider.onSlideStart = function() {
           //alert("slidestart");
           YAHOO.log("HORIZ slidestart", "warn");
       };
       horizontalSlider.onSlideEnd = function() {
           // alert("slideend");
           YAHOO.log("HORIZ slideend", "warn");
       };
       // horizontalSlider.lock();
     document.getElementById("horizVal").title = 
                       "Type in slider value between -100 and 100. Values " +
                       "will be rounded to a number divisable by 25."
 }
 function updateVert() {
   var v = parseFloat(document.forms["formV"]["vertVal"].value, 10);
   if ( isNaN(v) ) v = 0;
   verticalSlider.setValue(Math.round(v));
   return false;
 }
 
 function updateHoriz() {
       var fld = document.forms["formH"]["horizVal"];
   var v = parseFloat(fld.value, 10);
   if ( isNaN(v) ) v = 0;
   horizontalSlider.setValue(Math.round(v));
       var newVal = horizontalSlider.getValue();
       if (v != newVal) {
           fld.value = newVal;
       }
   return false;
 }
 window.onload = init;

</script> </body> </html>

      </source>
   
  

<A href="http://www.wbex.ru/Code/JavaScriptDownload/yui.zip">yui.zip( 3,714 k)</a>


Yahoo! UI Library - Slider Widget 3:

   <source lang="html4strict">

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"

   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml"

   xmlns:x2="http://www.w3.org/TR/xhtml2"
   xmlns:role="http://www.w3.org/2005/01/wai-rdf/GUIRoleTaxonomy#"
   xmlns:state="http://www.w3.org/2005/07/aaa">

<head> <title>Yahoo! UI Library - Slider Widget</title> <link rel="stylesheet" type="text/css" href="./examples/slider/css/screen.css"> <style type="text/css">

 input { font-size: .85em }
 #ddPicker { 
   position: absolute;
   background-color: #eeeeee;
   top: 200px;
   left: 20px;
   width: 360px;
   height: 240px;
 }
 #pickerHandle { 
   background-color: #bbbbbb;
   height: 10px;
   cursor: move;
 }
 #hueThumb { 
   cursor:default;
   width:18px; 
   height:18px; 
   z-index: 9;
   position:absolute; 
 }
 #hueBg {
   position:absolute; 
   left:216px; 
   height:198px; 
   width:18px; 
   background:url(./examples/slider/img/hue.png) no-repeat;
   top:18px;
 }
 
 #pickerDiv {
   position:absolute; 
   left:10px; 
   height:187px; 
   width:188px; 
   /*
   background:url(./examples/slider/img/pickerbg.png) no-repeat;
   */
   top:20px;
 }
 #pickerbg { 
   position:absolute; 
   z-index: 1;
   top:0px;
   left:0px;
 }
 #selector { 
   cursor:default;
   width:11px; 
   height:11px; 
   z-index: 9;
   position:absolute; 
   top:0px;
   left:0px;
 }
 #valdiv { text-align:right; position:absolute; top: 86px; left:246px; } 
 #rBG {top:180px}
 #gBG {top:210px}
 #bBG {top:240px}
 #swatch {
   position:absolute; 
   left:260px; 
   top:30px;
   height:60px; 
   width:60px; 
   border:2px solid #aaaaaa;
 }

</style>

<script type="text/javascript" src="./build/yahoo/yahoo.js" ></script> <script type="text/javascript" src="./build/event/event.js" ></script> <script type="text/javascript" src="./build/logger/logger.js" ></script> <script type="text/javascript" src="./build/dom/dom.js" ></script> <script type="text/javascript" src="./build/animation/animation.js" ></script> <script type="text/javascript" src="./build/dragdrop/dragdrop.js" ></script> <script type="text/javascript" src="./examples/slider/js/color.js" ></script> <script type="text/javascript" src="./examples/slider/js/key.js" ></script> <script type="text/javascript" src="./build/slider/slider-debug.js" ></script></head> <body>

Slider Widget

<style type="text/css">

   #logButtonHeader input { font-size: 80% }

/* logger default styles */ /* font size is controlled here: default 77% */

  1. yui-log {position:absolute;top:1em;right:1em;font-size:77%;text-align:left;}

/* width is controlled here: default 31em */ .yui-log {background-color:#AAA;border:1px solid black;font-family:monospace;z-index:9000;} .yui-log p {margin:1px;padding:.1em;} .yui-log button {font-family:monospace;} .yui-log .yui-log-hd {padding:.5em;background-color:#575757;color:#FFF;} /* height is controlled here: default 20em*/ .yui-log .yui-log-bd {width:100%;height:20em;background-color:#FFF;border:1px solid gray;overflow:auto;} .yui-log .yui-log-ft {margin-top:.5em;margin-bottom:1em;} .yui-log .yui-log-ft .yui-log-categoryfilters {} .yui-log .yui-log-ft .yui-log-sourcefilters {width:100%;border-top:1px solid #575757;margin-top:.75em;padding-top:.75em;} .yui-log .yui-log-btns {position:relative;float:right;bottom:.25em;} .yui-log .yui-log-filtergrp {margin-right:.5em;} .yui-log .info {background-color:#A7CC25;} /* A7CC25 green */ .yui-log .warn {background-color:#F58516;} /* F58516 orange */ .yui-log .error {background-color:#E32F0B;} /* E32F0B red */ .yui-log .time {background-color:#A6C9D7;} /* A6C9D7 blue */ .yui-log .window {background-color:#F2E886;} /* F2E886 tan */

</style>

   <script type="text/javascript">
   YAHOO.example.logApp = function() {
       return {
           init: function() {
               if (YAHOO.widget.Logger) {
                   var reader = new YAHOO.widget.LogReader( "logDiv", 
                           { newestOnTop: true, height: "400px" } );
                   reader._onClickPauseBtn(null, reader);
               }
           }
       };
   } (); 
   YAHOO.util.Event.on(window, "load", YAHOO.example.logApp.init);
   </script>


HSV Color Picker

 

The logger is paused for performance reasons. Click "Resume" to re-enable it.

 
   <img id="pickerbg" src="img/pickerbg.png" alt="" />
<img src="./examples/slider/img/select.gif" />
<img src="./examples/slider/img/hline.png" />
   <form name="rgbform" onsubmit="return userUpdate()">
   
R <input name="rval" id="rval" type="text" value="0" size="3" maxlength="3" /> H <input name="hval" id="hval" type="text" value="0" size="3" maxlength="3" />
G <input name="gval" id="gval" type="text" value="0" size="3" maxlength="3" /> S <input name="gsal" id="sval" type="text" value="0" size="3" maxlength="3" />
B <input name="bval" id="bval" type="text" value="0" size="3" maxlength="3" /> V <input name="vval" id="vval" type="text" value="0" size="3" maxlength="3" />

# <input name="hexval" id="hexval" type="text" value="0" size="6" maxlength="6" />
</form>
 

<script type="text/javascript">

 var hue;
 var picker;
 var dd;
 function init() {
   hue = YAHOO.widget.Slider.getVertSlider("hueBg", "hueThumb", 0, 180);
   hue.onChange = function(newVal) { hueUpdate(newVal); };
   picker = YAHOO.widget.Slider.getSliderRegion("pickerDiv", "selector", 
       0, 180, 0, 180);
   picker.onChange = function(newX, newY) { pickerUpdate(newX, newY); };
   hueUpdate();
   dd = new YAHOO.util.DD("ddPicker");
   dd.setHandleElId("pickerHandle");
   dd.endDrag = function(e) {
     // picker.thumb.resetConstraints();
     // hue.thumb.resetConstraints(); 
       };
 }
 window.onload = init;
 function pickerUpdate(newX, newY) {
   swatchUpdate();
 }
 function hueUpdate(newVal) {
   var h = (180 - hue.getValue()) / 180;
   if (h == 1) { h = 0; }
   YAHOO.log("hue " + hue.getValue());
   var a = YAHOO.util.Color.hsv2rgb( h, 1, 1);
   document.getElementById("pickerDiv").style.backgroundColor = 
     "rgb(" + a[0] + ", " + a[1] + ", " + a[2] + ")";
   swatchUpdate();
 }
 function swatchUpdate() {
   var h = (180 - hue.getValue());
   if (h == 180) { h = 0; }
   document.getElementById("hval").value = (h*2);
   h = h / 180;
   YAHOO.log("h " + hue.getValue());
   var s = picker.getXValue() / 180;
   document.getElementById("sval").value = Math.round(s * 100);
   YAHOO.log("s " + s);
   var v = (180 - picker.getYValue()) / 180;
   document.getElementById("vval").value = Math.round(v * 100);
   YAHOO.log("v " + v);
   var a = YAHOO.util.Color.hsv2rgb( h, s, v );
   document.getElementById("swatch").style.backgroundColor = 
     "rgb(" + a[0] + ", " + a[1] + ", " + a[2] + ")";
   document.getElementById("rval").value = a[0];
   document.getElementById("gval").value = a[1];
   document.getElementById("bval").value = a[2];
   document.getElementById("hexval").value = 
     YAHOO.util.Color.rgb2hex(a[0], a[1], a[2]);
 }

</script>


</body> </html>

      </source>
   
  
<A href="http://www.wbex.ru/Code/JavaScriptDownload/yui.zip">yui.zip( 3,714 k)</a>