1 <!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.0 Strict//EN"
2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3 <html lang=
"en" xml:
lang=
"en" xmlns=
"http://www.w3.org/1999/xhtml"
4 xmlns:
x2=
"http://www.w3.org/TR/xhtml2"
5 xmlns:
role=
"http://www.w3.org/2005/01/wai-rdf/GUIRoleTaxonomy#"
6 xmlns:
state=
"http://www.w3.org/2005/07/aaa">
8 <title>Yahoo! UI Library - Slider Widget
</title>
9 <link rel=
"stylesheet" type=
"text/css" href=
"css/screen.css">
10 <style type=
"text/css">
14 <div id=
"pageTitle"><h3>Drag and Drop - Slider Widgets
</h3></div>
17 <div id=
"containerTop">
18 <div id=
"header"><img src=
"img/logo.gif" vspace=
"4" hspace=
"4" /></div>
22 <div class=
"newsItem">
23 <h3>Basic Sliders
</h3>
25 The slider widget is an implementation of YAHOO.util.DragDrop
26 It also will use YAHOO.util.Animation if available to
27 animate the movement of the thumb when you click the
30 The only difference between the two sliders aside from
31 the fact that one is vertical and one horizontal is that
32 the horizontal slider implements the
"tick mark" feature
33 of drag and drop; it will
"snap" to the tick marks spaced
38 <a href="javascript:slider1.lock()">Lock</a>
39 <a href="javascript:slider1.unlock()">Unlock</a>
43 <div id=
"vertWrapper">
52 title=
"Vertical Slider"
53 onkeypress=
"return handleVertSliderKey(this, YAHOO.util.Event.getEvent(event))"
55 <div id=
"vertHandleDiv"><img src=
"img/vertSlider.png"></div>
58 <div id=
"vertValueDiv">
59 <form name=
"formV" onsubmit=
"return updateVert()">
60 <input name=
"vertVal" id=
"vertVal" type=
"text" value=
"0" size=
"4" maxlength=
"4" />
61 <input type=
"button" value=
"Update" onclick=
"updateVert()" />
68 <div id=
"horizWrapper">
77 title=
"Horizontal Slider"
78 onkeypress=
"return handleHorizSliderKey(this, YAHOO.util.Event.getEvent(event))"
80 <div id=
"horizHandleDiv" ><img src=
"img/horizSlider.png"></div>
84 <div id=
"horizValueDiv">
85 <form name=
"formH" onsubmit=
"return updateHoriz()">
86 <input name=
"horizVal" id=
"horizVal" type=
"text" value=
"0" size=
"4" maxlength=
"4" />
87 <input type=
"button" value=
"Update" onclick=
"updateHoriz()" />
102 <h3>Color Picker
</h3>
104 Implements a slider region and a vertical slider to implement an HSV color
108 <div id=
"pickerPanel" class=
"dragPanel">
109 <h4 id=
"pickerHandle"> </h4>
111 <img id=
"pickerbg" src=
"img/pickerbg.png" alt=
"">
112 <div id=
"selector"><img src=
"img/select.gif"></div>
116 <div id=
"hueThumb"><img src=
"img/hline.png"></div>
119 <div id=
"pickervaldiv">
120 <form name=
"pickerform" onsubmit=
"return pickerUpdate()">
122 R
<input name=
"pickerrval" id=
"pickerrval" type=
"text" value=
"0" size=
"3" maxlength=
"3" />
123 H
<input name=
"pickerhval" id=
"pickerhval" type=
"text" value=
"0" size=
"3" maxlength=
"3" />
125 G
<input name=
"pickergval" id=
"pickergval" type=
"text" value=
"0" size=
"3" maxlength=
"3" />
126 S
<input name=
"pickergsal" id=
"pickersval" type=
"text" value=
"0" size=
"3" maxlength=
"3" />
128 B
<input name=
"pickerbval" id=
"pickerbval" type=
"text" value=
"0" size=
"3" maxlength=
"3" />
129 V
<input name=
"pickervval" id=
"pickervval" type=
"text" value=
"0" size=
"3" maxlength=
"3" />
132 #
<input name=
"pickerhexval" id=
"pickerhexval" type=
"text" value=
"0" size=
"6" maxlength=
"6" />
138 <div id=
"pickerSwatch"> </div>
148 <script type=
"text/javascript" src=
"../../build/yahoo/yahoo.js" ></script>
149 <script type=
"text/javascript" src=
"../../build/event/event.js" ></script>
150 <script type=
"text/javascript" src=
"../../build/dom/dom.js"></script>
151 <script type=
"text/javascript" src=
"../../build/logger/logger.js" ></script>
153 <script type=
"text/javascript" src=
"../../build/dragdrop/dragdrop.js" ></script>
154 <script type=
"text/javascript" src=
"js/color.js" ></script>
155 <script type=
"text/javascript" src=
"js/key.js" ></script>
156 <script type=
"text/javascript" src=
"../../build/animation/animation.js" ></script>
157 <script type=
"text/javascript" src=
"../../build/slider/slider.js" ></script>
158 <script type=
"text/javascript">
166 standardSliderInit();
171 // Picker ---------------------------------------------------------
173 function pickerInit() {
174 hue
= YAHOO
.widget
.Slider
.getVertSlider("hueBg", "hueThumb", 0, 180);
175 hue
.onChange = function(newVal
) { hueUpdate(newVal
); };
177 picker
= YAHOO
.widget
.Slider
.getSliderRegion("pickerDiv", "selector",
179 picker
.onChange = function(newX
, newY
) { pickerUpdate(newX
, newY
); };
183 dd1
= new YAHOO
.util
.DD("pickerPanel");
184 dd1
.setHandleElId("pickerHandle");
185 dd1
.endDrag = function(e
) {
186 // picker.thumb.resetConstraints();
187 // hue.thumb.resetConstraints();
191 window
.onload
= init
;
193 function pickerUpdate(newX
, newY
) {
194 pickerSwatchUpdate();
197 function hueUpdate(newVal
) {
199 var h
= (180 - hue
.getValue()) / 180;
200 if (h
== 1) { h
= 0; }
202 YAHOO
.log("hue " + hue
.getValue());
204 var a
= YAHOO
.util
.Color
.hsv2rgb( h
, 1, 1);
206 document
.getElementById("pickerDiv").style
.backgroundColor
=
207 "rgb(" + a
[0] + ", " + a
[1] + ", " + a
[2] + ")";
209 pickerSwatchUpdate();
212 function pickerSwatchUpdate() {
213 var h
= (180 - hue
.getValue());
214 if (h
== 180) { h
= 0; }
215 document
.getElementById("pickerhval").value
= (h
*2);
218 YAHOO
.log("h " + hue
.getValue());
220 var s
= picker
.getXValue() / 180;
221 document
.getElementById("pickersval").value
= Math
.round(s
* 100);
225 var v
= (180 - picker
.getYValue()) / 180;
226 document
.getElementById("pickervval").value
= Math
.round(v
* 100);
230 var a
= YAHOO
.util
.Color
.hsv2rgb( h
, s
, v
);
232 document
.getElementById("pickerSwatch").style
.backgroundColor
=
233 "rgb(" + a
[0] + ", " + a
[1] + ", " + a
[2] + ")";
235 document
.getElementById("pickerrval").value
= a
[0];
236 document
.getElementById("pickergval").value
= a
[1];
237 document
.getElementById("pickerbval").value
= a
[2];
238 document
.getElementById("pickerhexval").value
=
239 YAHOO
.util
.Color
.rgb2hex(a
[0], a
[1], a
[2]);
243 // RGB slider ---------------------------------------------------------
247 r
= YAHOO
.widget
.Slider
.getHorizSlider("rBG", "rthumb", 0, 128);
248 r
.onChange = function(newVal
) { listenerUpdate("r", newVal
*2); };
250 g
= YAHOO
.widget
.Slider
.getHorizSlider("gBG", "gthumb", 0, 128);
251 g
.onChange = function(newVal
) { listenerUpdate("g", newVal
*2); };
253 b
= YAHOO
.widget
.Slider
.getHorizSlider("bBG", "bthumb", 0, 128);
254 b
.onChange = function(newVal
) { listenerUpdate("b", newVal
*2); };
258 dd2
= new YAHOO
.util
.DD("rgbPanel");
259 dd2
.setHandleElId("rgbHandle");
260 dd2
.endDrag = function(e
) {
261 // r.thumb.resetConstraints();
262 // g.thumb.resetConstraints();
263 // b.thumb.resetConstraints();
268 function initColor() {
271 d
= document
.createElement("P");
273 r
.getEl().appendChild(d
);
274 d
= document
.createElement("P");
276 g
.getEl().appendChild(d
);
277 d
= document
.createElement("P");
279 b
.getEl().appendChild(d
);
281 for (var i
=0; i
<34; i
++) {
282 d
= document
.createElement("SPAN");
285 r
.getEl().appendChild(d
);
287 d
= document
.createElement("SPAN");
290 g
.getEl().appendChild(d
);
292 d
= document
.createElement("SPAN");
295 b
.getEl().appendChild(d
);
298 d
= document
.createElement("P");
300 r
.getEl().appendChild(d
);
301 d
= document
.createElement("P");
303 g
.getEl().appendChild(d
);
304 d
= document
.createElement("P");
306 b
.getEl().appendChild(d
);
311 function updateSliderColors() {
312 var curr
, curg
, curb
;
313 curr
= Math
.min(r
.getValue() * 2, 255);
314 curg
= Math
.min(g
.getValue() * 2, 255);
315 curb
= Math
.min(b
.getValue() * 2, 255);
317 YAHOO
.log("updateSliderColor " + curr
+ ", " + curg
+ ", " + curb
);
320 for (var i
=0; i
<34; i
++) {
321 d
= document
.getElementById("rBG" + i
);
322 d
.style
.backgroundColor
=
323 "rgb(" + (i
*8) + "," + curg
+ "," + curb
+ ")";
325 d
= document
.getElementById("gBG" + i
);
326 d
.style
.backgroundColor
=
327 "rgb(" + curr
+ "," + (i
*8) + "," + curb
+ ")";
329 d
= document
.getElementById("bBG" + i
);
330 d
.style
.backgroundColor
=
331 "rgb(" + curr
+ "," + curg
+ "," + (i
*8) + ")";
334 document
.getElementById("rgbSwatch").style
.backgroundColor
=
335 "rgb(" + curr
+ "," + curg
+ "," + curb
+ ")";
337 document
.getElementById("hexval").value
=
338 YAHOO
.util
.Color
.rgb2hex(curr
, curg
, curb
);
342 function listenerUpdate(whichSlider
, newVal
) {
346 document
.getElementById(whichSlider
+ "val").value
= newVal
;
347 updateSliderColors();
350 function userUpdate(isHex
) {
351 YAHOO
.log("userupdate");
353 var f
= document
.forms
['rgbform'];
356 var hexval
= f
["hexval"].value
;
358 if (hexval
.length
== 3) {
360 for (var i
=0;i
<3;i
++) {
361 var a
= hexval
.substr(i
, 1);
368 YAHOO
.log("hexval:" + hexval
);
370 if (hexval
.length
!= 6) {
371 alert("illegal hex code: " + hexval
);
373 var rgb
= YAHOO
.util
.Color
.hex2rgb(hexval
);
374 // alert(rgb.toString());
375 if (YAHOO
.util
.Color
.isValidRGB(rgb
)) {
376 f
['rval'].value
= rgb
[0];
377 f
['gval'].value
= rgb
[1];
378 f
['bval'].value
= rgb
[2];
384 v
= parseFloat(f
['rval'].value
);
385 v
= ( isNaN(v
) ) ? 0 : Math
.round(v
);
386 r
.setValue(Math
.round(v
) / 2);
388 v
= parseFloat(f
['gval'].value
);
389 v
= ( isNaN(v
) ) ? 0 : Math
.round(v
);
390 g
.setValue(Math
.round(v
) / 2);
392 v
= parseFloat(f
['bval'].value
);
393 v
= ( isNaN(v
) ) ? 0 : Math
.round(v
);
394 b
.setValue(Math
.round(v
) / 2);
396 updateSliderColors();
401 function userReset() {
403 var f
= document
.forms
['rgbform'];
410 var slider1
, slider2
;
411 function standardSliderInit() {
413 slider1
= YAHOO
.widget
.Slider
.getVertSlider("vertBGDiv", "vertHandleDiv", 0, 200);
415 slider1
.onChange = function(offsetFromStart
) {
416 document
.getElementById("vertVal").value
= offsetFromStart
;
419 slider2
= YAHOO
.widget
.Slider
.getHorizSlider("horizBGDiv", "horizHandleDiv", 100, 100, 25);
421 slider2
.onChange = function(offsetFromStart
) {
422 document
.getElementById("horizVal").value
= offsetFromStart
;
425 // if (document.getElementById("vertBGDiv").getAttributeNS) {
426 // slider1.focusOnClick = true;
427 // slider2.focusOnClick = true;
431 function updateVert() {
432 var v
= parseFloat(document
.forms
['formV']['vertVal'].value
, 10);
433 if ( isNaN(v
) ) v
= 0;
434 slider1
.setValue(Math
.round(v
));
438 function updateHoriz() {
439 var v
= parseFloat(document
.forms
['formH']['horizVal'].value
, 10);
440 if ( isNaN(v
) ) v
= 0;
441 slider2
.setValue(Math
.round(v
));
445 // accessibility keypress test
446 function handleHorizSliderKey(slider
, ev
) {
447 YAHOO
.log("horizontal slider keypress");
449 // Firefox 1.5+ only at this point
450 if (!slider
.getAttributeNS
) {
454 // var valueNow = parseInt(slider.getAttributeNS("http://www.w3.org/2005/07/aaa", "valuenow"));
456 var valueNow
= slider2
.getValue();
458 var valueMin
= parseInt(slider
.getAttributeNS("http://www.w3.org/2005/07/aaa", "valuemin"));
459 var valueMax
= parseInt(slider
.getAttributeNS("http://www.w3.org/2005/07/aaa", "valuemax"));
465 YAHOO
.log("keycode: " + kc
);
467 if (kc
== YAHOO
.util
.Key
.DOM_VK_LEFT
) {
469 } else if (kc
== YAHOO
.util
.Key
.DOM_VK_RIGHT
) {
471 } else if (kc
== YAHOO
.util
.Key
.DOM_VK_HOME
) {
472 delta
= -( valueNow
- valueMin
);
473 } else if (kc
== YAHOO
.util
.Key
.DOM_VK_END
) {
474 delta
= valueMax
- valueNow
;
481 slider2
.setValue(valueNow
, true);
483 slider
.setAttributeNS("http://www.w3.org/2005/07/aaa", "valuenow", valueNow
);
485 // displaySlider(slider);
490 function handleVertSliderKey(slider
, ev
) {
491 YAHOO
.log("vertical slider keypress");
493 // Firefox 1.5+ only at this point
494 if (!slider
.getAttributeNS
) {
498 // var valueNow = parseInt(slider.getAttributeNS("http://www.w3.org/2005/07/aaa", "valuenow"));
500 var valueNow
= slider1
.getValue();
502 var valueMin
= parseInt(slider
.getAttributeNS("http://www.w3.org/2005/07/aaa", "valuemin"));
503 var valueMax
= parseInt(slider
.getAttributeNS("http://www.w3.org/2005/07/aaa", "valuemax"));
507 if (kc
== YAHOO
.util
.Key
.DOM_VK_UP
) {
510 else if (kc
== YAHOO
.util
.Key
.DOM_VK_DOWN
) {
513 else if (kc
== YAHOO
.util
.Key
.DOM_VK_HOME
) {
514 delta
= -( valueNow
- valueMin
);
516 else if (kc
== YAHOO
.util
.Key
.DOM_VK_END
) {
517 delta
= valueMax
- valueNow
;
524 if (valueNow
< valueMin
) {
528 if (valueNow
> valueMax
) {
531 slider
.setAttributeNS("http://www.w3.org/2005/07/aaa", "valuenow", valueNow
);
533 // displaySlider(slider);
534 slider1
.setValue(valueNow
, true);
542 <!--[if gte IE 5.5000]>
543 <script type="text/javascript">
545 function correctPNG() // correctly handle PNG transparency in Win IE 5.5 or higher.
547 for(var i=0; i<document.images.length; i++)
549 var img = document.images[i]
550 var imgName = img.src.toUpperCase()
551 if (imgName.substring(imgName.length-3, imgName.length) == "PNG")
553 var imgID = (img.id) ? "id='" + img.id + "' " : ""
554 var imgClass = (img.className) ? "class='" + img.className + "' " : ""
555 var imgTitle = (img.title) ? "title='" + img.title + "' " : "title='" + img.alt + "' "
556 var imgStyle = "display:inline-block;" + img.style.cssText
557 if (img.align == "left") imgStyle = "float:left;" + imgStyle
558 if (img.align == "right") imgStyle = "float:right;" + imgStyle
559 if (img.parentElement.href) imgStyle = "cursor:hand;" + imgStyle
560 var strNewHTML = "<span " + imgID + imgClass + imgTitle
561 + " style=\"" + "width:" + img.width + "px; height:" + img.height + "px;" + imgStyle + ";"
562 + "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader"
563 + "(src=\'" + img.src + "\', sizingMethod='scale');\"></span>"
564 img.outerHTML = strNewHTML
570 YAHOO.util.Event.addListener(window, "load", correctPNG);