CSS Reutilizable con PHP (Parte I)

Es normal encontrar preguntas acerca de la reutilizaci贸n de CSS con PHP (CSS Din谩mico). Algo que siempre me interes贸.


Actualizado: Hemos publicado la Segunda Parte (Como utilizar PHP StyleSwitcher v.2).


El CSS tiene como concepci贸n el dise帽o, la presentaci贸n o la disposici贸n de una p谩gina web. Mostramos p谩ginas HTML diferenciando la apariencia del contenido. Por lo que se hizo indispensable el manejo de XHTML.


PHP por su parte, es c贸digo abierto (gratuito), f谩cil de aprender y actualmente uno de los est谩ndares mundiales de programaci贸n.


Vamos a unir estos dos lenguajes de programaci贸n para crear una estructura a nuestro sitio web usando CSS. La estructura b谩sica y m谩s usada: el header, el men煤 lateral y el contenido. A estos le asignamos los colores usando PHP, mostrando como cambiarlos f谩cilmente.


Como ya hemos visto en un articulo anterior, podemos imprimir o mostrar nuestro c贸digo PHP en el navegador usando las funciones de salida por ejemplo print() o echo().


Para empezar debemos indicar al navegador que el c贸digo que va a imprimir es CSS para esto mediante PHP le colocamos una funci贸n (tipo MIME):


header('Content-type: text/css');


Luego definimos los esquemas de colores que usaremos. Esto se hace almacenando la informaci贸n que identifica los colores en variables (recuerda que todas las variables son prefijadas por el signo del d贸lar). Nuestro c贸digo quedar铆a como este:


$persistent = array(
'bgmast' => 'bbd9ee', /* encabezado */
'fgmast' => '4d4d4d',
'bgmenu' => 'e7e4d3', /* men煤 */
'fgmenu' => '444444',
'bgcont' => 'ffffff', /* contenido */
'fgcont' => '444444' );


Como puedes ver estamos usando valores hexadecimales para los colores que no incluyen su prefijo 鈥#鈥. Esto se debe a un conflicto entre el An谩lisis de PHP y de CSS. Pues para referirnos a un color que hemos instanciado en un array, lo debemos hacer de la siguiente manera:


print $persistent['bgmast']; /* encabezado - bgmast: bbd9ee */


Siguiendo estos pasos definimos dos esquemas de colores alternativos al original.


header('Content-type: text/css');


/* persistent (default) */


$persistent = array(
'bgmast' => 'bbd9ee', /* encabezado */
'fgmast' => '4d4d4d',
'bgmenu' => 'e7e4d3',   /* menu */
'fgmenu' => '444',
'bgcont' => 'fff'', /* contenido */
'fgcont' => '444'
);


/* alternate color scheme 1 */


$alternate1 = array(
'bgmast' => 'ddb',
'fgmast' => '000',
'bgmenu' => 'aa7',
'fgmenu' => 'fff',
'bgcont' => 'fff',
'fgcont' => '333'
); 


/* alternate color scheme 2 */   
$alternate2 = array(
'bgmast' => '399',
'fgmast' => 'fff',
'bgmenu' => 'eb5',
'fgmenu' => '000',
'bgcont' => 'eee',
'fgcont' => '000'
);


switch ($_GET['scheme'])    {
case 'alt2':
$comment = 'alternar Color Esquema #2' (BaluArt.net);
$scheme = $alternate2;
break;
case 'alt1':
$comment = 'alternar Color Esquema #1 (W3C CSS)';
$scheme = $alternate1;
break;
default:
$comment = 'persistent Color Esquema Original (Digital Web Magazine)';
$scheme = $persistent;


print <<<_CSS /* css-demo.php */


#mockup {
  width: 400px;
  height: 200px;
  margin: 1em 0;
  padding: 0;
  border: 1px solid #000;


/* masthead */


#mock-mast {
  width: 100%;
  height: 40px;
  line-height: 40px;
  margin: 0;
  padding: 0;
  border-bottom: 1px solid #000;
}


#mock-mast h1 {
  font-size: 20px;
  margin: 0 0 0 14px;
  padding: 0;

/* menu */


#mock-menu {
  float: left;
  width: 99px;
  height: 159px;
  font-size: small;
  padding: 0;
  border-right: 1px solid #000;
}


#mock-menu h2 {
  margin-top: 10px;
  margin-left: 30px;
  font-size: medium;


#mock-menu ol {
  margin-left: 30px;
  list-style-type: none;

#mock-menu ol li {
  font-size: small;
  text-decoration: underline;
}


/* content */


#mock-cont {
  font-size: small;
  margin: 0 0 0 100px;
  padding: 0 0 0 10px;
  border: 0;

#mock-cont h2 {
  margin: 10px 0 0 0;
  padding: 0;
  font-size: medium;
}


#mock-cont p {
  width: 280px;
  margin: 10px 0 0 0;
  padding: 0;
  font-size: small;


/* end static CSS */ 


_CSS; }


/* end switch() */ 


print <<<_CSS 


#mockup { background-color: #${scheme['bgcont']}; }
#mock-mast { background-color: #${scheme['bgmast']}; }
#mock-mast h1 { color: #${scheme['fgmast']}; }
#mock-menu { background-color: #${scheme['bgmenu']}; }
#mock-menu h2 { color: #${scheme['fgmenu']}; }
#mock-menu ol { color: #${scheme['fgmenu']}; }
#mock-cont h2 { color: #${scheme['fgcont']}; }
#mock-cont p { color: #${scheme['fgcont']}; }


/* end dynamic CSS *


/ _CSS;


/* css-demo.php fin del script */


?> 

Para la pr

Para la pr

Enviado por sesperanto (no verificado) el Lun, 12/03/2007 - 11:05.
驴Sabes si de esta forma se

驴Sabes si de esta forma se cachea el CSS?

Enviado por Daniel G. Bl谩zquez (no verificado) el Mi茅, 08/13/2008 - 13:08.
hola amigo, sabes estoy

hola amigo, sabes estoy buscando algo parecido.

lo que pasa es que tengo un editor WYSIWYG llamado "FreeRTE" y este me genera un codigo html mezclado con css.

el problema esta que al hacer un echo a la variable que contiene el codigo, solo me muestra el texto con formato html y me omite el css.

que puedo acer, espero me puedas responder gracias ;)

Enviado por bastian (no verificado) el Mar, 12/30/2008 - 22:05.

Deja tu comentario

El contenido de este campo se mantiene privado y no se mostrar谩 p煤blicamente.
  • Las direcciones de las p谩ginas web y las de correo se convierten en enlaces autom谩ticamente.
  • Etiquetas HTML permitidas: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Saltos autom谩ticos de l铆neas y de p谩rrafos.

M谩s informaci贸n sobre opciones de formato