Precedente :: Successivo |
Autore |
Messaggio |
xbandx Eroe
Registrato: 31/05/06 21:12 Messaggi: 41
|
Inviato: 12 Mar 2010 19:04 Oggetto: * cambiare il colore di background " al volo" |
|
|
salve ho incontrato questo sito per caso [link rimosso] e mi piace un sacco la modalita' di cambio del colore di background che ha implementato.(vedi in alto a dx i tre quadratini)
Pero' non ho capito come replicarlo, qualcuno riesce a spiegarmelo?
grazie a tutti |
|
Top |
|
|
freemind Supervisor sezione Programmazione
Registrato: 04/04/07 20:28 Messaggi: 4643 Residenza: Internet
|
Inviato: 12 Mar 2010 20:28 Oggetto: |
|
|
Ciao,
secondo me funziona così:
1) i quadratini sono link che puntano ad uno script che setta in una variabile di sessione il tipo di foglio stile
2) esiste una variabile di sessione che memorizza la pagina aperta in quel momento
3) lo script del punto 1 quando viene eseguito sceglie il foglio stile in base all'id passato (ogni quadretto ha un suo id) e lo scrive nalla var di sessione; poi fa un redirect verso l'ultima pagina visitata dall'utente (la conosce perchè c'è la var in sessione)
4) ogni pagina quando si carica controlla che foglio stile usare in base alla solita var in sessione.
In pratica hai due var in sessione: una per lo stile e l'altra per l'ultima pagina aperta.
Alternativa alla sessione sono i cookies.
Si può fare lo stesso giochino con javascript+cookies; sicuramente la soluzione è più elegante dal punto di vista della programmazione però se uno ha javascript disabilitato la cosa non funziona.
Si potrebbe quindi fare una cosa stupenda ossia si lavora con javascript creando uno script non invasivo e si preparano i link dei quadretti nel modo usuale. Al caricamento lo script js parte e cambia il comportamento dei link in modo da avere le 3 (o un altro numero) chiamate a seconda dello stile.
Se js fosse disabilitato (o non supportato) lo script non farebbe nulla quindi i quadretti funzionerebbero come ti ho illustrato prima.
Ovviamente questa è la soluzione più complicata.
@tutti quanti: per il link contatta me o xbandx in privato, grazie. |
|
Top |
|
|
xbandx Eroe
Registrato: 31/05/06 21:12 Messaggi: 41
|
Inviato: 12 Mar 2010 20:36 Oggetto: |
|
|
be ho visto che ne sai a pacchi....riusciresti a spiegarmi con un piccolo esempio in php?
grazie mille |
|
Top |
|
|
freemind Supervisor sezione Programmazione
Registrato: 04/04/07 20:28 Messaggi: 4643 Residenza: Internet
|
Inviato: 12 Mar 2010 21:12 Oggetto: |
|
|
Giusto due righe al volo.
La cosa va migliorata, sia chiaro però almeno illustra il meccanismo che avevo in mente.
Prima cosa, due fogli stile nella dir "/css"
style_1.css
Codice: |
@CHARSET "UTF-8";
body
{
background-color: #000000;
}
h1
{
color: #FFFFFF;
}
|
style_2.css
Codice: |
@CHARSET "UTF-8";
body
{
background-color: #FFFFFF;
}
h1
{
color: #000000;
}
|
nota i nomi dei files: terminano per "_" seguito da un numero che guarda caso sarà l'id del foglio.
Lo swapper nella dir "/"
swap_style.php
Codice: |
<?php
session_start(); // apre la sessione; se è già aperta prosegue in quella.
$_SESSION['style']=$_REQUEST['id']; // metto in sessione l'id passato in querystring
$page=isset($_SESSION['page']) ? $_SESSION['page'] : '/uno.php'; // memorizzo la pagina di provenienza e se non c'è imposto /uno.php
header('Location: ' . $page); // ridireziono alla pagina
exit;
?>
|
i due files di esempio sempre in "/"
uno.php
Codice: |
<?php
session_start();
$_SESSION['page']=$_SERVER['PHP_SELF'] . '?' .$_SERVER['QUERY_STRING'];
$style=isset($_SESSION['style']) ? $_SESSION['style'] : '1';
?>
<html>
<head>
<link href="<?php print '/css/style_' . $style . '.css';?>" rel="stylesheet" type="text/css" media="screen" />
</head>
<title>
</title>
<body>
<h1>Pagina 1</h1>
<a href="/swap_style.php?id=1">Stile 1</a><br/>
<a href="/swap_style.php?id=2">Stile 2</a>
<br/><br/><a href="/due.php">Vai a pagina 2</a>
</body>
</html>
|
due.php
Codice: |
<?php
session_start();
$_SESSION['page']=$_SERVER['PHP_SELF'] . '?' .$_SERVER['QUERY_STRING'];
$style=isset($_SESSION['style']) ? $_SESSION['style'] : '1';
?>
<html>
<head>
<link href="<?php print '/css/style_' . $style . '.css';?>" rel="stylesheet" type="text/css" media="screen" />
</head>
<title>
</title>
<body>
<h1>Pagina 2</h1>
<a href="/swap_style.php?id=1">Stile 1</a><br/>
<a href="/swap_style.php?id=2">Stile 2</a>
<br/><br/><a href="/uno.php">Vai a pagina 1</a>
</body>
</html>
|
Le due pagine funzionano nello stesso modo:
1) aprono la sessione e se è già aperta si appoggiano a quella.
2) impostano il loro indirizzo nella var di sessione 'page'
3) prelevano dalla sessione l'id dello stile.
L'indirizzo del css viene generato da php in modo dinamico componendo il nome con la parte comune + la variabile di sessione.
Il resto è ovvio: i link per cambiare lo stile puntano allo swapper e gli passano l'id corretto. Lui imposterà la sessione e rimanderà alla pagina chiamante che caricherà lo stile in base alla sessione.
Se usi i link "vai a pagina 1" e "vai a pagina 2" vedrai che lo stile impostato in una viene mantenuto nell'altra.
E' una cosina al volo, giusto per darti una dritta.Si può migliorare e anche di molto.
Scappo... bau |
|
Top |
|
|
xbandx Eroe
Registrato: 31/05/06 21:12 Messaggi: 41
|
Inviato: 13 Mar 2010 13:37 Oggetto: |
|
|
yes yes yes!! grazie mille era quello che cercavo!! ora ci monto su il resto del sito!!
grazie |
|
Top |
|
|
freemind Supervisor sezione Programmazione
Registrato: 04/04/07 20:28 Messaggi: 4643 Residenza: Internet
|
Inviato: 13 Mar 2010 14:37 Oggetto: |
|
|
|
|
Top |
|
|
|