Mala škola Java Script-a sa primerima - efekti u radu sa tekstom i grafikom

HIJERARHIJA TEKSTA
Java Scriptom možemo tekstu dati  zanimljive efekte u vidu graduiranja teksta:

<HTML><HEAD>
<SCRIPT LANGUAGE="JavaScript">
    <!--
    function izradiTablu(n) {
        var nb;
        this.length = n;
        for (var i = 1; i <=n; i++)
            if (i<10) {
                nb = i+"";
                nb = nb.substring(0,1);
                this[i] = nb;
            }
        return this;
    }

    function konvertujBoje(color) {
        var hexa1;
        var hexa2;
        var colorHexa;
        tabHex = new izradiTablu(16);
        tabHex[10]="A"; tabHex[11]="B"; tabHex[12]="C"; tabHex[13]="D"; tabHex[14]="E"; tabHex[15]="F";
        hexa2 = (color%16);
        hexa1 = parseInt(color/16);
        hexa2 = tabHex[hexa2];
        if (hexa2 == null)
            hexa2 = "0";
        hexa1 = tabHex[hexa1];
        if (hexa1 == null)
            hexa1 = "0";
        colorHexa = hexa1 + hexa2;
        return colorHexa;
    }

    function dajGradaciju(mojTekst, velicinaFonta, vrstaFonta, osnovnaRGBboja) {
        var factor = 256/(mojTekst.length+1);
        var i;
        var c1,c2,c3;
        for (i=0;i<mojTekst.length;i++) {
            ton=factor*i;
            if (osnovnaRGBboja == 0) {
                c1 = 'FF'
                c2 = konvertujBoje(ton);
                c3 = c2;
            }
            else if (osnovnaRGBboja == 1) {
                c1 = konvertujBoje(ton);
                c2 = 'FF'
                c3 = c1;
            }
            else {
                c1 = konvertujBoje(ton);
                c2 = c1;
                c3 = 'FF'
            }
            document.write ('<FONT SIZE=' + velicinaFonta + ' FACE="' + vrstaFonta + '" COLOR="#' + c1 + c2 + c3 + '">' + mojTekst.substring (i,i+1) + '</FONT>');
        }
    }
    //-->
</SCRIPT>
</HEAD>

<BODY>
<H3>Primer HIJERARHIJE teksta.</H3>
<SCRIPT LANGUAGE="JavaScript">
    <!--
    dajGradaciju('Probni tekst za efekat TEXT GRADATION...CRVENI',6,'Times New Roman',0)
    document.write ('<BR>');
    dajGradaciju('Probni tekst za efekat TEXT GRADATION...ZELENI',6,'Times New Roman',1)
    document.write ('<BR>');
    dajGradaciju('Probni tekst za efekat TEXT GRADATION...PLAVI',6,'Times New Roman',2)
    //-->
</SCRIPT>
</BODY>
</HTML>

Funkcija dajGradaciju()  se poziva sa parametrima:
    dajGradaciju(željeni tekst, veličina slova, vrsta slova, osnovna boja)

Zadnji broj u funkciji dajGradaciju() predstavlja osnovnu RGB boju i može biti:
    0 - za crveni tekst
    1 - za zeleni tekst
    2 - za plavi tekst

Datoteka pr41.htm
 

SCROLL SADRŽAJA STATUSNE LINIJE
Sadržaj statusne linije dokumenta moguće je "skrolovati": Pogledajte primer
<html>
<head><title>Skrolovanje poruke u statusnoj liniji</title>
<script LANGUAGE="JavaScript">
poruka = "Skrolovanje poruke u statusnoj liniji"; /*sadrzaj stringa statusne linije */
poruka = "...          ..." + poruka; 
pos = 0;  /*tekuca pozicija stringa poruka */
function Skroluj() {
   window.status = poruka.substring(pos, poruka.length) + poruka.substring(0, pos);
   /*string je sastavljen od dela poruke od pozicije pos do kraja + nastavljen delom poruke
     od pocetka do pozicije pos*/
   
   pos++;
   if (pos > poruka.length) pos = 0;
   /* ako je tekuca pozicija veca od duzine poruke, vratiti se na pocetnu poziciju 0*/
   
   window.setTimeout("Skroluj()",200);
   /*nakon 2 sekunde pozovi funkciju ispisa skrol poruke */
   
}
Skroluj();
</script>
</head>
<body>
<h1>Skrolovanje poruke u statusnoj liniji</h1>
Pratite tekst u statusnoj liniji!!!
</body>
</html>


SCROLL SADRŽAJA DOKUMENTA
Sadržaj HTML dokumenta moguće je "skrolovati":

<HTML><HEAD></HEAD>
<BODY>
<SCRIPT language="JavaScript">
    var tekucaPozicija=0, alt=1, pozicija1=0, pozicija2=-1

    function inicijaliza(){
        startujSkroliranje()
    }

    function startujSkroliranje(){ /* poziv skrola u vremenskim razmacima od 10 milisekundi */
        setInterval("skrolProzor()",10)
    }

    function skrolProzor()/* funkcija skrolovanja */
        if (document.all)
            temp=document.body.scrollTop
        else
            temp=window.pageYOffset
        if (alt==0)
            alt=1
        else
            alt=0
        if (alt==0)
            pozicija1=temp
        else
            pozicija2=temp
        if (pozicija1!=pozicija2){
            if (document.all)
                tekucaPozicija=document.body.scrollTop+1
            else
                tekucaPozicija=window.pageYOffset+1
            window.scroll(0,tekucaPozicija)
        }
        else{
            tekucaPozicija=0
            window.scroll(0,tekucaPozicija)
        }
    }

    window.onload=inicijaliza  /* pokretanje skrolovanja */
</SCRIPT>

<CENTER>
<H3>Primer skrolovanja dokumenta...</H3>
<IMG SRC="bkgr1.jpg"><BR>
<SCRIPT>
    for (var i = 1; i <=15; i++) /* da se bi ne upisivao ručno sav  tekst! */
       document.write("<P>Ovo je " + i + ". red probnog teksta u dokumentu...")
</SCRIPT>
</CENTER>
</BODY>
</HTML>

Datoteka pr42.htm
 
 

ZUMIRANJE TEKSTA
 
<HTML>
<HEAD>
<SCRIPT Language="Javascript">
    <!--
    imeBrowsera = navigator.appName;
    verzijaBrowsera = parseInt(navigator.appVersion)
    if ((imeBrowsera=="Netscape" && verzijaBrowsera>=4) || (imeBrowsera=="Microsoft Internet Explorer" && verzijaBrowsera>=4)){
        if (imeBrowsera=="Netscape"){
            browserNetscape=true
            milisekundi=30
        }
        else{
            browserNetscape=false
            milisekundi=80
    }
    var msg=0;
    var z=0;
    var timer1;
    var poruka= new Array();
    var color= new Array();
    var vrednost= new Array('-6','-5','-4','-3','-2','-1','+1','+2','+3','+4','+5','+6')

    /*  upis poruka koje želite da se pojavljuju zumirane i njihovih boja! */
    poruka[0]='Vi ste'
    color[0]='#FF0000'

    poruka[1]='u sali'
    color[1]='#0000FF'

    poruka[2]='gimnazije'
    color[2]='#FF00FF'

    poruka[3]='u kojoj se trenutno odvija'
    color[3]='#00FF00'

    poruka[4]='JavaScrpt kurs'
    color[4]='#000000'

    function start(){
        if ((imeBrowsera=="Netscape" && verzijaBrowsera>=4) || (imeBrowsera=="Microsoft Internet Explorer" && verzijaBrowsera>=4)){
            if(z<vrednost.length){
                if (browserNetscape){
                    document.layers['text'].document.writeln('<P Class="main" Align="Center"><font color="'+color[msg]+'" size="'+vrednost[z]+'" face="Arial"><NOBR>' + poruka[msg] + '</NOBR></font></P>')
                    document.layers['text'].document.close();
                }
                else{
                    text.innerHTML='<Pre><P Class="main" Align="Center"><font color="'+color[msg]+'" size="'+vrednost[z]+'" face="Arial"><NOBR>' + poruka[msg] + '</NOBR></font></P></Pre>'
                }
                z++;
                timer1=window.setTimeout('start()',milisekundi)
            }
            else
                podesi();
        }
    }

    function stop(){
        if ((imeBrowsera=="Netscape" && verzijaBrowsera>=4) || (imeBrowsera=="Microsoft Internet Explorer" && verzijaBrowsera>=4))
            window.clearTimeout(timer1);
            window.clearTimeout(timer2);
    }

    function podesi(){
        if (browserNetscape){
            document.layers['text'].document.writeln('')
            document.layers['text'].document.close();
        }
        else
            text.innerHTML='';
            if(msg<poruka.length-1){
                msg++;
            }
            else
                msg=0;
                z=0;
                timer2=window.setTimeout('start()',1000)
        }
    }
    //-->
</SCRIPT>
</HEAD>
<BODY onLoad="start()" onUnload="stop()">

<!-- poziciju početka zumiranja postavljamo ovde, sa left i top! -->
<DIV ID="text" STYLE="position: absolute; left: 50; top: 100"></DIV>

<LAYER NAME="text" left=4 top=80></LAYER>
<H4>Primer zumiranja teksta</H4>
<HR>
</BODY>
</HTML>
 
MENI SLIKA

Moguće je posetiocu ponuditi meni slika, bez potrebe da se stranica ponovno učitava:

<HTML>
<HEAD>
<SCRIPT LANGUAGE="JavaScript">
    <!--
    function verzijaBrowsera(Netscape, Explorer) { /* provera verzije browsera, zbog razlika u prikazu */
        if ((navigator.appVersion.substring(0,3) >= Netscape && navigator.appName == 'Netscape') ||
                (navigator.appVersion.substring(0,3) >= Explorer && navigator.appName.substring(0,9) == 'Microsoft'))
            return true;
        else return false;
    }
-->
</SCRIPT>
</HEAD>
<BODY>
<CENTER>
<FORM>
    <IMG NAME="mojaSlika" SRC="bkgr1.jpg" BORDER=0 WIDTH=200 HEIGHT=200><HR WIDTH=50%>
    <SELECT NAME="meniSlika" SIZE=3 onChange ="if (verzijaBrowsera(3.0,4.0)) mojaSlika.src=form.meniSlika.options[form.meniSlika.selectedIndex].value;">
        <!-- ovdje definisemo slike za meni -->
        <OPTION VALUE="bkgr1.jpg">probna slika 1
        <OPTION VALUE="bkgr2.jpg">probna slika 2
        <OPTION VALUE="bkgr3.jpg">probna slika 3
    </SELECT>
</FORM>
</CENTER>
</BODY>
</HTML>
 

Datoteka pr45.htm
 

POMERANJE SLIKA
Ako korisniku želite dati mogućnost da Vaše slikama pomera po ekranu:

<HTML>
<HEAD>
<SCRIPT LANGUAGE="JavaScript">
<!--
N = (document.all) ? 0 : 1;
var ob;

function MD(e) { /* servisira pritisak na taster miša */
    if (N) {
        ob = document.layers[e.target.name];
        X=e.x;
        Y=e.y;
        return false;
    }
    else {
        ob = event.srcElement.parentElement.style;
        X=event.offsetX;
        Y=event.offsetY;
    }
}

function MM(e) { /* servisira pomeranje miša s pritisnutim tasterom */
    if (ob) {
        if (N) {
            ob.moveTo((e.pageX-X), (e.pageY-Y));
        }
        else {
            ob.pixelLeft = event.clientX-X + document.body.scrollLeft;
            ob.pixelTop = event.clientY-Y + document.body.scrollTop;
            return false;
        }
    }
}

function MU() { /* servisira otpuštanje tastera miša */
    ob = null;
}

if (N) {
    document.captureEvents(Event.MOUSEDOWN | Event.MOUSEMOVE | Event.MOUSEUP);
}
document.onmousedown = MD;
document.onmousemove = MM;
document.onmouseup = MU;
//-->
</SCRIPT>
</HEAD>

<BODY>
<!-- upis početnih pozicija slika (left/top) i naziva slika -->
<div id="s" style="position:absolute;left:50;top:100;">
    <img src="bkgr1.gif" name="s">
</div>
<div id="d" style="position:absolute;left:50;top:150;">
    <img src="bkgr2.gif" name="d">
</div>
<div id="c" style="position:absolute;left:100;top:100;">
    <img src="bkgr3.gif" name="c">
</div>
<div id="h" style="position:absolute;left:100;top:150;">
    <img src="bkgr1.gif" name="h">
</div>
<H4>Ove slicice mozete pomerati mi&#353;em!</H4><HR ALIGN="left" WIDTH=50%>
</BODY>
</HTML>
 

Datoteka pr46.htm
 
ZUMIRANJE SLIKE
Na kraju, evo još jednog zanimljivog efekta - zumiranje slike:

<HTML>
<HEAD>
<SCRIPT language="javascript">
    function zumiraj(i){
        if (i == 1) { /* povećanje slike */
            document.slika1.width = document.slika1.width * 1.20;
            document.slika1.height = document.slika1.height * 1.20;
        }
        else { /* smanjenje slike */
            if (document.slika1.width >30 && document.slika1.height > 30) {
                document.slika1.width = document.slika1.width * 0.80;
                document.slika1.height = document.slika1.height * 0.80;
            }
        }
    }
</SCRIPT>
</HEAD>

<BODY>
<TABLE width="75%" border="0" align="center">
    <TR>
        <TD height="300">
            <DIV align="center"><IMG SRC="js-img2.jpg" NAME="slika1"></DIV>
        </TD>
    </TR>
    <TR>
        <TD>
            <DIV align="center">
                <HR WIDTH=50%>
                <INPUT TYPE="button" VALUE="Povećaj" onClick="javascript:zumiraj(1)">
                <INPUT TYPE="button" VALUE=" Smanji "  onClick="javascript:zumiraj(2)">
            </DIV>
        </TD>
    </TR>
</TABLE>
</BODY>
</HTML>
 
PRIMER POMERANJA TEKSTA ZA MIŠEM

<HTML><HEAD>
<STYLE>.spanstyle {
    COLOR: black; FONT-FAMILY: Verdana; FONT-SIZE: 8pt; FONT-WEIGHT: bold; POSITION: absolute; TOP: -50px; VISIBILITY: visible
}
</STYLE>
<SCRIPT LANGUAGE="JavaScript">
    <!--
    var x, y;
    var step = 10;
    var flag = 0;
    var message = "Java Script! ";
    message = message.split("");
    var xpos = new Array();
    for (i = 0; i <= message.length - 1; i++) {
        xpos[i] = -50;
    }
    var ypos = new Array();
    for (i = 0; i <= message.length - 1; i++) {
        ypos[i]= -50;
    }

    function slediMisa(e) {
        x = (document.layers) ? e.pageX : document.body.scrollLeft + event.clientX;
        y = (document.layers) ? e.pageY : document.body.scrollTop + event.clientY;
        flag = 1;
    }

    function pomeriSlova() {
        if (flag == 1 && document.all) {
            for (i = message.length - 1; i >= 1; i--) {
                xpos[i] = xpos[i - 1] + step;
                ypos[i] = ypos[i - 1];
            }
            xpos[0] = x + step;
            ypos[0] = y;
            for (i = 0; i < message.length - 1; i++) {
                var thisspan = eval("span" + (i) + ".style");
                thisspan.posLeft = xpos[i];
                thisspan.posTop = ypos[i];
            }
        }
        else if (flag==1 && document.layers) {
            for (i = message.length - 1; i >= 1; i--) {
                xpos[i] = xpos[i - 1] + step;
                ypos[i] = ypos[i - 1];
            }
            xpos[0] = x + step;
            ypos[0] = y;
            for (i = 0; i < message.length - 1; i++) {
                var thisspan = eval("document.span" + i);
                thisspan.left = xpos[i];
                thisspan.top = ypos[i];
            }
        }
        var timer = setTimeout("pomeriSlova()", 10);
    }
//-->
</SCRIPT>
</HEAD>
<BODY onload="pomeriSlova()" style="OVERFLOW-X: hidden; OVERFLOW-Y: scroll; WIDTH: 100%">
<SCRIPT LANGUAGE="JavaScript">
    <!-- /* iniciranje efekta */
    for (i = 0; i <= message.length-1; i++) {
        document.write("<span id='span"+i+"' class='spanstyle'>");
        document.write(message[i]);
        document.write("</span>");
    }
    if (document.layers) {
        document.captureEvents(Event.MOUSEMOVE);
    }
    document.onmousemove = slediMisa;
    //-->
</SCRIPT>
</BODY>
</HTML>
 

Datoteka pr48.htm