Avatar billede hostgirl Nybegynder
19. oktober 2003 - 21:33 Der er 39 kommentarer og
1 løsning

Problem med absolute position

Det kan godt ske det mere er et css spm, men jeg prøver alligevel her. Jeg har dette reklame script, men jeg kan ikke få det til at passe til min side. Jeg har centret min side og ønsker at placere den inde i en td. Men den flyder blot hen over siden. Jeg tror det går galt i absolute position:

<script language="JavaScript1.2">
                        a = eval((document.body.clientWidth-760)/2)+135;
                        document.write ('<DIV ID=scrolldownbanner STYLE="top:-165px;left:'+170+'px;clip:rect(250px auto auto auto);position:absolute; width:490px; height:400px;">');
                    </script>
        Reklame billeder osv..... div>
        <script LANGUAGE="Javascript">
                        yspan = 250;
                        function scrollBannerDown()
                        {
                            if(yspan > 0)
                            {
                                yspan = yspan - 35;
                                if(yspan <= 0)
                                {
                                    yspan = 0;
                                    document.getElementById('scrolldownbanner').style.top = 97
                                };
                                                       
                                document.getElementById('scrolldownbanner').style.clip = 'rect(' + yspan + ' auto auto auto)';
                                if(yspan > 0)
                                {
                                    document.getElementById('scrolldownbanner').style.top = parseInt(document.getElementById('scrolldownbanner').style.top)+35;
                                };
                                setTimeout("scrollBannerDown()",100);
                            };
                            else
                            {   
                                setTimeout("scrollBannerUp()",3000);
                            };
                        };
                                                   
                        function scrollBannerUp()
                        {
                            if(yspan < 250)
                            {
                                yspan = yspan + 35 ;
                                if(yspan >= 250)
                                {
                                    yspan = 250;
                                    document.getElementById('scrolldownbanner').style.top = -165};
                                    document.getElementById('scrolldownbanner').style.clip = 'rect(' + yspan + ' auto auto auto)';
                                    if(yspan < 250)
                                    {
                                        document.getElementById('scrolldownbanner').style.top = parseInt(document.getElementById('scrolldownbanner').style.top)-35;
                                    };
                                    setTimeout("scrollBannerUp()",50)
                                };
                            else
                            {
                                mayclick = 1;
                            };
                        };
                    </script>
        <SCRIPT LANGUAGE="Javascript">    document.onload = setTimeout("scrollBannerDown()",3000);</SCRIPT>

På forhånd tak
Avatar billede skovenborg Nybegynder
19. oktober 2003 - 21:38 #1
har du prøvet med relativ position???

Evt. kunne du give et link til siden.
Avatar billede hostgirl Nybegynder
19. oktober 2003 - 21:41 #2
Ja, jeg har prøvet med relativ position, så vil den slet ikke scroll, kan desværre ikke give link til siden, for den er ikke oppe
Avatar billede roenving Novice
19. oktober 2003 - 22:16 #3
Du har brug for oleboles getPos():

function getPos(elm) {
    for(var zx=zy=0;elm!=null;zx+=elm.offsetLeft,zy+=elm.offsetTop,elm=elm.offsetParent);
    return {x:zx,y:zy}
}

-- der skal dog ændres nogle ting for at det funker:

For det første skal onload-sætningen til sidst fjernes, så vi også kan positionere onload:

<body onload="setTimeout('scrollBannerDown()',3000);posDiv();" onresize="posDiv();">

og så skal du indsætte en funktion i dit javascript (bare et eller andet sted imellem nogle script-tags !-):

function posDiv(){
elm = document.getElementById("minReklameTd");
    for(var zx=zy=0;elm!=null;zx+=elm.offsetLeft,zy+=elm.offsetTop,elm=elm.offsetParent);
d = document.getElementById('scrolldownbanner');
d.style.top = zy + 10 + 'px';//Her skal du selv eksperimentere med 10-tallet !-)
d.style.left = zx + 25 + 'px';//og her med de 25 !-)
}
Avatar billede hostgirl Nybegynder
20. oktober 2003 - 09:23 #4
hmm det hjalp mig ikke rigtig, vil du ikke prøve at sætte det sammen... jeg sætter pointsne lidt op...
Avatar billede olebole Juniormester
20. oktober 2003 - 10:32 #5
<ole>

Meget vil jeg gerne tages til indtægt for - men det pågældende script har jeg faktisk fra jumper, som engang var meget aktiv her på E  ;o)

hostgirl >> for at kunne svare, må vi have en URL til siden  :)

/mvh
</bole>
Avatar billede hostgirl Nybegynder
20. oktober 2003 - 11:18 #6
http://www.aspsoftware.dk/ferieguide/  kig på det reklame halløj i højre side... det skal jeg have til at passe med midter td'en, der hvor indholdet er.....
Avatar billede olebole Juniormester
20. oktober 2003 - 12:13 #7
Du bruger script'et på en lidt uortodoks måde, jeg ikke helt kan følge ... men jeg kan da oplyse dig, at du kan få div'et til at lægge sig i cellen ved at bruge 'position:relative' på cellen.

Der er så noget vrøvl med højden, hvor det virker, somom du har haft gang i nogle 'hovsa-løsninger'  :)
/mvh
Avatar billede hostgirl Nybegynder
20. oktober 2003 - 15:38 #8
oki, men ja det er lidt en hovsa løsning. Men har du evt. et forslag / script som kan klare det samme behov som det jeg søger der. For jeg står virkelig og mangler det, og smider gerne flere points i det.
Avatar billede kinderaeg Nybegynder
20. oktober 2003 - 15:38 #9
Den absolutte position virker fint. Der hvor du får problemet er, at du placerer din reklame på position 50%. Det er venstre side af din reklame der placeres der. Du skal altså placere scriptet relativt eller lave en metode der finder brugerens opløsning, og placerer dit script i forhold til det.

/Migselv
Avatar billede hostgirl Nybegynder
20. oktober 2003 - 15:58 #10
hmm vil du ikke prøve at tilpasse koden, prøv evt at kig på siden nu, nu er det lidt bedre, men hvis jeg laver den relativ så vil den slet ikke scroll, så er den blot nede hele tiden.....
Avatar billede olebole Juniormester
20. oktober 2003 - 19:52 #11
kinderaeg >> nejnej ... slet ikke. Det er da endnu en hovsa-løsning.
'position:relative' på _cellen_ ... endelig ikke scriptet!

Scriptet er jo positioneret absolute, så scriptet skal bare placeres med 'left:0px', så lægger det sig i midten, hvis cellen får 'position:relative'.
Derefter er det blot at placere det lodret ... der har hostgirl lavet noget rod. Bliver det rettet, skal det nok gå  ;o)
/mvh
Avatar billede hostgirl Nybegynder
20. oktober 2003 - 21:43 #12
olebole, du snakker som om det er en nem sag, kunne du ikke tænke dig at hjælpe ?
Avatar billede olebole Juniormester
20. oktober 2003 - 21:47 #13
Jamen, det ser da ud til, du er ved at have lavet det selv  :)
Avatar billede hostgirl Nybegynder
20. oktober 2003 - 21:51 #14
hehe ja, men kan ikke få det til at fitte ordentligt, man lære jo mest ved at prøve selv, men har snart givet op :)
Avatar billede hostgirl Nybegynder
20. oktober 2003 - 21:53 #15
Okay nu har jeg vidst fået den på plads, men nu scroller den ikke mere ?
Avatar billede kinderaeg Nybegynder
21. oktober 2003 - 09:22 #16
<script language="JavaScript1.2">
  if (window.innerWidth == null) {
    if (document.body.clientWidth < 780) {
      a = 156 + 10;
    } else {
      a = (document.body.clientWidth / 2) - 234 + 10;
    }
  } else {
    if (window.innerWidth < 780) {
      a = 156 + 10;
    } else {
      a = (window.innerWidth / 2) - 234 + 10;
    }
  }
  document.write ('<DIV ID=scrolldownbanner STYLE="top:-165px;left:' + a + 'px;clip:rect(250px auto auto auto);position:absolute; width:490px; height:400px;">');
</script>

Jeg vil tro dette skulle kunne gøre det.

/Migselv
Avatar billede olebole Juniormester
21. oktober 2003 - 10:39 #17
kinderaeg >> Nej, stadig ikke. 'left' skal jo være '0px', som vi allerede er blevet enige om  ;o)
Avatar billede kinderaeg Nybegynder
21. oktober 2003 - 11:29 #18
Vel ikke hvis den laves i en absolut position
Avatar billede olebole Juniormester
21. oktober 2003 - 12:02 #19
Jo - _netop_ med position:absolute  ;o)
Avatar billede olebole Juniormester
21. oktober 2003 - 12:03 #20
Du har - udfra dine indlæg at dømme - helt misforstået CSS-positionering
Avatar billede kinderaeg Nybegynder
21. oktober 2003 - 12:26 #21
Det er muligt, men så vidt jeg forstår positionering i CSS, så er en absolut positionering en placering i forhold til vinduet og en relativ position er i forhold til andre objekter på siden?!?
Avatar billede olebole Juniormester
21. oktober 2003 - 12:40 #22
Ja, netop ... fundamentalt forkert.
position:absolute sætter placeringen i forhold til det omgivende, positionerede element.
Eksisterer et sådan ikke, sættes placeringen i forhold til body'en (som heller ikke er lig med vinduet).
Avatar billede olebole Juniormester
21. oktober 2003 - 12:43 #23
<br><br><br><br><br><br><br><br>
<div style="position:relative;width:400px;height:200px;border:2px solid red">
  <div style="position:absolute;left:10px;top:20px;border:1px dashed blue">TEST</div>
</div>
Avatar billede kinderaeg Nybegynder
21. oktober 2003 - 13:19 #24
Ok, tak. Så blev jeg da også så meget klogere. Men så skal cellen formateres som en relativ position, for at få den til at placere sig i forhold til den, ik?!?
Avatar billede olebole Juniormester
21. oktober 2003 - 13:27 #25
Bare følg med i tråden og hvad jeg i øvrigt skriver til dig:
  (20/10-2003 12:13:39) og (20/10-2003 19:52:16)  ;o)
/mvh
Avatar billede olebole Juniormester
21. oktober 2003 - 13:28 #26
... eller se, hvad hostgirl har lavet på siden
Avatar billede kinderaeg Nybegynder
21. oktober 2003 - 13:43 #27
Ups, min fejl, de indlæg havde jeg slet ikke set :(
Avatar billede hostgirl Nybegynder
21. oktober 2003 - 13:45 #28
ej nu viker den slet ikke, hvordan får jeg den til at scroll væk?
Avatar billede olebole Juniormester
21. oktober 2003 - 14:03 #29
Hvad laver 0'et her:

document.getElementById('scrolldownbanner').style.top = parseInt(document.getElementById('scrolldownbanner').style.top) 0;

;o)
Avatar billede kinderaeg Nybegynder
21. oktober 2003 - 14:04 #30
Du skal lave cellen til en relativ position og div'en skal være absolut.

<td width="496" style="position:relative">
            <script type="text\JavaScript1.2">
                document.write ('<DIV ID="scrolldownbanner" STYLE="top:0px;left: 0px;clip:rect(250px auto auto auto);position:absolute; width:490px; height:400px;">');
            </script>
Avatar billede hostgirl Nybegynder
21. oktober 2003 - 14:07 #31
er der ikke en af jer der vil sæt det sammen så det virker, har bøvlet med det i 3 dage nu, og olebole du sidder bare og griner af mine fejl.... help.. jeg har endda sat pointsne op, skal der flere til eller hvad gør jeg forkert ?
Avatar billede kinderaeg Nybegynder
21. oktober 2003 - 14:24 #32
Det her skulle, så vidt jeg lige har prøvet, virke. Højden kan du stille på top:0px

<td width="496" style="position:relative">
    <script type="text\JavaScript1.2">
        document.write ('<DIV ID="scrolldownbanner" STYLE="top:0px;left:0px;clip:rect(250px auto auto auto);position:absolute; width:490px; height:400px;">');
    </script>
Avatar billede olebole Juniormester
21. oktober 2003 - 14:24 #33
Nej, jeg griner ikke ad dine fejl, men smiler til dig.
Jeg vil gerne forholde mig til de mere 'akademiske' detaljer, men gider ikke sidde og rode i script'et. Årsager:
1. Jeg skal bruge tid på at skrive det på en - for mig - overskuelig måde (jeg bryder mig absolut ikke om opstillingen).
2. Jeg bander dagligt den slags bannere (og de, der sviner WWW til med dem) langt ned i det aller dybeste, sorte, altopslugende helvede. Jeg _HADER_ disse bannere som pesten - og finder det ynkeligt, at nogen finder sig nødsaget til at ulejlige sine brugere med den slags anmassende, agressiv reklame-lort!

Nu ved du, hvorfor  :)
/mvh
Avatar billede hostgirl Nybegynder
21. oktober 2003 - 14:40 #34
olebole, jeg mente også det med at smile :)  Men banneret er ikke for at reklamere for alt muligt, men for at vise de besøgende et sommerhus som der evt kunne vælges, det er for brugernes eget bedste. Men helt i orden med din mening :)

Nu har jeg fået den til at side rigtig, men den kør forlangt ned og kør ikke op til det samme punkt igen...
Avatar billede kinderaeg Nybegynder
21. oktober 2003 - 15:08 #35
Du skal fjerne denne linie i dine scroll-funktioner, så skulle den være i vinkel.

document.getElementById('scrolldownbanner').style.top = 0
Avatar billede hostgirl Nybegynder
21. oktober 2003 - 22:05 #36
hmm har jeg ikke en linie der hedder...
Avatar billede kinderaeg Nybegynder
22. oktober 2003 - 09:06 #37
Ok, synes jeg de hed tidligere. De hedder nu:

document.getElementById('scrolldownbanner').style.top = 97

i funktionen scrollBannerDown(), og:

document.getElementById('scrolldownbanner').style.top = -165

i funktionen scrollBannerUp().
Avatar billede hostgirl Nybegynder
22. oktober 2003 - 14:05 #38
nu virker den slet ikke, nu giver en error
Avatar billede kinderaeg Nybegynder
22. oktober 2003 - 15:38 #39
Ja ja, du skulle også kun slette "document.getElementById('scrolldownbanner').style.top = -165", ikke den tuborg-slut der stod bagefter. Jeg var måske ikke helt klar i den formulering ;)
Avatar billede hostgirl Nybegynder
22. oktober 2003 - 16:13 #40
takker, nu virker det, tusind tak til jer alle
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