Šta je novo?

Trazi se ovakav JS meni

kUdtiHaEX

Super ridža
Administrator
Učlanjen(a)
18.07.2001
Poruke
18,077
Poena
1,365
Moja oprema  
CPU & Cooler
Intel® Core™ i5-9500F, NZXT Kraken Z63
GPU
Asus GTX 2070 Super
Storage
Samsung 980 Pro NVMe 1 TB
Kućište
NZXT H210i
Monitor
LG C2 42"
Miš & tastatura
Logitech G502, Keychron K8, Nuphy Air75, Ducky TKL One 2
Ostale periferije
Glupi HP štampač
Laptop
Apple Macbook Pro 14" M1
Tablet
Apple iPad Pro 11"
Mobilni telefon
Apple iPhone 13 Pro Max
Pametni uređaji
Apple Watch Ultra
Pristup internetu
  1. Kablovski internet
http://rippol.com/

Kad kliknete na "register new account" sve druge opcije nestaju i pojavljuje se odgovarajuca forma i dugme Back to menu. Klikom na to dugme, vraca vas na prvobitno stanje.

Jel zna neko gde bih mogao da nadjem ovakav skript? Treba mi da izgradim jedan meni sa 4-5 "opcija".
 
Ovo je pravljeno JQueryjem (sto si verovano i video) i custom je pisano za ovu aplikaciju. Ako te zanima samo fora kao sa register dugmetom za sve stavke menija onda Js nije jako komplikovan i verovatno ti se vise isplati da sam to napises.

Ovo kazem posto nisam nikad sreo ovakav gotov meni, mada postoje neki koji i se mogli preurediti da daju takav efekat (recimo neke impelemntacije tabova).

Ako nadjes neki bas ovakav baci link.
 
Znam da je JQuery ali ja i JQuery nismo dobri drugari :)
 
JQuery UI ima gotovu komponentu koja se zove Accordion i čini mi se da je slična onome što tebi treba:
http://jqueryui.com/demos/accordion/

Ako ne odgovara, mislim da ti ne gine custom piskaranje. Ako znaš javascript, izučavanje JQuery-ja je krajnje jednostavno. Imaju vrlo lepo sređenu dokumentaciju. Mada, naravno, sve se to može napraviti i čistim javascriptom uz malo volje.
 
Mislim da ovo mozes kroz Prototype JS FrameWork da resis, ja sam ga koristio za shirenje i skupljanje menija, ali predpostavljam da ima i fadein, fadeout.

http://www.prototypejs.org/

Nema kompleksnost jquery-ja, ali kao brzo, privremeno resenje moze da prodje. Mada ovo mozes da postignes sa kombinacijom div-a i javascripta, ali bez efekata (fadein, fadeout).
 
I ja bih ovo rucno, mislim da ces vise vremena provesti trazeci po netu :)
 
Kod:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>
  <title></title>
<style type="text/css">
<!--
#tst {
  position:relative;overflow:hidden;width:300px;height:250px;border:solid black 0px;
}

.Item {
  position:relative;width:300px;height:50px;background-Color:#66FFCC;margin-Top:10px;
}

.Detail {
  position:absolute;visibility:hidden;left:0px;top:50px;width:300px;height:150px;background-Color:#CCFFFF;
}
.srt {
  position:absolute;z-Index:1;left:0px;top:200px;width:300px;height:50px;background-Color:#FF0000;
}
.fin {
  position:absolute;left:0px;top:200px;width:300px;height:50px;background-Color:#009900;
}
-->
</style>

<script type="text/javascript">
// Animate (01-October-2009)
// by Vic Phillips http://www.vicsjavascripts.org.uk

// To progressively change the Left, Top, Width, Height or Opacity of an element over a specified period of time.
// With the ability to scale the effect time on specified minimum/maximum values
// and with three types of progression 'sin' and 'cos' and liner.

// **** Application Notes

// **** The HTML Code
//
// when moving an element the inline or class rule style position of the element should be assigned as
// 'position:relative;' or 'position:absolute;'
//
// The element would normally be assigned a unique ID name.
//

// **** Initialising the Script.
//
// The script is initialised by assigning an instance of the script to a variable.
// e.g A = new zxcAnimate('left','id1')
// where:
//  A           = a global variable                                                               (variable)
//  parameter 0 = the mode(see Note 1).                                                           (string)
//  parameter 1 = the unique ID name or element object.                                           (string or element object)
//  parameter 1 = the initial value.                                                              (digits, default = 0)

// **** Executing the Effect
//
// The effect is executed by an event call to function 'A.update([10,800],5000,[10,800]);'
// where:
//  A           = the global referencing the script instance.                                     (variable)
//  parameter 1 = an array defining the start and finish values of the effect.                    (array)
//                 field 0 the start value. (digits, for opacity minimum 0, maximum 100)
//                 field 1 the finish value. (digits, for opacity minimum 0, maximum 100)
//  parameter 2 =  period of time between the start and finish of the effect in milliseconds.     (digits or defaults to previous or 0(on first call) milliSeconds)
//  parameter 3 = (optional) to scale the effect time on a specified minimum/maximum.             (array, see Note 3)
//                 field 0 the minimum value. (digits)
//                 field 1 the maximum value. (digits)
//  parameter 3 = (optional) the type of progression, 'sin', 'cos' or 'liner'.                               (string, default = 'liner')
//                 'sin' progression starts fast and ends slow.
//                 'cos' progression starts slow and ends fast.
//
//  Note 1:  Examples modes: 'left', 'top', 'width', 'height', 'opacity.
//  Note 2:  The default units(excepting opacity) are 'px'.
//           For hyphenated modes, the first character after the hyphen must be upper case, all others lower case.
//  Note 3:  The scale is of particular use when re-calling the effect
//           in mid progression to retain an constant rate of progression.
//  Note 4:  The current effect value is recorded in A.data[0].
//  Note 5:  A function may be called on completion of the effect by assigning the function
//           to the animator intance property .Complete.
//           e.g. [instance].Complete=function(){ alert(this.data[0]); };
//



// **** Functional Code(1.58K) - NO NEED to Change

function zxcAnimate(mde,obj,fin){
 this.to=null;
 this.obj=typeof(obj)=='object'?obj:document.getElementById(obj);
 this.mde=mde.replace(/\W/g,'');
 this.data=[fin||0];
 return this;
}

zxcAnimate.prototype.update=function(srtfin,ms,scale,c){
 clearTimeout(this.to);
 this.time=ms||this.time||0;
 this.data=[srtfin[0],srtfin[0],srtfin[1]];
 this.mS=this.time*(!scale?1:Math.abs((srtfin[1]-srtfin[0])/(scale[1]-scale[0])));
 this.c=typeof(c)=='string'?c.charAt(0).toLowerCase():this.c?this.c:'';
 this.inc=Math.PI/(2*this.mS);
 this.srttime=new Date().getTime();
 this.cng();
}

zxcAnimate.prototype.cng=function(){
 var oop=this,ms=new Date().getTime()-this.srttime;
 this.data[0]=(this.c=='s')?Math.floor((this.data[2]-this.data[1])*Math.sin(this.inc*ms)+this.data[1]):(this.c=='c')?(this.data[2])-Math.floor((this.data[2]-this.data[1])*Math.cos(this.inc*ms)):(this.data[2]-this.data[1])/this.mS*ms+this.data[1];
 this.apply();
 if (ms<this.mS) this.to=setTimeout(function(){oop.cng()},10);
 else {
  this.data[0]=this.data[2];
  this.apply();
  if (this.Complete) this.Complete(this);
 }
}

zxcAnimate.prototype.apply=function(){
 if (isFinite(this.data[0])){
  if (this.mde!='left'&&this.mde!='top'&&this.data[0]<0) this.data[0]=0;
  if (this.mde!='opacity') this.obj.style[this.mde]=this.data[0]+'px';
  else zxcOpacity(this.obj,this.data[0]);
 }
}

function zxcOpacity(obj,opc){
 if (opc<0||opc>100) return;
 obj.style.filter='alpha(opacity='+opc+')';
 obj.style.opacity=obj.style.MozOpacity=obj.style.KhtmlOpacity=opc/100-.001;
}


</script>

<script  type="text/javascript">
<!--

function Menu(id,icls,dcls,ms,fcls){
 var obj=document.getElementById(id);
 var items=zxcByClassName(icls,obj);
 this.ary=[];
 for (var detail,z0=0;z0<items.length;z0++){
  detail=zxcByClassName(dcls,items[z0])[0];
  this.ary[z0]=[new zxcAnimate('top',items[z0],0),-items[z0].offsetTop,new zxcAnimate('opacity',zxcByClassName(dcls,items[z0])[0],0)];
  this.ary[z0][2].Complete=function(){
   if (this.data==0){
    this.obj.style.visibility='hidden';
   }
  }
  this.addevt(items[z0],'mouseup','Active',z0);
 }
 this.fin=new zxcAnimate('opacity',zxcByClassName(fcls,obj)[0]);
 this.fin.Complete=function(){
  if (this.data==0){
   this.obj.style.zIndex='0';
  }
 }
 this.addevt(this.fin.obj,'mouseup','Back',z0);
 this.ms=ms||1000;
 this.nu=-1;
}

Menu.prototype.Active=function(e,nu){
 this.ary[nu][0].obj.style.zIndex='2';
 this.ary[nu][0].update([this.ary[nu][0].data[0],this.ary[nu][1]],this.ms);
 this.ary[nu][2].obj.style.visibility='visible';
 this.ary[nu][2].update([this.ary[nu][2].data[0],100],this.ms);
 this.fin.obj.style.zIndex='2';
 this.fin.update([this.fin.data[0],100],this.ms);
 this.nu=nu;
}

Menu.prototype.Back=function(e,nu){
 var nu=this.nu;
 if (nu>=0){
  this.ary[nu][0].obj.style.zIndex='0';
  this.ary[nu][0].update([this.ary[nu][1],0],this.ms);
  this.ary[nu][2].update([100,0],this.ms);
  this.fin.update([100,0],this.ms);
  this.fin.Complete=function(){
   if (this.data[0]==0){
    this.obj.style.zIndex='0';
   }
  }
 }
}

Menu.prototype.addevt=function(o,t,f,p){
 var oop=this;
 if (o.addEventListener) o.addEventListener(t,function(e){ return oop[f](e,p);}, false);
 else if (o.attachEvent) o.attachEvent('on'+t,function(e){ return oop[f](e,p); });
 else {
  var prev=o['on'+t];
  if (prev) o['on'+t]=function(e){ prev(e); oop[f](e,p); };
  else o['on'+t]=o[f];
 }
}

function zxcByClassName(nme,el,tag){
 if (typeof(el)=='string') el=document.getElementById(el);
 el=el||document;
 for (var tag=tag||'*',reg=new RegExp('\\b'+nme+'\\b'),els=el.getElementsByTagName(tag),ary=[],z0=0; z0<els.length;z0++){
  if(reg.test(els[z0].className)) ary.push(els[z0]);
 }
 return ary;
}

//-->
</script>

</head>

<body>
<div id="tst" >
 <div class="Item" >Item 1
  <div class="Detail" >Detail 1</div>
 </div>
 <div class="Item" >Item 2
  <div class="Detail" >Detail 2</div>
 </div>
 <div class="Item" >Item 3
  <div class="Detail" >Detail 2</div>
 </div>
 <div class="srt" >
 </div>
 <div class="fin" >
 Back
 </div>



</div>
<script type="text/javascript">
<!--
 new Menu('tst','Item','Detail',300,'fin');
//-->
</script>
</body>

</html>

Evo ga ;-)
 
Nasao, prepravio, tweak-ovao... i eto radi :)
E sad samo jos da sve to implementiram u wordpress.....
 
nhf :D

258t9c2.jpg
 
Poslednja izmena:
dupli post
 
Poslednja izmena:
LOL :) shtoslijo :)

Implementirao sam ga :)
 
Poslednja izmena:
Vrh Dno