Gå til innhold

Smooth glide effekt


Anbefalte innlegg

Gjør dette:

Besøk denne siden: http://www.dizzler.com/music/Live/I_Alone

Trykk på "Lyrics" tabben og se hvordan den glir opp og igjen hver gang du trykker på den. Se hvor glatt den glir.

 

 

Åssen gjøres dette!? Hvis noen vet om en tutorial eller noe - supert!

 

Jeg har prøvd lenge å få de til med javascript. jeg klarer å endre størrelse på en <div> tagg med javscript, men ikke med glatt overgang.

 

Det jeg trenger er en oppsumert lett oversikt om hvordan dette gjøres / hva som skal til.

 

Takk på forhånd

Lenke til kommentar
Videoannonse
Annonse
  • 2 uker senere...

Eg trur det er det som blir gjort i teorien ja.

 

Eg har brukt noko lignandes til min heimeside.

 

function changeDivHeight(from, to, div, time)
{
var counter;
var value;

if (from > to)
{
	counter = from - to;	
}
else if (to > from)
{
	counter = to - from;
}
var i = 0;
var timer = time/counter;
while(counter > 0)
{
	if (from > to)
	{
		from = from - 1;
		value = from;	
	}
	else if (to > from)
	{
		from = from + 1;
		value = from;
	}
	var newtimer = timer * i;
	setTimeout("timedChangeHeight(\""+div+"\","+value+")", newtimer);
	counter--;
	i++;
}
}
function timedChangeHeight(div, value)
{
var doc = document.getElementById(div);
doc.style.height = value+"px";
}

 

Kanskje det kan hjelpe? :)

Lenke til kommentar

Hvorfor ikke bare bruke Scriptaculous. Det er et gjennomarbeidet JavaScript-library med effekter som fungerer veldig bra i de fleste moderne browsere.

 

Effect.SlideDown() er hva du trenger.

 

Werner

Lenke til kommentar
  • 2 uker senere...

Eg skreiv om den eg hadde til å bli litt meir fleksibel

 

function adjustElementSizeSmoothly(height, width, div, time)
{
var currentHeight = document.getElementById(div).offsetHeight;
var currentWidth = document.getElementById(div).offsetWidth;
var newHeight = currentHeight + height;
var newWidth = currentWidth + width;
if (height < 0)
{
	height = height * (-1);
}
if (width < 0)
{
	width = width * (-1);
}
var timerHeight = time/height;
var timerWidth = time/width;
var loopCounterHeight = 0;
while(height > 0)
{
	if (newHeight > currentHeight)
	{
		currentHeight = currentHeight + 1;
	}
	else if (currentHeight > newHeight)
	{
		currentHeight = currentHeight - 1;
	}
	var newtimer = timerHeight * loopCounterHeight;
	setTimeout("ChangeHeight(\""+div+"\","+currentHeight+")", newtimer);
	height--;
	loopCounterHeight++;
}
var loopCounterWidth = 0;
while(width > 0)
{
	if (newWidth > currentWidth)
	{
		currentWidth = currentWidth + 1;
	}
	else if (currentWidth > newWidth)
	{
		currentWidth = currentWidth - 1;
	}
	var newtimer = timerWidth * loopCounterWidth;
	setTimeout("ChangeWidth(\""+div+"\","+currentWidth+")", newtimer);
	width--;
	loopCounterWidth++;
}
}
function ChangeHeight(div, value)
{
document.getElementById(div).style.height = value+"px";
}
function ChangeWidth(div, value)
{
document.getElementById(div).style.width = value+"px";
}

 

Nå kan du justere eit element med kor stort antall pixler som det skal bli større eller mindre i bredden og vidden.

 

F.eks adjustElementSizeSmoothly(100, -50, "truls", 500)

vil auke høgden med 100pixler og bredden med 50 mindre pixler

Endret av siDDIs
Lenke til kommentar
  • 3 uker senere...
å titte på (og endre) andres kode er et godt utgangspunkt for å lære. ;)

 

Det er jeg enig med deg i.

 

Grunnen til at jeg bruker f.eks. prototype.js er at antall linjer JavaScript-kode jeg skriver, blir drastisk mindre. Det blir dessuten lettere å debugge.

 

Siden jeg driver med JavaScript for det meste i jobbsammenheng, er det timer å spare på å benytte funksjonalitet som andre har skrevet og testet. Og som man vet fungerer i de fleste browsere.

 

Werner

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...