Wondering if anyone knows how I could use this to display just ONE single image in the box with a sliding description div on mouseover. Right now I can't get the script to work unless there is at least two images with sliding descriptions.
the "slider.js" file:
The HTML:Code:// ======================================================== // ===== images slider ==== // script: Gerard Ferrandez - Ge-1-doot - February 2008 // http://www.dhteumeuleu.com // CC-BY-NC // ======================================================== /* ==== slider nameSpace ==== */ var slider = function() { /* ==== private methods ==== */ function getElementsByClass(object, tag, className) { var o = object.getElementsByTagName(tag); for ( var i = 0, n = o.length, ret = []; i < n; i++) { if (o[i].className == className) ret.push(o[i]); } if (ret.length == 1) ret = ret[0]; return ret; } function setOpacity (obj,o) { if (obj.filters) obj.filters.alpha.opacity = Math.round(o); else obj.style.opacity = o / 100; } /* ==== Slider Constructor ==== */ function Slider(oCont, speed, iW, iH, oP) { this.slides = []; this.over = false; this.S = this.S0 = speed; this.iW = iW; this.iH = iH; this.oP = oP; this.oc = document.getElementById(oCont); this.frm = getElementsByClass(this.oc, 'div', 'slide'); this.NF = this.frm.length; this.resize(); for (var i = 0; i < this.NF; i++) { this.slides[i] = new Slide(this, i); } this.oc.parent = this; this.view = this.slides[0]; this.Z = this.mx; /* ==== on mouse out event ==== */ this.oc.onmouseout = function () { this.parent.mouseout(); return false; } } Slider.prototype = { /* ==== animation loop ==== */ run : function () { this.Z += this.over ? (this.mn - this.Z) * .5 : (this.mx - this.Z) * .5; this.view.calc(); var i = this.NF; while (i--) this.slides[i].move(); }, /* ==== resize ==== */ resize : function () { this.wh = this.oc.clientWidth; this.ht = this.oc.clientHeight; this.wr = this.wh * this.iW; this.r = this.ht / this.wr; this.mx = this.wh / this.NF; this.mn = (this.wh * (1 - this.iW)) / (this.NF - 1); }, /* ==== rest ==== */ mouseout : function () { this.over = false; setOpacity(this.view.img, this.oP); } } /* ==== Slide Constructor ==== */ Slide = function (parent, N) { this.parent = parent; this.N = N; this.x0 = this.x1 = N * parent.mx; this.v = 0; this.loaded = false; this.cpt = 0; this.start = new Date(); this.obj = parent.frm[N]; this.txt = getElementsByClass(this.obj, 'div', 'text'); this.img = getElementsByClass(this.obj, 'img', 'diapo'); this.bkg = document.createElement('div'); this.bkg.className = 'backgroundText'; this.obj.insertBefore(this.bkg, this.txt); if (N == 0) this.obj.style.borderLeft = 'none'; this.obj.style.left = Math.floor(this.x0) + 'px'; setOpacity(this.img, parent.oP); /* ==== mouse events ==== */ this.obj.parent = this; this.obj.onmouseover = function() { this.parent.over(); return false; } } Slide.prototype = { /* ==== target positions ==== */ calc : function() { var that = this.parent; // left slides for (var i = 0; i <= this.N; i++) { that.slides[i].x1 = i * that.Z; } // right slides for (var i = this.N + 1; i < that.NF; i++) { that.slides[i].x1 = that.wh - (that.NF - i) * that.Z; } }, /* ==== HTML animation : move slides ==== */ move : function() { var that = this.parent; var s = (this.x1 - this.x0) / that.S; /* ==== lateral slide ==== */ if (this.N && Math.abs(s) > .5) { this.obj.style.left = Math.floor(this.x0 += s) + 'px'; } /* ==== vertical text ==== */ var v = (this.N < that.NF - 1) ? that.slides[this.N + 1].x0 - this.x0 : that.wh - this.x0; if (Math.abs(v - this.v) > .5) { this.bkg.style.top = this.txt.style.top = Math.floor(2 + that.ht - (v - that.Z) * that.iH * that.r) + 'px'; this.v = v; this.cpt++; } else { if (!this.pro) { /* ==== adjust speed ==== */ this.pro = true; var tps = new Date() - this.start; if(this.cpt > 1) { that.S = Math.max(2, (28 / (tps / this.cpt)) * that.S0); } } } if (!this.loaded) { if (this.img.complete) { this.img.style.visibility = 'visible'; this.loaded = true; } } }, /* ==== light ==== */ over : function () { this.parent.resize(); this.parent.over = true; setOpacity(this.parent.view.img, this.parent.oP); this.parent.view = this; this.start = new Date(); this.cpt = 0; this.pro = false; this.calc(); setOpacity(this.img, 100); } } /* ==== public method - script initialization ==== */ return { init : function() { // create instances of sliders here // parameters : HTMLcontainer name, speed (2 fast - 20 slow), Horizontal ratio, vertical text ratio, opacity this.s1 = new Slider("slider", 8, 3.5/3.5, 3.3/6.3, 100); setInterval("slider.s1.run();", 16); } } }();
The CSS:Code:<html> <head> <title>Slider Test</title> <script type="text/javascript" language="javascript" src="<?php bloginfo('template_directory'); ?>/Scripts/slider.js">slider.js</script> <script type="text/javascript" language="javascript" src="<?php bloginfo('template_directory'); ?>/Scripts/jquery-1.2.3.pack.js"></script> <script type="text/javascript" language="javascript"> $(document).ready( function () { $('.themes:last').css('margin','0') }); </script> </head> <body> <div id="slider"> <div style="border-left: medium none; right: 0px;" class="slide"> <a href="#"><img src="<?php bloginfo('template_directory'); ?>/images/likno_awm.jpg" height="205px" width="410px" alt="Likno All Web Menus Pro v5" title="Likno All Web Menus Pro v5" style="opacity: 1; visibility: visible;" class="diapo"></a> <div style="top: 205px;" class="backgroundText"></div> <div style="top: 205px;" class="backgroundText"></div><div style="top: 0px;" class="text"> <span class="title"> <a href="#">This is the title</a></span> <p>Blah blah blah, descriptive text here...</p> </div> </div> <div style="background: rgb(0, 0, 0) none repeat scroll 0% 0%; left: 97px; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" class="slide"> <a href="#"><img src="<?php bloginfo('template_directory'); ?>/images/fill_green.png" height="205px" width="410px" alt="Likno All Web Menus Pro v5" title="Likno All Web Menus Pro v5" style="opacity: 0; visibility: hidden;" class="diapo"></a> <div style="top: 205px;" class="backgroundText"></div> <div style="top: 205px;" class="backgroundText"></div><div style="top: 0px;" class="text"> <span class="title"> <a href="#">This is the title</a></span> <p>Blah blah blah blah, descriptive text here</p> </div> </div> <script type="text/javascript"> /* ==== start script ==== */ slider.init(); </script> </div>
Code:/* Slider */ div.wide #slider {margin-bottom: 0px;} #slider {height: 205px; position:relative; overflow: hidden; margin-top: 0px; border:1px #a4c634 solid;} #slider .slide {position: absolute; height:205px; width: 100%;background: #202020;overflow: hidden;border-left: #a4c634 solid 1px;cursor: default;} #slider .title {font-family:Corbel, Calibri, Verdana, Arial;color: #f0f0f0;font-weight: 80; font-size: 1.2em;} #slider .backgroundText {position: absolute; width: 100%; height: 100%; top: 100%; background: #000; filter: alpha(opacity=80); opacity: 0.8; } #slider .text { position: absolute; top: 1%;top: 100%;color: #f0f0f0; font-family: Corbel, Calibri, Verdana, Arial;font-size: 1em;text-align: justify;width: 85%; left: 10px; } #slider .diapo {position: absolute; filter: alpha(opacity=100); opacity: 1; visibility: hidden; } </body> </html>



Reply With Quote



Bookmarks