Strona 1 z 1

jak wycentrowac skrypt w tabeli ???

PostNapisane: 20 sierpnia 2003, o 14:16
przez Totom
mam taki kod: (kod do wyswietlania 4 banerow na zmiane co 8 sek.)

<script language=JavaScript>
<!--
function AppInit(){
bannersInit()
newBanner()
}

function bannersInit(){
numBan=4
num=numBan-1
bann=new Array(numBan)
for (i=0;i<numBan;i++)
bann[i]="Div"+i
}

function newBanner(){
speed=8000
banOld=bann[num]
num++
num=num %numBan
banNew=bann[num]
showNew()
setTimeout("newBanner()",speed)
}

function showNew(){
if(document.all) {
document.all[banOld].style.visibility="hidden";
document.all[banNew].style.visibility="visible";
}
if (document.layers){
document.layers[banOld].visibility="hide";
document.layers[banNew].visibility="show";
}
}
window.onload=AppInit
//-->
</script>
<STYLE TYPE="text/css">
<!--
#Div0 {position:absolute; left:150; top:130; width:468; height:60;
clip:rect(0,468,60,0); visibility:hidden; layer-visibility:hide}
#Div1 {position:absolute; left:150; top:130; width:468; height:60;
clip:rect(0,468,60,0); visibility:hidden; layer-visibility:hide}
#Div2 {position:absolute; left:150; top:130; width:468; height:60;
clip:rect(0,468,60,0); visibility:hidden; layer-visibility:hide}
#Div3 {position:absolute; left:150; top:130; width:468; height:60;
clip:rect(0,468,60,0); visibility:hidden; layer-visibility:hide}
H2 {font-family: Arial, Helvetica; font-size: 15pt}
BODY { background: tlo0037.gif; font-family: Arial, Helvetica; font-size: 10pt; color: #000000}
A { text-decoration: none; color: ##0000FF}
TD {font-family: Arial, Helvetica; font-size: 10pt; color: ##000080}
-->
</STYLE>

</head>
<BODY>
<script language="javascript">

</script>
<div id="Div0"><a href="http://www.allegro.pl/ap/count.php?apu=1373980&dest=1&type=12&bid=69117&co=1" target="_blank">
<img SRC="http://www.allegro.pl/ap/show.php?type=12&bid=69117&apu=1373980&w=468&h=60&co=1" alt="[Allegro.pl - najwięcej ofert, najlepsze ceny, sprawdź!]" border=0 width=468 height=60></a></div>

<div id="Div1"><a href="http://www.allegro.pl/ap/count.php?apu=1373980&dest=15&type=124&bid=67990&co=1" target="_blank">
<img src="http://www.allegro.pl/ap/show.php?type=124&bid=67990&apu=1373980&w=468&h=60&co=1" border=0 width=468 height=60 alt="[Bądź piękna z Allegro.pl!]"></a></div>

<div id="Div2"><a href="http://www.allegro.pl/ap/count.php?apu=1373980&dest=17&type=122&bid=67970&co=1" target="_blank">
<img border=0 src="http://www.allegro.pl/ap/show.php?type=122&bid=67970&apu=1373980&w=468&h=60&co=1" border=0 width=468 height=60 alt="[Allegro.pl - Twoj serwis aukcyjny, z nami zrobisz najlepsze interesy!]"></a></div>

<div id="Div3"><a href="http://www.allegro.pl/ap/count.php?apu=1373980&dest=8&type=117&bid=67987&co=1" target="_blank">
<img SRC="http://www.allegro.pl/ap/show.php?type=117&bid=67987&apu=1373980&w=468&h=60&co=1" alt="[ Allegro - licytuj ksiazki i komiksy ]" border=0 width=468 height=60></a></div>
<br><br><br><br><br><br><br>


( to jest oczywiscie fragment strony ramy body, head, table - sa zamkniete )
jak zrobic aby baner byl na srodku tabeli w pionie i poziomie ?? juz kombinuje na wszystkie sposoby drugi dzien i bez skutku :(((
bardzo prosze o pomoc

PostNapisane: 20 sierpnia 2003, o 14:37
przez lucas

PostNapisane: 20 sierpnia 2003, o 23:27
przez Wydra707
Zastosowałeś tu pozycjonowanie bezwzględne, a w takiej sytuacji trudno jest uzyskać centrowanie obiektu przy różnych rozdzielczościach i działające w różnych przeglądarkach (w IE można użyć dynamicznie obliczanych wyrażeń jako wartości CSS, ale to nie zadziała w innych przeglądarkach). Można kombinować z zaczepieniem obiektów DIV o jakiś inny element strony (przeczytaj pozycjonowanie cz. I w dziale artykułów tego serwisu), ale nie będzie to eleganckie i mogą być problemy poza IE. Ostatecznie można użyć funkcji obliczającej właściwe położenie kontenerów DIV na podstawie wymiarów okna i wywoływanej przez onload i onresize, ale... jw.

Najlepiej chyba przerobić skrypt:
1. Zrezygnuj z pozycjonowania absolutnego - banery (ew. w kontenerach DIV) wstaw wprost do komórki tabelki mającej ustawione centrowanie zawartości w pionie i w poziomie.
2. Do pokazywania i ukrywania banerów użyj właściwości display zamiast visibility (display:block oraz display:none). Dzięki temu niewidoczne banery nie będą zabierały miejsca i będzie można pozycjonować je normalnie.

W Explorerze możesz zrezygnować z DIV-ów i ustawić tylko jeden baner (IMG) z linkiem (A), a następnie dynamicznie zmieniać im właściwości SRC (adres obrazka), HREF (adres linku) i ALT (opis linku) pobierając dane z odpowiedniej tablicy. To będzie najładniejsze rozwiązanie i nie sprawiające problemu przy pozycjonowaniu, ale nie wiem co na to inne przeglądarki.

Tyle pomysłów.

Pozdrawiam
Paweł Rajewski

nadal nie dziala :((((((((

PostNapisane: 21 sierpnia 2003, o 17:50
przez Totom
a wiec zrobilem tak :

prosiłem

ale nie dziala :(
i teraz mam 3 banery jeden pod drugim zamiast jednego :(((
heeeeelllllllpppppppp jestem totalnym laikiem w programowaniu skryptow ten skopiowalem i tylko podmienilem kody banerow

PostNapisane: 21 sierpnia 2003, o 18:34
przez Dyrcio
W stylach dopisz jeszcze takie cus w kazdym DIV.... position:absolute; top:10; mozesz podac inne wartosci.
oznacza ze warstwa ma znajdowac sie 10px od gory.
Poza tym jest tam sporo bledow, albo czegos nie dopisales.
W sekscji BODY jest tag javascript, ktory jest pusty.
i nie ma definicji co to AppInit, chyba zo to mialo byc w tym tagu.

PostNapisane: 21 sierpnia 2003, o 20:42
przez Wydra707
No i prawie dobrze. Jak rozumiem, przedstawiłeś Totom tylko fragment kodu - funkcje AppInit(), bannersInit() i newBanner() dopisałem sobie z pierwszego posta.

Poprawki:
1. W arkuszu stylów wszystkie banery powinny być początkowo niewidoczne (display:none). Jeśli ustawisz im display:block (a tak jest w Twoim przykładzie), na początku zostaną wyświetlone wszystkie naraz co oczywiście zaburzy układ strony.

2. W funkcji showNew() musisz zmienić kolejność zapisów block i none. banOld określa baner, który jest aktualnie wyświetlany i on powinien zostać ukryty:

document.all['banOld'].style.display="none";

...a banNew to baner do wyświetlenia i on powinien zostać pokazany:

document.all['banNew'].style.display="block";

Analogicznie w drugiej sekcji tej funkcji (z tym, że musisz zapytać kogoś znającego przeglądarki Netscape, czy zapis document.layers[banNew].display="block" i ..."none" jest w ogóle prawidłowy).

W tej chwili Twój baner "stary" jest ciągle wyświetlany, a "nowy" (do podmiany) wciąż ukrywany, nic więc dziwnego, że na stronie nic się nie zmienia...

3. Zapis window.onload=AppInit; jest charakterystyczny dla języka JScript w Explorerze i wcale nie jestem pewien czy działa w innych przeglądarkach. Bezpieczniej:
<BODY onload="AppInit();">

Banery wstawiasz teraz w żądane miejsce w kodzie strony - np. w wymaganej komórce tabelki. Będą się przesuwały razem z komórką i ustawiały zgodnie z parametrami ustawionymi dla komórki.

Skrypt możesz też uruchomić wcześniej niż po załadowaniu całej strony (onload występuje dopiero po załadowaniu wszystkiego w tym grafik). Jeśli skrypt oznaczysz następująco:
<SCRIPT TYPE="text/javascript" LANGUAGE="JavaScript1.2" DEFER>
a na jego końcu wstawisz:
AppInit();
(zamiast window.onload=AppInit;), to skrypt zastartuje po załadowaniu samego kodu strony, nie czekając na skompletowanie wszystkich jej elementów.

Dodatkowo, ten skrypt można jeszcze skrócić i uprościć, ale nie będę się już rozpisywał, bo Lucas tego nie lubi... :-P

Pozdrawiam
Paweł Rajewski

PostNapisane: 24 sierpnia 2003, o 16:04
przez Totom
działa :) działa:) działa :)
bardzo bardzo bardzo dziękuje :)

PostNapisane: 25 sierpnia 2003, o 22:08
przez Wydra707
To Lucas:
Zacny Lucasie, bardzo bym prosił, abyś nie był tak rygorystyczny i nie usuwał fragmentów postów (kodu), nawet jeśli faktycznie są przydługie i nieco "nudnawe". Bez nich wątek traci sens i teraz sam już nie wiem na co odpowiadałem (!). Oczywiście, taki pociachany wątek nie ma też większego waloru edukacyjnego dla innych czytelników...

Myślę, że znacznie lepszym pomysłem byłoby usuwanie z forum całego wątku np. po pół roku. "Starocia" pewnie i tak nikt nie przeczyta, tylko zapyta od nowa... A do tego czasu temat będzie kompletny.

Staję też w obronie osób początkujących, którym znacznie łatwiej jest skopiować i wkleić kod do tekstu niż umieszczać go gdzieś na serwerze. Również czytanie wątku jest łatwiejsze, nawet gdy posty są bardzo długie.

Niniejszym składam więc oficjalny wniosek do Grupy Pościgowej o nie ściganie i nie rżnięcie na kawałki dłuższych wypowiedzi, ale raczej usuwanie po pewnym czasie tematu w całości.

Pozdrawiam
Paweł Rajewski

POPIERAM W 1000%

PostNapisane: 25 sierpnia 2003, o 22:35
przez Totom
calkowicie sie zgadzam z Pawłem
szanowna "grupo pościgowa" bardzo prosze o przemyslenie w/w sugestii :))

pozdrawiam
totom

PostNapisane: 27 sierpnia 2003, o 07:23
przez lucas
RE to Wydra707, Totom:

- Oki - przemyślimy to jeszcze raz - do tego czasu nie będziemy wycinali, ale proszę też o nie przeginanie w tym czsie z kodami.

co do dotychczasowej decyzji - była ona podyktowana chęciaą doprowadzenia do większej przejrzystości postó'w oraz zmobilizowania autorów pytań do bardziej samodzielnej pracy. Jeśi sytuacja wymusza podanie długiego koduto raczej staramy się nie reagować, ale jeśli ktoś wkleja kod całej strony, a problem dotyczy kilku linijek? ... wrrr...
no dobra pomyślimy....

a co do obecnego posta to:
a) został wycięty dopiero drugi post, gdy kolega nie raczył w żaden sposób zareagowac na proścby:
b) dostępny jest on tutaj

pozatym grupa pościgowa też nie jest nie omylna - za wszystkie ewentualne błędy z góry i z dołu przepraszam.

EOT - do czasu podjęcia dalszy decyzji - poinformujemy