Newsgroup: it.comp.www.html
Titolo: CSS esterni e interni

Sto facendo un sito in cui vorrei far scegliere all'utente la 
risoluzione della sezione principale.
Mi sto cimentando con i CSS e devo dire che (sconforto sulla 
compatibilità a parte, ma di questo ne parlerò più tardi) mi sta 
riuscendo piuttosto bene.
In pratica adesso non faccio altro che, con PHP, passare da un foglio di 
stile ad un altro rendendo dinamico il tag <link>.
Qui entra in gioco la mia pignoleria: visto che i miei fogli di stile 
essenzialmente sono strutturati così
body {
   ...
}
#principale {
   position: relative;
   top: 20;
   left: 0;
   width: 700px;
   height: 467 px;
   border: 3px solid #CD000C;
}
#sfondo {
   position: absolute;
   left: 0;
   top: 0;
   ...
}
in pratica sono tutti uguali tra di loro, cambiano solo width e height 
di #principale.
Allora ho pensato: perché non creare un css "comune" e far caricare 
dinamicamente solo il css con la sezione #principale del css 
selezionato? Così eviterei tutte le volte che cambio qualcosa nei css di 
doverlo fare per x file css.
Non ci sono riuscito. Sia mettendo due <link> (uno al comune.css, 
l'altro al css scelto dinamicamente), sia mettendo <link> per quello 
comune e <style> all'interno dell' <head>, se nel css comune non c'è la 
sezione #principale mi sballa tutto :(
Non so cosa si sia capito... non è facile cmq da spiegare ;)
-- 
Jax
--
Newsgroup robomoderato - gli articoli vengono approvati automaticamente

 Non so cosa si sia capito... non è facile cmq da spiegare ;)
Come non detto. Non so che casino avevo combinato ma adesso è tutto a 
posto...


 [...]
Ho visto che hai gia' risolto, infatti non doveva essere un problema. Ma ho
un suggerimento: perche' non fai un solo foglio CSS creato dinamicamente con
PHP in modo da variare le sole (poche, se ho ben capito) parti che cambiano?


 cambiano?
Non è il massimo della vita. Si trova a dover gestire mime, caching,  
carico del server e balle varie.
Finchè può permettersela, decisamente meglio la sua soluzione.
Tac
-- 
Using Opera's revolutionary e-mail client: 
http://www.opera.com/mail/


 carico del server e balle varie.
Per il mime penso sia un problema da nulla, ma non conosco PHP; per caching
ecc. intendi dire che č meglio affidarsi al caching natuale dei browser per
documenti "fatti e finiti" in JavaScript piuttosto che obbligare a
ricaricare *sempre* i documenti perchč generati dinamicamente (a parte il
discorso dei diversi comportamento dei vari browsers)? In tal caso non posso
darti torto, perň in casi piů complessi si tratterebbe di scrivere doppio
codice... Cmq da questo, immagino, viene il discorso del carico del server,
giusto? E le balle varie?


 giusto? E le balle varie?
Il mime è semplice, basta ricordarsi di metterlo. E' solo una grana in  
piu'.
Il caching: si, ovviamente è possibile riprodurre con php, ma chi te lo fà  
fare? Meglio affidarsi alla generazione degli header http da parte del  
webserver, si fà prima, meglio e si và sul sicuro. (ad esempio se non  
metti il content-length il file non viene cachato)
Il carico del server: finchè è un sito di due pagine e quattro visitatori  
tanto vale usare php e vivere tranquilli. Quando comincia ad avere visite,  
su un server magari trafficato, un css dinamico vuol dire instanziare php  
una volta in piu' per richiesta di pagina ( una per la pagina e l'altra  
per il css ). Il rapporto di velocità tra un file statico e uno (semplice)  
generato con php è di 1/10 solitamente.
Duplicazione del codice: non dovrebbe esistere. I css possono  
tranquillamente venire sovrascritti, in base all'ordine in cui vengono  
richiamati e alla specificità della direttiva.
file 1
div#content
{
	background: gray;
	color: red;
	border:1px solid black;
}
file2
div#content
{
	color:green;
}
Il risultato sarà un riquadro grigio, con bordo nero e scritte verdi.
Non c'è duplicazione del codice, scrivi solamente le differenze. Ergo il  
nostro amico era giusto.
Balle varie: ho scordato di aggiungere "ed eventuali".
Tac
-- 
Using Opera's revolutionary e-mail client: 
http://www.opera.com/mail/


 richiamati e alla specificità della direttiva.
Appunto, hai duplicato codice :)
Dipende quanto si sovrappongono i due styli...
Grazie delle risp.
Ciao


 Newsgroup robomoderato - gli articoli vengono approvati automaticamente
(ma che senso ha?)
-- 
Jax


 Dipende quanto si sovrappongono i due styli...
Precisamente. Si sovrappongono unicamente per le parti che cambiano.
Se nel foglio di stile base non metti il codice che cambi nei vari fogli  
di stili aggiuntivi non hai duplicazione del codice (fatto salvo, per il  
selettore stesso).
Al di là di quello, c'è un limite all'applicazione della teoria, ed è  
quello del buon senso.
Se per evitare di scrivere 4 righe di codice in piu' devi scrivere fogli  
dinamici in php (che ti possono dare altri tipi di problemi) con l'header  
per il mime, gli header per la cache, debug per capire come mai non ti  
prende la $&%£" di variabile $mycolor e via dicendo il gioco non mi pare  
valer piu' la candela.
Tac
-- 
Using Opera's revolutionary e-mail client: 
http://www.opera.com/mail/


 Forse non ho capito il tuo suggerimento ;)
??? Ehi, ma tu non usi il PHP? Se fai un documento dinamico (in questo caso
CSS) ad ogni richiesta dell'utente gli viene fornito un documento CSS
"originale", indipendente da altre eventuali richieste, a fronte di un unico
documento "statico" (in PHP) lato server. Il problema sollevato da TAC One è
proprio questo: le richieste sono molte più del necessario perchè essendo il
documento dinamico viene ricaricato ogni volta e non viene cacheato dal
browser, avrebbe senso solo per più documenti molto differenti nei parametri
specifici ma con la stessa struttura di base.


 valer piu' la candela.
D'accordissimo, dipende tutto da quante varianti dello stesso documento
bisogna fare e da quanto variabili sono.. Nel caso specifico per pochi
parametri differenti e per due sole varianti hai ragione a dire che non vale
la pena incasinarsi con un CSS dinamico.


> Forse non ho capito il tuo suggerimento ;)
Infatti, non avevo capito cosa intendevi, ci sono arrivato solo adesso: 
tu intendevi creare dinamicamente la sezione <style> di ogni pagina con 
PHP... ok, è un metodo che potrebbe andar bene ma... non mi piace, 
troppo spreco ;)
-- 
Jax
