ďťż

[JS, Ajax, PHP] Strona w stylu Centrumxp.pl

       

Podstrony


telcocafe

Witam.
Chciałbym osiągnąć efekt taki jak na www.centrumxp.pl.
Chodzi mi dokładnie o menu: po najechaniu na link, obok wyświetlane jest pod menu (zawartość),
oraz chciałbym zrobić coś takiego, jak najechanie na newsy na w/w stronie.

Czy osiągnięcie tego efektu jest możliwe w JS, czy w AJAXIE i php?

Prosiłbym o konktretną pomoc, linki z przykładami albo plikami źródłowymi.

Jestem w stanie za pomoc odwdzięczyć się.

POZDRAWIAM



trzeba to zrobić w javascripcie
wykorzystujesz zdarzenia onmouseover i onmouseout oraz atrybut visibility diva(ów) pod menu

Ta strona jest w ASP, weź poszukaj na google kursu ASP.

Dokładniej strona jest w asp.net. Zasiadaj przed delphi 2006 (2005 lub 8) i tam takie cos wyczarujesz ale znajomosc asp bardzo siem przyda :) pasuje jeszcze znac delphi .net a w tamtym co wspomniałes to to jest mozliwe :)
Użytkownik strefacst edytował ten post 10 sierpień 2006, 09:22


Co nie zmienia faktu że w js + php da sie osiągnąć ten sam efekt.


Ta strona jest w ASP, weź poszukaj na google kursu ASP.
Owszem strona jest napisana w asp, ale ten element nie ma nic z tym wspólnego ;) asp działa po stronie serwera. A ten efekt to jak już inni zauważyli sam js.
http://www.centrumxp.pl/Menu.js <- może sam poszukać ;)


Owszem strona jest napisana w asp, ale ten element nie ma nic z tym wspólnego ;) asp działa po stronie serwera. A ten efekt to jak już inni zauważyli sam js.
http://www.centrumxp.pl/Menu.js <- może sam poszukać ;)

Mam pytanko jak w firefox'ie 1.5.0.6 uruchamiam wyskakują błędy:
Błąd: Oczekiwano koloru, ale odnaleziono "undefined". Błąd podczas parsowania wartości dla własności "background-color". Deklaracja opuszczona. Plik źródłowy: http://www.centrumxp.pl/default.aspx Wiersz: 0
Czy da się to zrobić aby nie wywalało błędu(ów)?


trzeba to zrobić w javascripcie
wykorzystujesz zdarzenia onmouseover i onmouseout oraz atrybut visibility diva(ów) pod menu

Jak wykorzystać powyższe zdarzenia do osiągnięcie tego efektu?

coś podobnego jest na http://www.dhtmlgoodies.com/

http://www.dhtmlgood...ge=smallscripts "Content Organizer"


Jak wykorzystać powyższe zdarzenia do osiągnięcie tego efektu?
Ehh... prosty przykład:
<html> <head> <script> function wyswietl(nazwaDiva) { document.getElementById('divWynik').innerHTML = document.getElementById(nazwaDiva).innerHTML; document.getElementById('divWynik').style.display='block'; } function wyczysc() { document.getElementById('divWynik').innerHTML = ""; } </script> <style> .all { width: 210px; border: solid 1px #000; padding: 10px; } .hid { display: none; } .result { width: 205px; height: 100px; border: solid 1px #000; } .menulink { color: #0000ff; text-decoration: none; } .menulink:hover { color: #ff0000; } </style> </head> <body> <div class="all"> <div id="div1" class="hid"> info 1 </div> <div id="div2" class="hid"> info 2 </div> <div id="div3" class="hid"> info 3 </div> <div id="div4" class="hid"> info 4 </div> <div id="divWynik" class="result"></div> <a href="#" class="menulink" onmouseover="wyswietl('div1');" onmouseout="wyczysc()">show 1</a> <a href="#" class="menulink" onmouseover="wyswietl('div2');" onmouseout="wyczysc()">show 2</a> <a href="#" class="menulink" onmouseover="wyswietl('div3');" onmouseout="wyczysc()">show 3</a> <a href="#" class="menulink" onmouseover="wyswietl('div4');" onmouseout="wyczysc()">show 4</a> </div> </body> </html>

Przykład dobry.
Jednakże nie działa wyświetlanie obrazków zamiast tekstu.
I po zjechaniu z napisu SHOW znika zawartość, a ma ona zostać aby można było np kliknąć na dodatkowe linki w zawartości.

Po kolei:
1. ustawiasz menu górne z linkami, a drugie (dolne) menu to kilka divów w jednej pozycji, które są ukryte. Po najechaniu na link pokazuje się jeden, a po zjechaniu i on się chowa. Pół godziny w JS.

Jemu zapewne chodzi o to, aby po zjechaniu z odnośnika treść nadal się wyświetlała. W takim wypadku musisz tworzyć linki tego typu:
<a href="#" class="menulink" onmouseover="wyswietl('div1');">show 1</a>
dla wolno kumających: ze znacznika a usuwamy onmouseout="wyczysc()"


I po zjechaniu z napisu SHOW znika zawartość, a ma ona zostać aby można było np kliknąć na dodatkowe linki w zawartości. Racja bez sensu jak się pojawi i odrazu zniknie, późno było jak pisałem ;) Tak jak mówi Bartas usuniemy wyczysc z onmouseout i będzie działać.
Jednakże nie działa wyświetlanie obrazków zamiast tekstu. Bzdury ;)
Poprawiony przykład:
<html> <head> <script> function wyswietl(nazwaDiva) { document.getElementById('divWynik').innerHTML = document.getElementById(nazwaDiva).innerHTML; } </script> <style> .all { width: 500px; height: 500px; border: solid 1px #000; padding: 10px; } .hid { display: none; } .result { width: 500px; height: 450px; border: solid 1px #000; } .menulink { color: #0000ff; text-decoration: none; } .menulink:hover { color: #ff0000; } </style> </head> <body> <div class="all" > <div id="div1" class="hid"> info 1<img src="http://www.google.pl/images/logo_sm.gif"> </div> <div id="div2" class="hid"> info 2<a href="http://forum.ks-ekspert.pl">link</a> </div> <div id="div3" class="hid"> info 3 <table border="1"><tr><td>tabla</td><td>działa</td></tr>< /table> </div> <div id="div4" class="hid"> Wszystko działa </div> <div id="divWynik" class="result"></div> <a href="#" class="menulink" onmouseover="wyswietl('div1');">show 1</a> <a href="#" class="menulink" onmouseover="wyswietl('div2');">show 2</a> <a href="#" class="menulink" onmouseover="wyswietl('div3');">show 3</a> <a href="#" class="menulink" onmouseover="wyswietl('div4');">show 4</a> <a href="http://forum.ks-ekspert.pl">link</a> </div> </body> </html>ps. możnaby było jeszcze dołożyć czyszczenie po wyjściu z diva all, ale to trochę komplikuje sprawę bo po najechanie na link już występuje zdarzenie onmouseout dla all i czyści wszystko. Przydałby się może jeszcze jakiś warunek na dodatkowych zmiennych żeby ten efekt zniwelować, ale w tej chwili nie mam pomysłu ;) narazie działa dobrze
Użytkownik reVis edytował ten post 11 sierpień 2006, 10:18
OK. menu działa. Dziękuję wszystkim.
A jak osiągnąć efekt podświetlania całeś tabelki z tekstem (i ewentualnie grafiką) po najechaniu myszką, po zjechaniu aby łagodnie powróciły poprzednie kolory? Tak jak na www.centrumxp.pl po najechaniu na newsa.
Czy da się to osiągnąć w CSS i JS? Prosiłbym również o jakieś konkretne przykłady.

POZDRAWIAM

bosz :| masz caluśki kod i jeszcze masz problemy? weź daj moze briefa to zrobimy za Ciebie tą stronę :|

Bełdzio jak byś zauważył, pytam teraz o coś innego. Nie będę ci tłumaczył.

Bełdzio dobrze mówi. Luknij sobie kod menu.js i tam są odpowiednie funkcje. Szukanie nie boli.


Bełdzio jak byś zauważył, pytam teraz o coś innego. Nie będę ci tłumaczył.
jak co innego? masz na stronie "cos", które chcesz miec tez u siebie, chodzi o kod JS, który jest interpretowany po stronie klienta, czyli masz do niego pełen dostep czyli sens problemu jest taki sam jak poprzednio.

Moze jednak mi wytlumaczysz co jest innego :|

Wszystko jest przecież w :huh:
http://www.centrumxp.pl/Menu.js
Konkretne funkcje to: tn_zmien, tn_na, tn_z i to co jest nad nimi czyli 3 tablice i 1 zmienna. Używanie <div id="TN0" onmouseout="tn_z('0');" onmouseover="tn_na('0');">Treść ...</div> <div id="TN1" onmouseout="tn_z('1');" onmouseover="tn_na('1');">Treść ...</div>

A jak to wyciągnąć i co dokładnie, z menu.js ?

Przecież napisałem :blink: :mad:

Konkretne funkcje to: tn_zmien, tn_na, tn_z i to co jest nad nimi czyli 3 tablice i 1 zmienna.

Dzięki wszystkim, poradziłem sobie.
Tylko nie wiem po co te nerwy wasze, po prostu ja nie wiem tyle co Wy i dlatego prosiłem o dokładną pomoc.
POZDRAWIAM


Tylko nie wiem po co te nerwy wasze, po prostu ja nie wiem tyle co Wy i dlatego prosiłem o dokładną pomoc. My poprostu staramy się wymusić w Tobie trochę samodzielnego myślenia ;) wtedy też Twoja satysfakcja będzie większa. Żeby znaleźć ten skrypt wystarczyło otworzyć źródło strony, odszukać fragment z 1 newsem. Z wcześniejszego skryptu wiesz jak działa onmouseover i onmouseout więc szukasz tych elementów w tagach okalających od góry newsa. Znajdujesz linijkę:<div style="border-color: rgb(214, 227, 239); background-color: rgb(214, 227, 239);" class="Tresc_news" onmouseout="tn_z('0');" onmouseover="tn_na('0');" id="TN0">i masz już nazwy funkcji. Wskakujesz do pliku ze skryptami (w <head> znajdujesz albo skrypty albo powiązanie do zewnętrznego pliku). Otwierasz go, przeglądasz pod kątem wyszukanych już funkcji i masz wszystko gotowe ;)
Powodzenia w przyszłości :)

W sumie jest to bardzo proste.
Poniższy kod działa na Operze, Mozilli FireFox i Internet Explorerze na innych nie testowałem.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Untitled Document</title> <script language="javascript" type="text/javascript"> function pokaz(id) { document.getElementById("t1").style.display="none"; document.getElementById("t2").style.display="none"; document.getElementById(id).style.display="block"; } </script> </head> <body bgcolor="#999999"> <a href="#" onmouseover="pokaz('t1')" style="color:#FFFFFF;">Pierwszy tekst.</a><br /> <a href="#" onmouseover="pokaz('t2')" style="color:#FFFFFF;">Drugi tekst.</a> <div class="opcje1" id="t1" style="display:none; border:1px black solid; width:120px; color:#990000; text-align:center;"> Pierwszy tekst. </div> <div class="opcje1" id="t2" style="display:none; border:1px black solid; width:120px; color:#990000; text-align:center;"> Drugi tekst. </div> </body> </html>
Jeśli zajdzie potrzeba mogę wam wytłumaczyć jak to działa.
Edit >
Albo od razu napisze ci co i jak.
Najważniejsza rzecz w tym wypadku to CSS - Cascade Style Sheet ( Kaskadowy arkusz stylu ) i Javascript.
Tutaj główną rolę odgrywa atrybut display który jest ustawiany na none,
kiedy strona strona zostanie załadowana.
Dzięki niemu element oznaczy atrybutem o tej wartości jest niewidoczny.
Następnie po najechaniu na odnośnik jest wywoływana funkcja Javascript o nazwie pokaz().
Otrzymuje ona jako parametr identyfikator obiektu id. Ustawia ona atrybut display objektów t1 i t2 na none,
po czym zmienia ten sam atrybut na block obiektu o identyfikatorze przekazanym jej.
Oto cała filozofia.
Edit >>
No taaaak.
Po diabła ja to pisałem skoro już mu wytłumaczyliście ;(
Użytkownik orglee edytował ten post 12 sierpień 2006, 01:38
Żeby nie pisać kolejnego posta o centrumxp jak zrobić cośtakiego
Wiem że wystarczy:
<script src="/Menu.js" type="text/javascript"></script> <div class="Tresc_news" onmouseout="tn_z('0');" onmouseover="tn_na('0');" id="TN0">
Ale w FF>Konsola Java wyświetla się błąd:

Błąd: Oczekiwano koloru, ale odnaleziono "undefined". Błąd podczas parsowania wartości dla własności "background-color". Deklaracja opuszczona.
Plik źródłowy: http://www.centrumxp.pl/default.aspx
Wiersz: 0

Czy idzie coś z tym zrobić aby nie wywalało błędu?
Nie znam się na JS?

Pojawił Ci się błąd z undefined kolor bo nie skopiowałeś wszystkich potrzebnych elementów skryptu (głównie chdzi o globalną tablicy z kolorów). Cały skrypt dodam i już nie powinno być więcej problemówkolory = new Array(); kolory[0] = '#D6E3EF'; kolory[1] = '#DBE7F0'; kolory[2] = '#E1EAF3'; kolory[3] = '#E7EEF5'; kolory[4] = '#EDF2F8'; kolory[5] = '#F3F7FA'; kolory[6] = '#F9FBFD'; kolory[7] = '#FFFFFF'; start = new Array(); czas = new Array(); inte = 50; function tn_zmien(kierunek, id, czasL) { if(start[id] == undefined) { start[id] = 0; } if(czasL == czas[id]) { start[id] += kierunek; document.all['TN'+id].style.backgroundColor = kolory[start[id]]; if(start[id] >= 0 && start[id] <= 7) { setTimeout('tn_zmien(' + kierunek + ', ' + id + ', ' + czasL + ')', inte); } } } function tn_na(id) { if(czas[id] == undefined) { czas[id] = 0; } czas[id]++; tn_zmien(1, id, czas[id]); document.all['TN'+id].style.borderColor = '#B1BBC5'; } function tn_z(id) { if(czas[id] == undefined) { czas[id] = 0; } czas[id]++; tn_zmien(-1, id, czas[id]); document.all['TN'+id].style.borderColor = '#D6E3EF';


Błąd: tn_z is not defined
Plik źródłowy: file:///C:/Documents%20and%20Settings/delx/Moje%20dokumenty/TMP/cxp.htm
Wiersz: 1

Może byś jakoś to wszystko w całość pozbierał?
Jeżeli wiesz jak to naprawić to pokaż całe źrudło? ;)

Powiedzmy, że udało mi się to ogranąć, na js specjalnie się nie znam ;)
index.html<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl"> <head> <script src="./skryptnews.js" type="text/javascript"></script> <style> div { width: 200px; height: 100px; background-color: #D6E3EF; border: solid 1px #F3F7FA; } </style> </head> <body> <div id="TN0" onmouseout="tn_z('0');" onmouseover="tn_na('0');">Tre��...</div> <div id="TN1" onmouseout="tn_z('1');" onmouseover="tn_na('1');">Tre��...</div> <div id="TN2" onmouseout="tn_z('2');" onmouseover="tn_na('2');">Tre��...</div> </body> </html>
skryptnews.jsie = true; if(window.navigator.appName.toLowerCase().indexOf('explorer') == -1) { ie = false; document.all = document.getElementsByTagName('*'); } kolory = new Array(); kolory[0] = '#D6E3EF'; kolory[1] = '#DBE7F0'; kolory[2] = '#E1EAF3'; kolory[3] = '#E7EEF5'; kolory[4] = '#EDF2F8'; kolory[5] = '#F3F7FA'; kolory[6] = '#F9FBFD'; kolory[7] = '#FFFFFF'; start = new Array(); czas = new Array(); inte = 50; function tn_zmien(kierunek, id, czasL) { if(start[id] == undefined) { start[id] = 0; } if(czasL == czas[id]) { start[id] += kierunek; document.all['TN'+id].style.backgroundColor = kolory[start[id]]; if(start[id] >= 0 && start[id] <= 7) { setTimeout('tn_zmien(' + kierunek + ', ' + id + ', ' + czasL + ')', inte); } } } function tn_na(id) { if(czas[id] == undefined) { czas[id] = 0; } czas[id]++; tn_zmien(1, id, czas[id]); document.all['TN'+id].style.borderColor = '#B1BBC5'; } function tn_z(id) { if(czas[id] == undefined) { czas[id] = 0; } czas[id]++; tn_zmien(-1, id, czas[id]); document.all['TN'+id].style.borderColor = '#D6E3EF'; }
Użytkownik reVis edytował ten post 13 sierpień 2006, 10:10
Dalej występują błędy
#1

Błąd: tn_na is not defined
Plik źródłowy: file:///C:/TMP/c_xp.htm
Wiersz: 1

#2

Błąd: tn_z is not defined
Plik źródłowy: file:///C:/TMP/c_xp.htm
Wiersz: 1

Masz rozwiązanie na to? ;)

W zaistniałej sytuacji trudno mi coś powiedzieć, bo kod który podałe wyżej działa u mnie pod FF1.5.0.6, O9.01 i IE6. Pokaż swój kod bo coś może u Ciebie szwankuje :)


W zaistniałej sytuacji trudno mi coś powiedzieć, bo kod który podałe wyżej działa u mnie pod FF1.5.0.6, O9.01 i IE6. Pokaż swój kod bo coś może u Ciebie szwankuje :)
index.htm
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl"> <head> <script src="scrypt.js" type="text/javascript"></script> <style> div { width: 200px; height: 100px; background-color: #D6E3EF; border: solid 1px #F3F7FA; } </style> </head> <body> <div id="TN0" onmouseout="tn_z('0');" onmouseover="tn_na('0');">Tre??...</div> <div id="TN1" onmouseout="tn_z('1');" onmouseover="tn_na('1');">Tre??...</div> <div id="TN2" onmouseout="tn_z('2');" onmouseover="tn_na('2');">Tre??...</div> </body> </html>
scrypt.js
ie = true; if(window.navigator.appName.toLowerCase().indexOf('explorer') == -1) { ie = false; document.all = document.getElementsByTagName('*'); } kolory = new Array(); kolory[0] = '#D6E3EF'; kolory[1] = '#DBE7F0'; kolory[2] = '#E1EAF3'; kolory[3] = '#E7EEF5'; kolory[4] = '#EDF2F8'; kolory[5] = '#F3F7FA'; kolory[6] = '#F9FBFD'; kolory[7] = '#FFFFFF'; start = new Array(); czas = new Array(); inte = 50; function tn_zmien(kierunek, id, czasL) { if(start[id] == undefined) { start[id] = 0; } if(czasL == czas[id]) { start[id] += kierunek; document.all['TN'+id].style.backgroundColor = kolory[start[id]]; if(start[id] >= 0 && start[id] <= 7) { setTimeout('tn_zmien(' + kierunek + ', ' + id + ', ' + czasL + ')', inte); } } } function tn_na(id) { if(czas[id] == undefined) { czas[id] = 0; } czas[id]++; tn_zmien(1, id, czas[id]); document.all['TN'+id].style.borderColor = '#B1BBC5'; } function tn_z(id) { if(czas[id] == undefined) { czas[id] = 0; } czas[id]++; tn_zmien(-1, id, czas[id]); document.all['TN'+id].style.borderColor = '#D6E3EF'; }
Wywala błąd:

Błąd: Oczekiwano koloru, ale odnaleziono "undefined". Błąd podczas parsowania wartości dla własności "background-color". Deklaracja opuszczona.
Plik źródłowy: file:///C:/aq.htm
Wiersz: 0


A już wiem... faktycznie w skrypcie jest bład i w funkcji tn_zmien 3 warunek if powinien wyglądać tak:if(start[id] > 0 && start[id] < 7) Bo inaczej przekraczana jest tablica, ale działał tak czy inaczej, tylko że setTimeout z undefined się nie uruchamiał, ale za to rzucało błędami.

Dalej to samo :(

Błąd: Oczekiwano koloru, ale odnaleziono "undefined". Błąd podczas parsowania wartości dla własności "background-color". Deklaracja opuszczona.
Plik źródłowy: file:///C:/cxp.htm
Wiersz: 0


Błąd: Oczekiwano koloru, ale odnaleziono "undefined". Błąd podczas parsowania wartości dla własności "background-color". Deklaracja opuszczona.
Plik źródłowy: file:///C:/cxp.htm
Wiersz: 0


W takim razie już nie wiem, u mnie wszystko działa i błędów nie ma.

A więc mamy ten kod:
<html>
<head>
<script>function wyswietl(div1){ document.getElementById('divWynik').innerHTML = document.getElementById(div1).innerHTML;}
</script>
<style>
.all { width: 500px; height: 500px; border: solid 1px #000; padding: 10px; }
.hid { display: none; }
.result { width: 500px; height: 450px; border: solid 1px #000; }
.menulink { color: #0000ff; text-decoration: none; }
.menulink:hover { color: #ff0000; }
.menulink2 { color: #ffffff; text-decoration: none; }
.menulink2:hover { color: #000fff; }
</style>
</head>

<body>
<div class="all" >
<div id="div1" class="hid">info 1<img src="http://www.google.pl/images/logo_sm.gif"></div>
<div id="div2" class="hid">info 2<a href="http://forum.ks-ekspert.pl">link</a></div>
<div id="div3" class="hid">info 3<table border="1"><tr><td>tabla</td><td>działa</td></tr>< /table></div>
<div id="div4" class="hid">Wszystko działa</div>
<div id="divWynik" class="result"></div>
<a href="#" class="menulink" onmouseover="wyswietl('div1');">show 1</a>
<a href="#" class="menulink" onmouseover="wyswietl('div2');">show 2</a>
<a href="#" class="menulink" onmouseover="wyswietl('div3');">show 3</a>
<a href="#" class="menulink" onmouseover="wyswietl('div4');">show 4</a>
<a href="http://forum.ks-ekspert.pl">link</a></div></body></html>

I mam kilka pytań
- jak zrobić by od razu ładował się jakiś tekst w okienku ? np obrazek googla ? jeszcze przed najechaniem na jakikolwiek link.
- jak zrobić by pod linkiem "show 1" ,"show 2" itd ładował się obrazek po najechaniu włąsnie na ten link i nie znikał on aż nie najedzie się na inny (cos takiego jak na stronie microsoft.pl)

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • nvm.keep.pl

  • Sitedesign by AltusUmbrae.