coge la información y corre

Trucos para hacer diseños en CSS más rápido y mejor

17 de febrero del 2008 Escrito por Alex Barros

Enfrentarse a crear una plantilla de diseño desde cero puede ser muy duro y desmoralizante. Por eso he reunido una serie de trucos que conviene tener a mano, para agilizar el proceso, y hacerlo algo más agradable.

Las tres reglas de oro

Lo primero y principal antes de empezar a escribir la plantilla, es definir estas tres reglas de oro del CSS. Se colocan al principio del archivo CSS, y sirven para evitar las discrepancias principales entre navegadores. Así nos evitamos más de un susto al comprobar si se ve igual en todos los navegadores.

  1. * {
  2.         padding:0;
  3.         margin:0;
  4. }
  5. body {
  6.         font-size: 76%;
  7. }
  8. img {
  9.         border-width: 0;
  10. }

Lo que hacen es inicializar todos los márgenes internos y externos a cero (de TODOS los elementos), prefijar un tamaño de letra uniforme para todos los navegadores, y eliminar el borde de las imágenes.

Conocer más sobre las tres reglas de oro del CSS.

Suelo añadir esta cuarta regla, que evita que salga un recuadro alrrededor de los enlaces al pulsarlos.

  1. a {
  2.         outline-style: none;
  3. }

(más info)

Centrar contenedores (elementos div) en CSS

Para centrar un contenedor en CSS, además de definir un ancho determinado, debemos asignar el valor auto al margen izquierdo y derecho del contenedor. Esto no da resultado en Internet Explorer, que requiere de la propiedad text-align: center. Si usamos las dos, nos aseguramos la victoria.
HTML:

  1. [...]<body>
  2.  
  3. <div id="contenedor">
  4.       <h1>Titulo</h1>
  5.       <p>Texto…</p>
  6. </div>
  7.  
  8. </body>

CSS:

  1. body {
  2.         text-align: center;
  3. }
  4. #contenedor{
  5.         text-align: left;
  6.         margin: 10px auto;
  7.         width: 80%;
  8. }

(más info)

Hacer columnas con CSS

Para crear varias columnas en un skin, debemos colocar elementos de bloque (div, ul, form…) que las representen, de forma contigua (uno al lado de otro) en nuestro HTML. A continuación, en el CSS usaremos la propiedad float, que “flota” un elemento a la izquierda o a la derecha, sacándolo del flujo de contenido.

Hay varias formas de aprovechar la propiedad float para crear columnas, algunos ejemplos:

Usando propiedad Float de CSS Usando propiedad Float de CSS
Usando propiedad Float de CSS Usando propiedad Float de CSS

Las flechas indican si se ha flotado a izquierda o a derecha, aúnque resulta bastante obvio.

Ejemplo, el código CSS para hacer que todos los elementos li de una lista, esté flotados a la izquierda, con un tamaño de 100×100 px:

  1. li {
  2.         width: 100px;
  3.         height: 100px;
  4.         float: left;
  5. }

Evitar solapamiento en la propiedad Float

Da definicion en el estándar de CSS, hace que la propiedad float saque al elemento del flujo, y provoca que el resto de elementos “lo ignoren” en muchos aspectos, como que el elemento que lo contiene no adapta su ancho para incluirlo.

Lo que quiero:
Lo que quiero
Lo que ocurre:
Lo que ocurre

Esto lo podemos solventar muy fácilmente.

Si queremos que un elemento que va a continuación de un float, no se vea afectado, le podemos dar la propiedad clear: both

Pero si el problema es que tenemos elementos “flotados”, y queremos que el contenedor los envuelva, nada más fácil que aplicar al contenedor la propiedad overflow: hidden. La explicación la encontraréis aquí

Todas las propiedades a mano

Es muy importante tener siempre las propiedades a mano, y sobretodo conocer las 95 propiedades del CSS 2.1 para conocer las herramientas de que disponemos. Podéis encontrar un agradable listado, muy bien explicado (en inglés) en CulturedCode CSS 2.1 Reference (es un recurso alucinante, muy muy útil)

Usar estructuras prefabricadas

Podremos ahorrarnos tiempo, si partimos de estructuras prefabricadas en CSS y HTML.

  • Layout Gala contiene muchas estructuras combinando tres elementos principales, cabecera y pié de página.
  • Css Easy te ofrece las principales configuraciones para skins, listas para descargar y manipular.
  • En Listmatic encontraréis muchos tipos de lista, para aplicar a menús, o a lo que queráis.
  • En CSS Showcase podréis encontrar muchos ejemplos de barras de navegación.

Plantillas ya elaboradas

Otro recurso es acudir a skins completamente elaborados, y extraer lo que nos interese de ellos. Algunos enlaces:
OpenSourceWebDesigns, FreeCssTemplates, Free-css-templates, TheStyleArchive, TemplateWorld

O recurrir a sitios donde muestran plantillas únicamente para inspirarte:
Inspirational CSS, CSSBeauty, Elegant Desighns

Por último, en del.icio.us (tag: css) podéis encontrar muchos recursos interesantes de CSS, y en Webéame (categoria diseño) otros tantos.

Categorias: Código, CSS, Diseño, Estándar, HOWTO/CóMO, HTML, Web | 14 comentarios »

Manual completo y sencillo de Expresiones Regulares en PHP

4 de diciembre del 2007 Escrito por Alex Barros

Las expresiones regulares son una potente herramienta que nos permite contrastar un texto con un patrón de búsqueda. Esta tarea resulta fundamental en algunos programas, y en otros puede facilitarnos increíblemente el trabajo.

Regex

PHP permite dos tipos principales de funciones para expresiones regulares: las de tipo ereg (Expresiones regulares POSIX) y las de tipo preg (Compatibles con Perl). Son muy similares, aúnque las segundas llegan a ser algo más potentes.

Una expresión regular, consiste en comparar un patrón frente a un texto, para comprobar si el texto contiene lo especificado en el patrón.

Por poner un par de ejemplos:

Patrón: in
Coindicen:

  • intensidad
  • cinta
  • interior

Patrón: [mp]adre
Coindicen:

  • Mi madre se llama Luisa
  • Tu padre es jardinero

A continuación voy a repasar la sintaxis básica de una expresión regular
Sigue leyendo esta entrada »

Categorias: Código, HOWTO/CóMO, PHP | 39 comentarios »

Formas de ejecutar funciones en PHP

11 de noviembre del 2007 Escrito por Alex Barros

Aúnque a algunos les parezca extraño, existen tres formas distintas de ejecutar una función en PHP (por lo menos que yo conozca). Cada una puede venir bien en situaciones distintas.

Lo primero de todo, crearemos un par de funciones.

  1. function menor($a,$b){ return $a<$b ? $a : $b; }
  2. function mayor($a,$b){ return $a>$b ? $a : $b; }

La función menor() devuelve el menor de los dos números pasados como parámetros. La función mayor() hará lo contrario.

La forma clásica

La forma más típica de ejecutar una función, es símplemente escribiendo su nombre, seguido de unos paréntesis, con los parámetros separados por comas. De esta forma, al escribir:

  1. $a = 12;
  2. $b = 5;
  3.  
  4. echo "Entre $a y $b, el menor es ",menor($a,$b);

Nos devolvería el siguiente texto:

Entre 12 y 5, el menor es 5

Con la función call_user_func(_array)

Las función call_user_func nos permite ejecutar una función, dado el nombre en cadena alfanumérica.

La diferencia con call_user_fucn_array, es que en esta última los parámetros son pasados en un array.

  1. if($_GET[‘comparacion’] == ‘menor’) $func = ‘menor’;
  2. else $func = ‘mayor’;
  3.  
  4. $a = 17;
  5. $b = 32;
  6.  
  7. echo call_user_func($func,$a,$b);

Dependiendo de la variable GET comparación, se ejecutará una función u otra. La alternativa con call_user_func_array es:

  1. if($_GET[‘comparacion’] == ‘menor’) $func = ‘menor’;
  2. else $func = ‘mayor’;
  3.  
  4. $a = 17;
  5. $b = 32;
  6.  
  7. echo call_user_func_array($func,array($a,$b)); //parametros en forma de array

Directamente de una cadena

Esta es una forma sorprendente de ejecutar funciones. Parte de lo mismo que la anterior, el nombre de la función en una variable alfanumérica. Pero en este caso puede ser tratada directamente como función, así por la cara.

  1. $funcion = ‘menor’;
  2. echo $funcion(2,5); //Devuelve 2
  3. echo $funcion(8,-12); //Devuelve -12

Esta libertad recuerda a JavaScript, donde pueden igualarse variables a funciones de forma muy sencilla.

Conocéis alguna forma más? Os parece útil disponer de diferentes métodos para llamar a funciones?

Categorias: Código, Comparativa, Curioso, HOWTO/CóMO, PHP | 4 comentarios »

El aspecto de un correcto HTML

4 de noviembre del 2007 Escrito por Alex Barros

Via del.icio.us descubro esta imágen que transmite de una forma muy acertada todo lo que un buen documento HTML debe contener.

Me gustaría transcribir y traducir este interesante recurso a continuación para todos vosotros:

Doctype declarado correctamente

Parece un galimatías, pero los DOCTYPE son importantes. No sólo hace que tu código sea válido, sinó que dicen a tu navegador detalles de cómo debe renderizar tu página.

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2.  
  3. <html xmlns="http://www.w3.org/1999/xhtml">

Encabezado ordenado

Que conste de título, conjunto de caracteres, enlace a hojas de estilo (incluida la de impresión!) y scripts (enlazados, que NO incluidos).
Los archivos externos (CSS o JavaScript) en carpetas propias (css/ y script/ por ejemplo).

  1. <head>
  2.       <title>Titulo del documento</title>
  3.       <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  4.       <link rel="stylesheet" href="css/estilo.css" type="text/css" media="screen, projection"/>
  5.       <link rel="stylesheet" href="css/print.css" type="text/css" media="print"/>
  6.       <script type="text/javascript" src="script/javascript.js"></script>
  7. </head>

ID para Body

El ponerle una id a la etiqueta body te permite crear propiedades CSS específicas para una página en concreto. Por ejemplo diferenciar los h2 del homepage, con un código similar a #home h2 {}, y así no afectar a ningún otro h2.

  1. <body id="home">

Div principal para todo el contenido de la página

El poner un div que contenga todo el contenido nos permite mantener el control del diseño sobre la página en su conjunto. Por ejemplo podemos determinar un ancho fijo de toda la página.

  1. <div id="contenedor">

Menú limpio semánticamente

Un menú debe tener este aspecto:

  1. <div id="menu">
  2.       <ul>
  3.             <li><a href="inicio.php">Inicio</a></li>
  4.             <li><a href="info.php">Info</a></li>
  5.             <li><a href="contacto.php">Contacto</a></li>
  6.       </ul>
  7. </div>

Incluir el contenido repetido

Mucho contenido es común entre página y página. Menús, barras laterales, piés de página, etc. Este tipo de contenido debería ser incluido dinámicamente. Esto puede conseguirse con una simple instrucción de PHP.

  1. <?php include_once("botonero.html") ?>

Contenido importante primero

Es apropiado que incluyas tus contenidos más importantes al principio, como noticias, eventos, que pueden ser listadas al principio del HTML. Si tu barra lateral es sólo para navegación o cosas menos relevantes incluso, deberías ponerla al final del HTML.

Código tabulado

Si cada sección de código se presenta tabulada como un conjunto, la estructura del código queda mucho más comprensible. Cuando un código está completamente alineado a la izquierda es prácticamente imposible de comprender.

Sin estilo!

Tu HTML debe estar completamente orientado a la estructura y al contenido, no al estilo! Deja que el CSS se encargue de todo lo relacionado con el estilo, y por supuesto olvida la etiqueta font

Contenido, contenido, contenido

Aquí has de insertar todo tu contenido, así que manos a la obra. No olvides separar los distintos párrafos con la etiqueta p. Utiliza listas dónde sea apropiado. Utiliza códigos para los símbolos (& copy; & iacute; etc). No abuses de los hr para el salto de línea.

Etiquetas de cierre

Empezaste con fuerza, ahora acaba con fuerza. No seas perezos@ y cierra todas las etiquetas que lo requieran, incluso si la página se renderiza bien sin ellas!

Categorias: Código, HOWTO/CóMO, HTML, Web | 8 comentarios »

Leer y escribir Zip en PHP sin complicarse la vida

2 de noviembre del 2007 Escrito por Alex Barros

Lo que hoy quiero mostraros es una genial librería, que facilita increíblemente el manejo de archivos zip con PHP; únicamente habrá que incluir un archivo a nuestro código, para gozar de toda su funcionalidad para abrir, explorar y crear archivos de tipo Zip.

Instanciación

El primer paso para usar esta librería es siempre el mismo, independientemente de lo que queramos hacer:

  1. require_once("pclzip.lib.php");
  2. $archivo = new PclZip("archivo.zip");

Como se observa, hemos incluido el fichero de la librería, y hemos instanciado la clase PclZip, con un nombre de archivo.
Este nombre de archivo puede ser uno existente, que queremos manipular, o uno inexistente, que queremos crear a continuación. Será más adelante cuando le indicamos lo que queremos hacer con archivo.zip (leer o escribir), hasta aquí únicamente lo hemos referenciado.

Sigue leyendo esta entrada »

Categorias: Aplicaciones, Código, HOWTO/CóMO, PHP | 19 comentarios »

De Webmaster windowsero a Webmaster Linuxero, parte I

23 de octubre del 2007 Escrito por José Cabo

20-xampp-logo-trio.jpg¿Eres webmaster, usas Windows, pero te sientes vacío y quieres ir a más y considerarte un webmaster de calidad?

Pero ello te plantea dos posibles opciones: la primera consiste en abandonar todo lo que sabes y dedicarte a ver cómo crece tu jardín (que probablemente ni tengas) porque en Windows nunca serás ‘lo más cool’ ni lo más ‘profesional’ que querrías ser.

La segunda opción es pasarte a GNU/Linux. Aprender a desarrollar en una verdadera plataforma de desarrollo, aprender a -trabajar- en un escritorio profesional de verdad, en un ordenador que realmente computa información de manera efectiva. Seguro que al final, con insistencia, alguna de estas cualidades de GNU/Linux se te contagian y puedes completar tu formación de webmaster/administrador.

Para comenzar dividiremos nuestro cambio de sistema en dos partes: La primera y más importante será la referente al software y, la segunda será la referente a la ‘adaptación del entorno de escritorio a nuestro gusto’, es decir, la personalización del escritorio, con enlaces a las aplicaciones que más vamos a usar, uso de los diferentes escritorios, etc…

Una parte muy importante y necesaria para un buen webmaster es un ‘servidor de pruebas’ en donde subiremos nuestros scripts web (html, php, etc…) antes de subirlos al hosting. Hablo de software pero en realidad debería hablar de hardware, el problema viene cuando nosotros somos pobres trabajadores explotados por la burguesía y no podemos permitirnos tener una sala especial para montar nuestro servidor para hacer pruebas así que nos limitaremos a usar nuestro propio ordenador. Por lo tanto lo primero que deberemos hacer es elegir una distribución – que en mi caso es Ubuntu GNU/Linux 7.10 Gutsy Gibbon, liberada el reciente 18 de Octubre, aunque puede servir cualquier distribución reciente de Linux (Fedora, Mandriva, OpenSuse, …). Obviamente, nuestro entorno de trabajo por defecto será Gnome (mi favorito… y para mi gusto el mejor, aunque siempre podéis probar con KDE o con Xfce entre otros montones).

Sigue leyendo esta entrada »

Categorias: GNU/Linux, HOWTO/CóMO, Web | 12 comentarios »

Conseguir comentarios en nuestro Blog

17 de octubre del 2007 Escrito por Alex Barros

Todos los que tenemos un blog sabemos lo importante que son los comentarios. Te ayudan a continuar con tu labor, a corregir errores, a completar información, a conocer a tus lectrores, y sobre todo pasar un buen rato.

Por eso es muy importante potenciar los comentarios, y darles el valor que se merecen. Voy a explicar una serie de estrategias que pueden hacer que se comente más en tu blog, o por lo menos que sea más agradable hacerlo.

Sigue leyendo esta entrada »

Categorias: Código, Diseño, HOWTO/CóMO, PHP, Plugins, Web, Wordpress | 2 comentarios »

Sencillo sistema AntiBot en PHP con preguntas

1 de octubre del 2007 Escrito por Alex Barros

Seguramente ya conoceréis el clásico sistema Anti Robots que consiste en hacer una pregunta que requiera del “razonamiento humano“. Este sistema puede ser construido de una forma sencillísima con PHP, y os muestro cómo:

Nuestra base de datos de preguntas y respuestas será un simple array. Además usaremos las sesiones, para verificar la respuesta en el archivo de chequeo.

El array de preguntas y respuestas contendrá una pregunta clara y legible para los humanos, y una respuesta a modo de expresión regular, para considerar las variantes de respuesta. Por ejemplo:

Pregunta: ¿Cuántos dedos tiene una mano?
Respuesta: (5|cinco) // acepta mayúsculas y minúsculas

Una vez declarado esto, seleccionaremos una pregunta al azar, con la función rand(). La parte de pregunta la imprimiremos por pantalla en el lugar adecuado junto a un campo de texto.

Lo siguiente es guardar la expresión regular que contiene la respuesta en una variable de sesión, para que quede accesible en el chequeo a continuación.

Por último, en el archivo de chequeo usaremos la función de que evalua expresiones regulares eregi(), sometiendo la respuesta del campo de texto a la expresión regular almacenada en sesión.

El concepto ya está definido, y es tan simple como eso. Ahora plasmémoslo en esas bonitas letras de colores que son el código:

En el archivo del formulario:

  1. session_start(); //Al principio del todo!!!
  2. $preguntas = array();
  3. $preguntas[] = array(‘Cuantos dedos tiene una mano?’,‘(5|cinco)’);
  4. $preguntas[] = array(‘Resultado de sumar 2 y 4?’,‘(6|seis)’);
  5. $preguntas[] = array(‘Cuantas ruedas tiene un coche?’,‘(4|cuatro)’);
  6. $preguntas[] = array(‘Que animal es mas grande: elefante o caracol?’,‘(primero|elefante)’);
  7. $preguntas[] = array(‘Cual es el color mas oscuro de todos?’,‘negro’);
  8. $preguntas[] = array(‘Por favor, contesta: eres humano?’,‘(si|claro)’);
  9. $preguntas[] = array(‘Con que mano escribe un zurdo?’,‘(izquierda)’);
  10. $preguntas[] = array(‘Escribe pan dos veces.’,‘^pan ?pan$’);
  11. // puedes escribir todas las que quieras
  12.  
  13. $pregn = rand(0,(count($preguntas)-1)); // numero al azar
  14. $_SESSION[‘pregregex’] = $preguntas[$pregn][1]; // Lo guardo en sesion
  15. echo ‘</p>’.$preguntas[$pregn][0].‘</p><br><input type="text" name="respuesta" />’;

Y en el archivo de chequeo:

  1.  
  2. if($_SESSION[‘pregregex’] AND $_GET[‘respuesta’])
  3. {
  4.         if(eregi($_SESSION[‘pregregex’],$_GET[‘respuesta’]))
  5.         echo "De acuerdo, no eres un robot…";
  6.         else
  7.         echo "Solo Bender puede superarte a robot !";
  8.         unset($_SESSION[‘pregregex’]);
  9. }

Inconvenientes:

  • El idioma importa (a no ser que sean preguntas aritmeticas)
  • Puedes toparte con una mente brillante, que le de por contestarte lo que no es
  • …ninguno más, que yo sepa… pregúntale a un robot.

Podéis probar su funcionamiento en directo desde este ejemplo.

Descargar ejemplo:
anti-bot.zip

Categorias: Aplicaciones, Código, HOWTO/CóMO, PHP, Seguridad, Software libre | 5 comentarios »

“Escalado Líquido” para Gimp 2.2+ ya disponible como plugin

1 de octubre del 2007 Escrito por José Cabo

Estoy seguro de que muchos de vosotros ya conoceréis un algoritmo para escalar imágenes casi sin deformar las figuras (personas, arboles, suelo…). Para los que no lo conozcáis, aquí un vídeo demostrativo:

Pues para los usuarios de Gimp ya tenemos a nuestra disposición el algoritmo en forma de Plugin para poder usarlo a nuestro antojo. Aquí tenéis algunos binarios para instalar en Ubuntu así como el código fuente para compilar en nuestra distribución de Linux favorita (./configure && make && sudo make install o sudo checkinstall).

El manejo es muy fácil. Una vez instalado el plugin abrimos en Gimp nuestra imagen que queremos retocar y nos vamos a la pestaña “Capas/Liquid Rescale”. En la nueva ventana simplemente ponemos la nueva resolución (podemos mirar en Advanced Options que hay más opciones, pero el “modo” que mejor me ha ido ha sido el que viene por defecto [transversal Absolute Value], así que mejor no tocar nada excepto si queremos probar los resultados) y le damos a “Aceptar”. Si la imagen es muy grande…. tardará un rato bastante (un minuto en hacer todos los procesos…), pero si es, por ejemplo, 1024 de anchura no creo que haya que esperar mucho tampoco.

Funciona bastante bien, un poco lento, pero cumple con su trabajo. Aunque no es perfecto el acabado está muy conseguido y mantiene prácticamente iguales las formas y figuras. Un ejemplo:

Original:
originlthumb.jpg

En esta siguiente tenemos la imagen de arriba retocada. La primera es escalada tal cual; la segunda usando el plugin Liquid Rescale con las mismas medidas que la 1ª y con las opciones predefinidas; la tercera se ha hecho usando capas (creadas previamente y seleccionando que es lo que queremos que se escale y que es lo que “nos daría igual”, todo gestionado desde el plugin).

total-thump.jpg

En definitiva, una verdadera maravilla.

Añadido a las 18:33 por Alex Barros
Al respecto también hay una web que aplica este filtro de forma online, aúnque con bastante lentitud, y problemas con archivos grandes (http://rsizr.com/)

Categorias: Diseño, HOWTO/CóMO, Imagen Digital, Plugins, Software libre | 2 comentarios »

Solución a dos pesadillas del CSS

30 de septiembre del 2007 Escrito por Alex Barros

Hoy he encontrado del tirón, en un mismo blog, la solución a dos de mis mayores pesadillas en la maquetación CSS.

#1: Float y Clear
Cuando queremos desplazar un elemento a la izquierda o a la derecha, solemos usar la propiedad float, que saca al elemento del flujo de contenido y lo desplaza a donde queramos.

El problema viene cuando este elemento tiene un elemento padre (que lo contiene) y queremos que lo envuelva.

Esto es lo que yo quiero:
float_lo_q_quiero.gif
Y esto lo que obtengo:
float_lo_q_obtengo.gif

(He de aclarar que no se trata de ningún error, sinó que el estándar CSS especifica su comportamiento de esta forma)

La solución tradicional es incluir un tercer div a continuación de los dos flotantes, y aplicarle la propiedad clear:both, pero esto nos hace meter un div sin razón de ser, y nos hace la página un poco menos semántica.

La solución que he encontrado ahora, mucho mejor, es aplicar al elemento padre la propiedad overflow:hidden. De esta forma evitamos tener que meter elementos y toquetear el flujo (que a veces trae problemas) y obtenemos el resultado deseado.

[para profundizar un poco más en este tema...]

#2: El marquito de los enlaces
Otro problema que encontraba, aúnque menos grave, era el marquito que aparece en los enlaces cuando pulsas en ellos, símplemente me parece antiestético.

Clica aquí para verlo

Esta propiedad es outline, y podemos bloquearla simplemente introduciendo en nuestra hoja de estilos el siguiente código:

  1. a {
  2.       outline-style: none;
  3. }

[para profundizar un poco más en este tema...]

Ambas soluciones magistrales las he encontrado en el blog PlanSeldon.com.

Categorias: Código, CSS, Diseño, HOWTO/CóMO | 6 comentarios »

« Entradas Anteriores

del.icio.us meneame.net RSS

Search:

Bicivalencia Localiza las estaciones de Valenbisi, servicio público de bicicletas en Valencia, España. Ver más Gpsia Descubre y comparte rutas por todo el mundo, tomadas con GPS. Ver más Imaset Edita tus imágenes de Wordpress con este sencillo plugin. Ver más

¡Mi música es tuya!

Digo yo que...

Mis fotos de Flickr

Entradas recientes

Meta:

Respeta el copyleft

,