Lehet PHP-ban időzíteni?
Apámmal jól összevesztünk ezen a kérdésen, mert a PHP elem ugye előbb jelenik meg, mint a Flash, és ez neki nem tetszik... és nem hiszi el, hogy nem lehet php-ban időzíteni, mert az a flash. De ő válig állítja hogy csak én vagyok a hülye meg a lusta, és érdekes módon mindenki meg tudja csinálni rajtam kívül.
Nos, melyikünknek van igaza? :S Lehet PHP-ban időzíteni mikor jöjjön be a szöveg, vagy nem? Ja, és hogy fokozatosan váljon átlátszatlanná, természetesen, mert apámnak soha semmi nem elég XD
Előre is köszönöm a válaszokat!
Szia!
A PHP nem igazán jó eszköz a webdesign-ra. Sokkal inkább a "belső"(szerveroldali) feladatok ellátására használják pl.: fájl- és adatbáziskezelés. Viszont a PHP-ba beépíthetőek más programnyelvek amikkel tudod szépítgetni a programod külsőjét. Amire neked szükséged lesz az a Javascript, esetleg ha nagyon profit akarsz ott az AJAX. Kiindulási alapnak itt egy példa:
var TimeToFade = 1000.0;
function fade(eid)
{
var element = document.getElementById(eid);
if(element == null)
return;
if(element.FadeState == null)
{
if(element.style.opacity == null
|| element.style.opacity == ''
|| element.style.opacity == '1')
{
element.FadeState = 2;
}
else
{
element.FadeState = -2;
}
}
if(element.FadeState == 1 || element.FadeState == -1)
{
element.FadeState = element.FadeState == 1 ? -1 : 1;
element.FadeTimeLeft = TimeToFade - element.FadeTimeLeft;
}
else
{
element.FadeState = element.FadeState == 2 ? -1 : 1;
element.FadeTimeLeft = TimeToFade;
setTimeout("animateFade(" + new Date().getTime() + ",'" + eid + "')", 33);
}
}
function animateFade(lastTick, eid)
{
var curTick = new Date().getTime();
var elapsedTicks = curTick - lastTick;
var element = document.getElementById(eid);
if(element.FadeTimeLeft <= elapsedTicks)
{
element.style.opacity = element.FadeState == 1 ? '1' : '0';
element.style.filter = 'alpha(opacity = '
+ (element.FadeState == 1 ? '100' : '0') + ')';
element.FadeState = element.FadeState == 1 ? 2 : -2;
return;
}
element.FadeTimeLeft -= elapsedTicks;
var newOpVal = element.FadeTimeLeft/TimeToFade;
if(element.FadeState == 1)
newOpVal = 1 - newOpVal;
element.style.opacity = newOpVal;
element.style.filter = 'alpha(opacity = ' + (newOpVal*100) + ')';
setTimeout("animateFade(" + curTick + ",'" + eid + "')", 33);
}
<div id="fadeBlock" style="background-color:Lime;width:250px;
height:65px;text-align:center;">
<br />
Szöveg
</div>
<br />
<br />
<input type="button" onclick="fade('fadeBlock');" value="Induljon az effekt" />
hú-hú, elmagyaráznád hogy van ez? :D Mert érdekelne, de tényleg :D
Amúgy nem tudom mi a profi és mi nem, mivel sose tanulhattam infót, csak magamtól tudom amit eddig... ezért is kéne elmagyarázni :D Örülnék neki^^
Szia!
Írtam Neked egy egyszerűbb példát, s megpróbálom elmagyarázni annyira, hogy Te is megtudd valósítani.
A PHP-ban írt kód nem kerülhet a kliensbe, ezért az apache nevű program fordítja és dolgozik rajta. Ennek egyszerű védelmi okai vannak, ugyanis a PHP-ba sokszor adunk meg olyan adatokat, amiket nem szeretnénk, ha mások is látnának, pl. adatbázis jelszók.
Viszont, ha PHP-ban kiíratunk valamit az echo, vagy a print parancsal, akkor az bizony megfog jelenni a kliens oldalon is. Tehát, ha van nekünk egy *.php fájlunk, akkor abba beírunk egy echo "asd"; parancsot, az megfog jelenni az oldalon. Persze nem egy olyan elágazásba kell beírni ami biztos nem fut le, mert akkor nem, de gondolom ezt azért Te is látod a programban.
Nos tehát, itt a kód ami neked kell:
<script language="JavaScript1.2">
alap=255
function elotunik(){
if(alap>0) {
alap-=11;
document.getElementById("doboz").style.color="rgb("+alap+","+alap+","+alap+")";
setTimeout("elotunik()",100);
}
else
alap=255
}
</script>
<body onload="elotunik();">
<div id="doboz" style="text-align:center;">
<br />
Elotuno szoveg
</div>
Ezt kell kiiratnunk a PHP-val. Az előtűnés idejét a setTimeout("elotunik()",100); sorban a "100" szám növelésével/csökkentésével tudod módosítani.
A szöveget pedig megtalálod a kód vége felé.
Na most, ezt úgy fogjuk beilleszteni a PHP-ba, hogy megkeresed neki a helyét, mint mondtam ügyelj, hogy olyan helyre illeszd be ami biztosan lefut, majd üss pár entert és írd be ezt:
echo "<script language='JavaScript1.2'>
alap=255
function elotunik(){
if(alap>0) {
alap-=11;
document.getElementById('doboz').style.color='rgb('+alap+','+alap+','+alap+')';
setTimeout('elotunik()',100);
}
else
alap=255
}
</script>
<body onload='elotunik();'>
<div id='doboz' style='text-align:center;'>
<br />
Elotuno szoveg
</div>";
A macskakörmöket a php miatt lekellett cserélni, hogy tudja, hol kezdődik, és hol végződik a szöveg.
Remélem sikerülni fog, és nem írtam el semmit!
én jquery-re szavazok:
<head>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(function() {
$("#gomb").click(function() {
$("#text").fadeTo("slow", 0.0);
});});
</script>
</head>
<body>
<div id=gomb>gomb</div>
<a id=text>text</a>
</body>
#gomb id-ju divre kattintva a #text id-ju szöveg elhalványul.
php-ban tilos időzíteni, mert feleslegesen visszatartod az adatfolyamokat a (TCP vonalakat) a hírközlési hálózatokban!
önkényesen más ember elől veszed el a portokat a várakozás időtartama alatt!
tessék javascriptben időzíteni!
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!