Avatar billede doeleman Nybegynder
27. juni 2000 - 10:13 Der er 1 kommentar og
2 løsninger

DHTML-script søges

Jeg søger et script, hvor ét layer skubber det andet layer ud af billedet.

Effekten kan ses på http://www.bratta.com/portfolio.asp når der trykkes på "Main menu".

Sourcen på Bratta er rimelig uoverskuelig (for mig), så hvis der er nogen der kan simplificere den, eller henvise til en anden side, hvor en lignende effekt bliver brugt, vil det blive belønnet.
Avatar billede olebole Juniormester
29. juni 2000 - 03:57 #1
<ole>
Jeg har prøvet at lave et til dig, hvor alt er kogt ned til, at du kan lade billeder glide ind fra højre - over hinanden. Afstanden fra toppen af vinduet sætter du i <style> under 'top'. Ellers tror jeg det meste er kommenteret. Har du problemer med at forstå selve objekt-bygningen, må du prøve en tutorial.

<html>
<head>
<script language="JavaScript">
<!--
var speed = 30;  // Sætter hvormange pixels, der skal flyttes pr. opdatering.

// **********************  Check browseren  **********************
function checkClient() {
    var brow = navigator.appName;
    if (brow=="Netscape") this.brow = "ns";
    else if (brow=="Microsoft Internet Explorer") this.brow = "ie";
    this.version = navigator.appVersion;
    this.vers = parseInt(this.version);
    this.ns = (this.brow=="ns" && this.vers>=4);
    this.ns4 = (this.brow=="ns" && this.vers==4);
    this.ie = (this.brow=="ie" && this.vers>=4);
    this.ie4 = (this.version.indexOf('MSIE 4')>0);
}
br = new checkClient();
// ***************************************************************

// *******************  Initialiser dine lag  ********************
var myLayers = new Array();  // Opret en 'liste' til objekter
function init() {
    myLayers[0] = new makeLyrObj('glideDiv0');  // Lav et objekt af dit første <div>
    myLayers[1] = new makeLyrObj('glideDiv1');  // Lav et objekt af dit andet <div>
    winW = (br.ns)? window.innerWidth : document.body.offsetWidth;  // Mål vindues-bredden
}
// ***************************************************************

// *********  Lav et objekt med egenskaber og metoder  ***********
function makeLyrObj(whichLyr) {
    if (br.ns) {
        this.css = (br.ns4)? eval("document.layers[whichLyr]") : eval("document.getElementById(whichLyr).style");
    }else if (br.ie) {
        this.css = eval("document.all[whichLyr].style");
    }
    this.zUp = deltaZ;
    this.x = this.css.left;
    this.moveLeft = lyr_moveLeft;
    this.move = lyr_move;
    this.lyr = whichLyr + "Lyr";
    eval(this.lyr + "= this");
    return this;
}
function deltaZ(z) {
    this.css.zIndex = z;
}
function lyr_moveLeft() {
    this.move(this.x-speed);
    if (this.x > speed) {
        setTimeout(this.lyr+".moveLeft()",12);
    }else{
        setTimeout(this.lyr+".move(0)",12);
    }
}
function lyr_move(x) {
    this.x = x;
    this.css.left = this.x;
}
// ***************************************************************

// ************  Lad et objekt glide ind over siden  *************
var zCheck = 0;  // Sæt zCheck lig med lagenes z-index ('dybde' på skærmen...højere værdi er 'nærmere' på brugeren)
function glide(which) {
    myLayers[which].move(winW);  // Flyt laget til lige udenfor skærmens højre side ('winW' fandt vi i 'init()')
    myLayers[which].zUp(zCheck+1);  // Læg laget 'øverst'
    myLayers[which].css.visibility = "visible";  // Gør laget synligt
    myLayers[which].moveLeft();  // Lad laget glide mod venstre
    zCheck++;  // Tæl zCheck op, så vi er klar til at lægge næste lag øverst
}
// ***************************************************************

// -->
</script>
<style type="text/css">
<!--
.glDiv{ position:absolute; visibility:hidden; top:120px; left:0px; z-index:0; }
-->
</style>
</head>

<body bgcolor=white onload=init();>
<div id="startDiv" class="glDiv" style="visibility:visible"><img src="start.gif"></div>
<div id="glideDiv0" class="glDiv"><img src="glide_1.gif"></div>
<div id="glideDiv1" class="glDiv"><img src="glide_2.gif"></div>
<a href="java script:glide(0);">Start glideDiv0</a><br><br>
<a href="java script:glide(1);">Start glideDiv1</a>

</body>
</html>

/Vh
</bole>
Avatar billede doeleman Nybegynder
30. juni 2000 - 12:04 #2
Hej olebole,

Jeg er meget tilfreds med dit script.
Som du kan se, har jeg øget pointtallet til 300 og disse vil blive dine, hvis du kan lave følgende ændringer:
- de første layers skal blive usynlige, når en nyt glider ind
  (layerne har forskellige størrelse, så de dækker ikke nødvendigvis hinanden).
- istedet for en "Start glideDiv0" / "Start glideDiv1" vil jeg hellere have en frem / tilbage knap, som går til henholdsvis næste / forrige layer
Avatar billede doeleman Nybegynder
08. juli 2000 - 16:05 #3
Da jeg ikke har hørt mere, får du "bare" de 100 point, jeg først havde lovet.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester