Cargando...
Menu Ver sumario






Cambiar el fondo principal en plantillas del diseñador

29/06/2010
Actualización: Blogger ha incorporado con posterioridad a la publicación de esta entrada, una utilidad para poder cambiar los fondos sin tener que editar la plantilla: Nuevo diseñador. Usar una imagen propia.

Este es un post de emergencia para un par de personas con problemas.

No he tenido ocasión de ver cómo es la estructura de las plantillas generadas con el nuevo diseñador de plantillas de Blogger, pero en un vistazo rápido, sí que he podido comprobar que se manejan muchas más cosas mediante variables que en las que hasta ahora eran denominadas del "nuevo Blogger".

Las variables de diseño son las que aparecen entre signos de comentarios a partir de /* Variable definitions... Antes se utilizaban para grabar los datos que configurábamos desde la opción Fuentes y Colores, pero ahora recoge muchas más cosas y supongo que son todas aquellas que se pueden escoger desde el propio diseñador.

Una carencia que he observado o quizás simplemente que se me ha escapado, es la posibilidad de incorporar un fondo propio. Hay muchos para escoger, realmente muchísimos, pero lo dicho, no he visto que se pueda subir una imagen distinta de las del catálogo.

Así que si queremos poner otro fondo, no nos queda más remedio que empezar a tocar la plantilla, aunque creo que he encontrado un sitio dónde no alteramos mucho la cosa y que nos permitirá posteriormente poder seguir usando el diseñador para cambiar de nuevo el fondo.

<Variable name="body.background" description="Body Background" type="background"
color="$(body.background.color)"
default="$(color) none repeat scroll top left" value="$(color) url(http://www.blogblog.com/1kt/awesomeinc/body_background_dark.png) repeat scroll top left"/>

Aquí parece que van las variables de los fondos y lo que hay marcado en verde es la dirección de la imagen de fondo que hemos elegido desde el diseñador. Si queremos cambiarla por otra, sólo hay que sustituir esa por la nuestra.

Dependiendo de si vuestra imagen es para repetir a modo de patrón o no, quizás haya que sustituir scroll por fixed. Igual para la alineación de la imagen y left, que en los casos más normales debería ser center y lo mismo para la repetición (repeat).

Algunas de las plantillas tienen una imagen para la parte superior distinta de la que mostrará el resto del blog, así que ese código de ejemplo puede ser más largo y contener más de un fondo. Es cuestión de analizarlo un poco.

Me resulta imposible ahora mismo hacerlo a mí para todos los casos, pero para hacerlo vosotros mismos y así ir conociendo al mismo tiempo la plantilla que hayais escogido, lo mejor es ir haciendo los cambios que vuestro saber hacer (o vuestra intuición) os digan y comprobar los cambios efectuados con Vista Previa antes de grabar. Eso o tener a buen recaudo una copia de seguridad antes de cambiar nada. O mejor todavía: ambas cosas.

Por supuesto, tenemos la opción de siempre, que es eliminar la variable de la plantilla y colocar una imagen a saco. Por ejemplo, si ya en la parte CSS tenemos esto...

body {
  font: $(body.font);
  color: $(body.text.color);
  background:$(body.background);
}

... y sabiendo que todo lo que empieza por $ es una variable de las explicadas anteriormente, podemos cambiar esa variable directamente por un valor:

body {
  font: $(body.font);
  color: $(body.text.color);
  background:url(http://imagencualquiera.jpg);
}

Eso sí. A partir de este momento, ya no funcionará el cambio de fondo desde el diseñador, porque aunque la variable se cambie desde él, si luego no la usamos será imposible que se muestre su contenido. Recordar que la hemos borrado: $(body.background).

Por este motivo, se recomienda anular mediante comentarios (que no borrar) la línea en cuestión y de esta manera, si alguna vez queremos volver al diseño original sólo habrá que borrar la nueva línea y quitar los símbolos de comentarios para restaurar al punto anterior.

body {
  font: $(body.font);
  color: $(body.text.color);
/*  background:$(body.background);*/
  background:url(http://imagencualquiera.jpg);
}

EmbedTweet o cómo incrustar un tweet rápidamente

28/06/2010
Gracias a EmbedTweet, podemos insertar un parloteo en cualquier parte de nuestro sitio, en no más tiempo del que tardamos en insertar un simple enlace.

Este servicio nos ofrece un script capaz de transformar dicho enlace en algo como esto:

Tweet1

El código es el mismo para todos y sólo hay que insertarlo una vez antes de </head>

<script src='http://embedtweet.com/javascripts/embed_v2.js' type='text/javascript'/>

A partir de tener el script en nuestra plantilla, ya sólo se trata de poner un enlace a la URL del tweet deseado y este enlace se transformará automáticamente en un tweet embebido con todos sus botones operativos.

¿Qué no sabes cómo conseguir la dirección de un tweet? Pues...

1. Buscas en el perfil del usuario del que quieres replicar el tweet
2. Localizas el tweet
3. Pinchas en el enlace que marca el tiempo que hace que se produjo
4. Aparece en tu navegador el tweet de manera aislada
5. La dirección que aparece en la barra de direcciones es la que buscamos


Chuletas para Blogger y otros

25/06/2010
Ayer mi cuñado me contó que su vecina había visto en el Twitter de su prima, un mensaje de  @Ivan_RG, un buen tipo amigo de Twittboy (el de los ojos saltones), referente a una entrada de WWWhat's New en la que había enlazado un post de Spyrestudios, titulado Mega colección de chuletas para diseñadores y desarrolladores.

Con toda esta presentación y la propaganda que sobre él me hicieron, no pude por menos que visitar ese blog para ver aquello y cómo la cosa era como aparentaba, lo retweeteé.

Ahora Chacien, el de los tarugos esculpidos, me envía un correo para avisarme de otros sitios que incluyen buenas chuletas, una de ellas sobre las clases que utiliza la estructura de las plantillas Blogger... y en español.

Así que sin más preámbulos, a continuación los enlaces, que no sé por qué es, pero siempre me cuesta mucho utilizarlos:

  • BTemplates: Identificadores y clases en la plantilla Blogger
  • Spyrestudios: Gran variedad de chuletas para CSS, HTML, JavaScript y varios más.
  • Devcheatsheet: Muchos, muchos... muchísimos prontuarios de todo tipo.

Nota: Es complicado leer un post lleno de enlaces ¿o no? :D

Problemillas con Blogger y los títulos de los gadgets

23/06/2010
Si en estos últimos días has intentado añadir un gadget sin título o cambiar alguno pre-existente que asimismo no lo tuviera, te habrás encontrado con que el sistema no te permitía guardarlo.
Campo obligatorio; no debe dejarse en blanco.

Como ocurre con lo de subir imágenes con el editor antiguo y que no salga ningún aviso cuando termina la carga, desconozco si es un problema puntual o una nueva característica. Pero en fin... esto último no es ningún drama y lo del título tiene soluciones fáciles.

El escaparate y Ciudad Blogger ya nos anticiparon este tema.

Una de las posibles soluciones es introducir en el apartado del título, un código HTML válido sin contenido. Por ejemplo, podemos escribir <h2></h2> o <span></span> o &nbsp;... o cualquier otra cosa que se interprete como código y que no muestre nada cuando se publique.

Con cualquiera de estas cosas, el sistema "traga" y conseguimos que no se vea título alguno.



Otro apaño requiere acudir a la plantilla, pero es más definitivo por si más adelante lo anterior deja de funcionar. Además, conviene conocerlo porque puede servirnos también para otros fines.

Todos los nuevos gadgets tienen por defecto unas líneas de código como estas, que podremos ver en la plantilla si marcamos "Plantillas de artilugios expandidas":

<b:widget id='BlogArchive1' locked='false' title='Archivo del blog' type='BlogArchive'>
<b:includable id='main'>
<b:if cond='data:title'>
<h2><data:title/></h2>
</b:if>
<div class='widget-content'>
<div id='ArchiveList'>
<div expr:id='data:widget.instanceId + &quot;_ArchiveList&quot;'>
etc...

Pues bien, las tres que se han marcado en verde y que son comunes a todos los gadgets sirven para comprobar si el idem tiene un título y en caso afirmativo, mostrarlo. Si se borran las tres, simplemente no se mostrará el título en ningún caso, aunque se escriba al editar el gadget.

Si se hace de esta última manera, ya nos es indiferente tener que poner un título obligados, porque habremos conseguido que no se vea.

Iconos automáticos personalizados por tipo de enlace

21/06/2010
Este truco de diseño es muy fácil y la única complicación, por llamarla de alguna manera, consiste en alojar los ficheros necesarios para que funcione, bajo nuestro propio control. Una vez hecho, mediante una única línea de código, todos los enlaces mostrarán un icono alusivo al tipo de fichero del que son destino, a continuación del enlace.

En este blog de pruebas podreis ver una demo sobre cómo quedaría el asunto, así como todas las extensiones disponibles.

Esto se consigue insertando después de <head> la línea que se muestra a continuación y que incluye un fichero en Fileden totalmente operativo. Pero aunque sea así, no os quedeis aquí y seguid leyendo para poder evitar problemas futuros y también para poder ajustar el código a vuestras necesidades.

<link href='http://www.fileden.com/files/2009/9/13/2573667/iconize2.css' rel='stylesheet' type='text/css'/>


Como habeis podido ver, el fichero es una hoja de estilo (CSS) externa, que ligamos a nuestra página mediante la etiqueta link. Esta hoja contiene diversos selectores de atributos como los que vimos anteriormente, que incluyen un pequeño estilo para insertar un icono relativo al tipo de enlace, por medio de un padding.

La idea la vi en pooliestudios, aunque he incorporado a su paquete original unos cuantos selectores e iconos más, con el fin de incluir algunos sitios que hoy día se usan muy habitualmente, como Twitter, YouTube, Flickr, Facebook, Imageshack... entre otros, al tiempo que he suprimido otros quizás un poco en desuso.

Como siempre, para no depender de la constancia del propietario de los ficheros o del hosting dónde se alojan, lo conveniente es alojarlos nosotros mismos. Para ello, nos descargamos este fichero que corresponde a la hoja de estilo y este otro dónde van los iconos. A continuación subimos todas las imágenes a nuestro sitio de almacenamiento habitual y editando la hoja, vamos sustituyendo todas las direcciones de los fondos-iconos (background) por las nuestras. Luego, subimos la hoja de estilo también al lugar dónde acostumbremos y finalmente, sustituimos la nueva dirección por la marcada en verde en el código del principio.

Quizás es un poco laborioso, pero una vez hecho sirve para siempre y nos evita que un buen día deje de funcionar porque haya desaparecido el fichero o las imágenes originales. Una alternativa para el fichero .css, sería simplemente copiarlo e insertarlo dentro de nuestra hoja de estilo (en el caso de Blogger, entre las etiquetas SKIN). En este último caso, no sería necesaria la línea del principio porque no habría que llamar a ninguna hoja de estilo externa.

Y ahora los problemillas, sobre todo hablando de Blogger. En esta plataforma, como sabeis, cada vez que se sube una imagen se incorpora automáticamente un enlace a la imagen original. Como mediante la hoja de estilo, hemos marcado los enlaces a ficheros con extensiones .jpg, .png, .gif y .bmp para que muestren un icono, estas imágenes con enlace, mostrarán también un icono que nos puede estropear el diseño de las mismas. Esto dependerá de la plantilla de cada uno.

Para evitar esto hay dos soluciones. La primera es utilizar una clase que ya incorpora la hoja de estilo de iconos, llamada imagelink y que provoca que todos los enlaces que la incluyan, dejen de mostrar el icono.

De esta manera, si incorporamos class="imagelink" al enlace de cualquier imagen...

<a class="imagelink" href="http://enlace_a_imagen.jpg"><img src="http://imagen.jpg"/></a>

...esa imagen en concreto NO mostrará el icono, tal y como podeis ver en la parte inferior de la página de ejemplo.

La segunda solución es más radical pero casi inevitable para sitios con muchas imágenes con enlace en sus páginas. La cosa es que habría que prescindir de los iconos en estos casos, para no tener que ir modificándolos uno por uno. Para ello sólo habría que editar la hoja de estilo y suprimir los selectores de atributos que hagan referencia a imágenes, antes de guardarlo en nuestro hosting. Para los perezosos, aquí teneis otra versión del fichero CSS preparada para ello.

Al igual que con las imágenes, si algún icono más os "estorba", sólo teneis que eliminar su selector de la hoja de estilo o modificar sus reglas hasta ajustarlas a vuestros deseos.


A partir de aquí, imaginación al poder. Podeis sustituir los iconos por otros que cuadren más con el estilo de vuestro sitio, podeis ponerlos a la izquierda en lugar de a la derecha modificando el padding, incorporar enlaces de otro tipo o a otros sitios, quitar otros que no os queden bien... o cualquier otra cosa que se os ocurra y que esperamos compartais a través de los comentarios.

Selectores de atributos

16/06/2010
Aparte de con otras cosas, estos días he estado liado practicando con una vieja pero útil herramienta que nos proporciona CSS desde su segunda versión. Se trata de los selectores de atributos.

Estos selectores pueden hacer las veces de condiciones, para poder aplicar estilo a determinadas etiquetas HTML, pero sólo si tienen cierto contenido en sus atributos. Un ejemplo para que esté más claro.

a[href="http://www.google.es"] {color:#990000;}

La inclusión de esta línea en nuestra hoja de estilo provocará que todas las etiquetas a (anchor) que tengan un atributo href igual a http://www.google.es, salgan con una letra de color rojo. O lo que es lo mismo, cada vez que creemos un enlace a la página principal de Google, el texto del enlace saldrá en color rojo de forma automática.

Un selector de atributo tiene la forma

ETIQUETA[ATRIBUTO OPERADOR VALOR] {PROPIEDADES}

En el primer ejemplo, la etiqueta sería a, el atributo href, el operador = y el valor la dirección de Google. Las propiedades son las habituales de CSS y en el susodicho ejemplo, el color de fuente.

La posibilidad de usar cualquier etiqueta, atributo y valor, así como una suficiente variedad de operadores, es lo que le da fuerza a esta herramienta. Los operadores son los siguientes y harán que el estilo se ejecute en aquellas etiquetas que tengan un atributo:

= exactamente igual al declarado
input[type="text"] {width: 200px;}
Todos los campos input de formularios que sean del tipo texto, tendrán un ancho de 200px.


^= que comienza con los mismos caracteres que el declarado
img[title^="categ"] {padding:5px;border:1px solid #000000;}
Todas las imágenes con un título que empiece por la cadena "categ", tendrán un borde negro con un padding de 5px.


$= que termina con los mismos caracteres que el declarado
a[href$="jpg"] {background:#cccccc;}
Los enlaces cuya dirección de destino termine con la extensión jpg, tendrán un fondo gris.


*= que contiene los mismos caracteres que el declarado
a[href*="oloblogger"] {font-style:italic;}
Los enlaces cuya URL contengan la secuencia de caracteres "oloblogger", apareceran en cursiva.


~= exactamente igual al declarado, de entre todos los valores que contenga el atributo separados por espacios
link[rel~="alternate"] {...}
No se me ocurre ningún ejemplo de estilo para este operador, pero de entre todas las etiquetas link, las propiedades se aplicarían a aquellas que dentro del atributo rel, tuvieran el valor exacto "alternate", como por ejemplo ocurre en <link href="estilo.css" rel="alternate stylesheet" type="text/css">


|= al principio de una lista de valores separados por guiones
p[lang|="en"] {color:red;}
Los párrafos con marca de lenguaje inglés (en), se verán en rojo como ocurriría en < p lang="en-US"...


Si no especificamos operador y por consiguiente, ningún valor, las propiedades se aplicarán a todos los elementos que tengan el atributo declarado.
span[class] {text-align:justify;}
Todas las etiquetas span que incluyan algún atributo class (independientemente de su valor), mostrarán texto justificado.


Por último, las selectores pueden ser "sumados", de manera que el estilo sólo se aplicará si se cumplen todas las condiciones:
div[class="resaltado"][id="fondo"] {background:#ffffff; color:blue; font-weight:bold; }
Si un div tiene simultáneamente la clase y la id indicadas, su contenido se verá con fondo blanco y texto azul en negrita.


Algunos operadores corresponden a CSS3, pero en un principio, todos son soportados por Firefox, Chrome, Safari e Internet Explorer a partir de la versión 7.

Usar CSS3 sin conocer CSS3. Generadores

11/06/2010
Pues así es. Ya puedes empezar a utilizar las nuevas características que incorpora el estándar para hojas de estilo CSS3, incluso si no has leído una sola línea sobre él. Para ello, tenemos muchas aplicaciones online que generan automáticamente el código necesario para añadir sombras a textos, bordes múltiples, esquinas redondeadas, tipografías no-estándar, reflejos, gradientes, columnas... simplemente indicando los parámetros necesarios en cada caso. El generador ya se ocupa de darnos las propiedades que hay que incluir en los selectores a los que queramos aplicar ese estilo.

Conste que no es lo recomendable, porque lo interesante es entender lo que se teclea para poder sacarle el máximo partido. Pero una cosa no es excluyente de la otra y si os vais fijando en las líneas de código, podreis observar fácilmente qué es lo que hace cada una e ir captando la idea.

Y para los que saben de CSS3, pues una ayudita nunca viene mal ;)

CSS3 GENERATOR
Muy intuitivo y completo. Sólo requiere introducir los valores. Muestra iconos de los navegadores que soportan cada propiedad y sobre ellos, la version mínima necesaria.
Disponibles: border-radius, box-shadow, gradient, rgba, rotate, transition y @font-face.

CSS3 Generator

CSS3, PLEASE
Para mí muy original. Se presenta directamente todo el código y la vista previa de un elemento. Permite activar/desactivar diversas propiedades, así como modificar sus valores sobre el propio código, viendo sobre la marcha sus resultados.
Disponibles: border-radius, box-shadow, text-shadow, rgba, @font-face, column, resize, box-sizing y outline

CSS3, Please

STYLE MASTER
Flojito pero suficiente para lo más básico. También incorpora una vista previa y una barra con los navegadores que soportan cada propiedad de las que se pueden probar.
Disponibles: gradient, text-shadow, box-shadow y text-stroke

Style Master

BORDER IMAGE GENERATOR
Ideal para ver cómo se pueden contruir bordes con imágenes.
Disponible: border-image

Border Image Generator

WIDGET PAD
No se pueden cambiar los valores de las distintas propiedades, pero resulta interesante para ver como funcionan sin tener que movernos del sitio. Incluye la propiedad para simular reflejos.
Disponibles: border-radius, box-shadow, box-reflect, transform, opacity, text-shadow y text-stroke

Widget Pad CSS3 Generator


BORDER RADIUS

Sencillito como él solo pero eficaz en su cometido de mostrar cómo funcionan los bordes redondeados.
Disponible: border-radius

Border Radius

CSS3 GRADIENT GENERATOR
Centrado exclusivamente en la generacion de código para gradientes.
Disponible: gradient

CSS3 Gradient Generator

CSS TRICKS BUTTON MAKER
Generador de botones construidos exclusivamente con CSS3. Primero se diseña el botón y una vez al gusto, se puede pinchar en él para obtener el código de estilo.
Disponibles:

CSS Tricks Button Maker

Teneis que tener en cuenta que no todo funciona en todos los navegadores. Las distintas propiedades están siendo incorporadas paulatinamente por las nuevas versiones que van sacando los fabricantes. Por eso, en unas versiones/navegadores unas cosas funcionan y otras no. En esto, para variar, Internet Explorer se está quedando un poco atrás y es el que más carencias tiene al respecto. Sin embargo, en la mayoría de casos, el no interpretar bien el código no supone generalmente un perjuicio en la estética de la web. Si acaso, más bien una no-mejora.

Me explico... Si añadimos a una capa con borde el efecto de esquinas redondeadas, los navegadores que no soporten el border-radius simplemente no las mostrarán redondas, sino como siempre, en ángulo recto. O sea, el navegador ignora la propiedad y no la interpreta ni bien ni mal. Simplemente no la interpreta.

Blogger y Adsense. Evitar primer anuncio entre posts.

09/06/2010
La manera de insertar un anuncio de Adsense en un blog, es tan fácil como copiar el código que nos facilita ese servicio y pegarlo dónde nos interesa que aparezca: cabecera, sidebar, crosscol, pie, etc.

Colocarlo en las entradas tiene su peligro, ya que Adsense no permite más de tres banners por página y si se hace de esa manera, podrían aparecer más de los debidos (uno por entrada) en la página principal, en las de navegación por anteriores/recientes o en las de etiquetas. Creo que el propio script de Adsense controla esto para no excedernos, pero lo cierto es que no he querido probar. Espero que lo entendais ;)

Pero en fin, San Google y Blogger en su nombre y por una cuestión totalmente desinteresada, tienen a bien facilitarnos la cosa, mediante un sistema automático de agregar anuncios Adsense entre artículos, que además respeta el máximo de tres exigido.

Esto se hace accediendo desde Elementos de Página y editando el bloque Entradas del blog. Allí aparece una casilla de verificación con la leyenda Mostrar anuncios entre las entradas, que es la que hay que marcar para activar este servicio. A continuación se despliega un nuevo cuerpo dónde podremos indicar cada cuántas entradas queremos mostrar un anuncio, el formato, la configuración de colores, nuestra ID de editor...

Esta activación cambia el valor de la etiqueta data:post.includeAd a true, con lo que se interpretará todo el código que hay dentro de un condicional para este fin y que en una plantilla sin modificar y accediendo con artilugios expandidos, será como este:

<b:if cond='data:post.includeAd'>
<b:if cond='data:post.isFirstPost'>
<data:defaultAdEnd/>
<b:else/>
<data:adEnd/>
</b:if>
<div class='inline-ad'>
<data:adCode/>
</div>
<data:adStart/>
</b:if>

Completando el código correspondiente al resto del bucle principal de Blogger, nos encontraremos antes y después de esto, otras dos etiquetas DATA más, relacionadas también con este artilugio para la publi: <data:defaultAdStart/> y <data:AdEnd/>

Pero juro por mis niños que no entiendo la utilidad ni de estas ni de las anteriores. Son parte del código misterioso que Blogger incluye con nocturnidad y alevosía, porque no he encontrado ninguna referencia a ellas y tampoco he observado ninguna diferencia tras ir eliminar las líneas una a una. La única que hace algo y que además es imprescindible, es la de data:adCode. En ella parece que se almacena todo lo necesario para mostrar los banners, según la configuración programada por nosotros.

Así las cosas, poco podemos hacer, pero al menos hay algo que sí y que ayer precisamente me preguntaba Damián: cómo hacer para evitar que salga un anuncio tras el primer post.

La solución está en utilizar otra etiqueta DATA y que es aquella que controla si estamos en el primer post de la página: data:post.isFirstPost.

Así pues, con un condicional comprobamos antes de ejecutar data:adCode, si estamos en ese primer post. Si no lo es, escribimos el contenido de la variable y si es el primero, nos saltamos el anuncio. En verde lo añadido:

<b:if cond='data:post.includeAd'>
<b:if cond='data:post.isFirstPost'>
<data:defaultAdEnd/>
<b:else/>
<data:adEnd/>
</b:if>
<b:if cond='data:post.isFirstPost != &quot;true&quot;'>
<div class='inline-ad'>
<data:adCode/>
</div>
</b:if>
<data:adStart/>
</b:if>

20 Blogs 2010. Concurso para blogs

08/06/2010
Aquí están de nuevo los Premios 20Blogs, el concurso en el que los blogueros participantes son los que tienen el papel protagonista en los resultados finales. Organizado por 20minutos.es a través de su sección La Blogoteca, la de 2010 es la quinta edición de este certamen.

Para todos los que tengais una bitácora, esta es una ocasión excepcional de mostrar vuestro espacio en un sitio con bastante relevancia en la Red, al tiempo que podreis conocer blogs muy buenos que de otra manera posiblemente nunca llegueis siquiera a saber que existen. Esto sin olvidar que podreis disfrutar de una experiencia en cuanto a lo que supone participar en una competición de esta índole. Si esto ya es de por sí bastante atractivo, lo de ganar no os lo podeis ni imaginar!!!

Salvo que haya algo que se me haya pasado, las bases son las habituales de otros años:
  • Puedes presentar tantos blogs como administres, pero cada uno puede participar en una sola categoría de entre las 20 existentes
  • Para poder votar hay que tener al menos inscrito un blog, admitiéndose un voto por categoría, lo que hace un total también de 20 votos por barba.
Los premios:
  • Estatuilla a los ganadores en cada categoría, por votación de los inscritos
  • Estatuilla y 3.000€ al mejor blog por votación.
  • Estatuilla, 3.000€ y posibilidad de integrar el plantel de blogueros de 20minutos.es al mejor blog 2010 a criterio del jurado, de entre los cinco más votados en cada categoría.

Aunque teneis hasta el 18 de Julio para inscribir vuestro blog, no os durmais, que luego el tiempo pasa y nos acordamos siempre de terminar de hacerlo a última hora.

Tras una fase de validación que durará hasta el 1 de Agosto, entre el 2 de Agosto y el 30 de Septiembre se podrán emitir/recibir votos, para finalmente conocer a los ganadores el 8 de Octubre.

¡¡Suerte a todos!!

Google Analytics. Ahora también asíncrono.

07/06/2010
Google Analytics es un sistema gratuito para estadísticas que la multinacional del buscador, pone a disposición de cualquier webmaster.

Con él podrás obtener informes detallados sobre el número de visitas, usuarios únicos, tiempo en la página, fuentes de acceso, páginas más vistas, localizaciones geográfias, palabras clave, ruta seguida por los visitantes, etc. Hay disponibles muchas opciones, filtros e incluso alertas (Intelligence) que nos avisan cuando sucede cierto parámetro.

Requiere registro y una vez estemos en el panel de control, premos encontrar un código que se debe incorporar a cada página que queramos controlar. En el caso de Blogger, será suficiente con insertarlo en la plantilla, antes de </body> Podemos ir añadiendo varias webs (o blogs) y desde el panel de control ir accediendo a la que nos interese en cada momento. El código incluye una identificación distinta y única para cada sitio administrado en la forma XX-XXXXXXX-X.

El código tradicional se descarga una sola vez al comienzo de la visita y se almacena en la caché, lo cual resulta bastante ventajoso desde el punto de vista de la velocidad de acceso. Pero todavía lo es más que el fichero principal sea el mismo para todos los sitios, porque una vez visitado uno que t esta utilidad, el navegador no volverá a cargarlo durante la sesión. Como resultado, el incremento de tiempo de carga de la página tras su instalación, no difiere mucho del original.

El código ha tenido diferentes versiones y esta es una de las últimas:

<!-- Google Analytics -->
<script type='text/javascript'>
var _gaq = _gaq || [];
_gaq.push([&#39;_setAccount&#39;, &#39;XX-XXXXXXX-X&#39;]);
_gaq.push([&#39;_trackPageview&#39;]);
(function() {
var ga = document.createElement(&#39;script&#39;);
ga.src = (&#39;https:&#39; == document.location.protocol ? &#39;https://ssl&#39; : &#39;http://www&#39;) + &#39;.google-analytics.com/ga.js&#39;;
ga.setAttribute(&#39;async&#39;, &#39;true&#39;);
document.documentElement.firstChild.appendChild(ga);
})();
</script>

XX-XXXXXXX-X es el identificativo que mencionaba antes. El último dígito distingue las distintas web de un mismo administrador.

Desde hace unas semanas, Google Analytics facilita un nuevo sistema asíncrono, de tal manera que hasta que nuestra página no se ha cargado por completo, el tracking de estadísticas no comienza a funcionar. Así que si antes tardaba poco, ahora se supone que interferirá mucho menos todavía.

Este es el nuevo código:

<!-- Google Analytics Asincrono -->
<script type='text/javascript'>
var _gaq = _gaq || [];
_gaq.push([&#39;_setAccount&#39;, &#39;XX-XXXXXXX-X&#39;]);
_gaq.push([&#39;_trackPageview&#39;]);
(function() {
var ga = document.createElement(&#39;script&#39;); ga.type = &#39;text/javascript&#39;; ga.async = true;
ga.src = (&#39;https:&#39; == document.location.protocol ? &#39;https://ssl&#39; : &#39;http://www&#39;) + &#39;.google-analytics.com/ga.js&#39;;
var s = document.getElementsByTagName(&#39;script&#39;)[0]; s.parentNode.insertBefore(ga, s);
})();
</script>

El inconveniente proviene de la misma ventaja: si la página no se carga del todo por algún fallo de diseño, la estadística no funciona, así que corresponde a cada uno valorar qué es lo que más le interesa antes de aplicarlo.

Urban Dirty. Texturas grunge libres

04/06/2010
Óxidos, viejas maderas, cemento, pinturas desgastadas... Más de 700 fotografías con un estilo muy grunge para utilizar como fondos, wallpapers, texturas o cualquier otra cosa que se te ocurra.

Todas están bajo una licencia Creative Commons, que permite su uso sin restricciones (incluido el uso comercial). Sólo se requiere referenciar a urbandirty.com en el lugar y la forma que te parezca más oportuna.

Los tamaños originales llegan hasta 3027x2304 pixels con 180 dpi y su web incluye un buscador (en inglés).






Aprende posicionamiento CSS en 10 pasos

02/06/2010

Este es un magnífico tutorial de BarelyFitz Design, en el que se explica mediante ejemplos gráficos muy prácticos, las diferentes propiedades disponibles en CSS para posicionamiento de capas: STATIC, POSITION: RELATIVE, POSITION: ABSOLUTE y FLOAT.

Esto es algo que vimos anteriormente, pero lo didáctico de este trabajo me ha hecho pensar que merecía la pena el montaje y traducción, así que ahí lo teneis.



1. POSITION:STATIC


id = div-before

id = div-1

id = div-1a

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Integer pretium dui sit amet felis. Integer sit amet diam. Phasellus ultrices viverra velit.

id = div-1b

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Integer pretium dui sit amet felis. Integer sit amet diam. Phasellus ultrices viverra velit. Nam mattis, arcu ut bibendum commodo, magna nisi tincidunt tortor, quis accumsan augue ipsum id lorem.

id = div-1c

id = div-after


El posicionamiento por defecto para todos los elementos es STATIC, que hace que el elemento no se reposicione y ocupe su posición normal en el documentos, según el flujo del código.


Habitualmente no se debería especificar, a menos que necesites reponer la posición normal tras haber reubicado con otra propiedad.


#div-1 {
position:static;
}

2. POSITION:RELATIVE


id = div-before

id = div-1

id = div-1a

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Integer pretium dui sit amet felis. Integer sit amet diam. Phasellus ultrices viverra velit.

id = div-1b

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Integer pretium dui sit amet felis. Integer sit amet diam. Phasellus ultrices viverra velit. Nam mattis, arcu ut bibendum commodo, magna nisi tincidunt tortor, quis accumsan augue ipsum id lorem.

id = div-1c

id = div-after


Si especificas POSITION:RELATIVE, entonces podrás usar TOP ó BOTTOM y LEFT ó RIGHT, para mover el elemento con respecto a la posición que debería ocupar normalmente en el documento.


Movamos el div-1 20 pixels abajo y 40 pixels a la izquierda:


#div-1 {
position:relative;
top:20px;
left:-40px;
}

Date cuenta de que el espacio donde div-1 debería estar si no se hubiera movido, continúa en su sitio y ahora es un espacio vacío. El siguiente elemento (div-after) tampoco se mueve cuando desplazamos div-1. Eso es porque div-1 todavía ocupa ese espacio original en el documento, incluso después de haberlo movido.


Puede parecer que POSITION:RELATIVE no es muy útil, pero servirá para una tarea importante que veremos más adelante.

3. POSITION:ABSOLUTE


id = div-before

id = div-1

id = div-1a

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Integer pretium dui sit amet felis. Integer sit amet diam. Phasellus ultrices viverra velit.

id = div-1b

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Integer pretium dui sit amet felis. Integer sit amet diam. Phasellus ultrices viverra velit. Nam mattis, arcu ut bibendum commodo, magna nisi tincidunt tortor, quis accumsan augue ipsum id lorem.

id = div-1c

id = div-after


Cuando especificas POSITION:ABSOLUTE, el elemento se "borra" del documento y se coloca exactamente dónde tu indicaste.


Movamos div-1a a la esquina superior derecha (busca arriba la capa roja):


#div-1a {
position:absolute;
top:0;
right:0;
width:200px;
}

En esta ocasión, cuando "borramos" div-1a, los otros elementos se reposicionan ocupando el hueco que se ha dejado: div-1b, div-1c, y div-after se mueven arriba porque div-1a ya no está allí.


Cómo pretendíamos, div-1a se ha ubicado en la esquina superior derecha. Esto es útil para colocar cualquier elemento directamente dónde queramos, pero hay que tener en cuenta que si no existen otros posicionamientos previos, el navegador lo colocará con respecto a la página.


Para colocar div-1a en una posición relativa a su contenedor (div-1) es para lo que necesitaremos la posición relativa.


Notas:

  • Hay un problema en IE: si especificas una anchura porcentual (como "width:50%"), entonces el ancho se basará en el elemento primario (padre), en lugar de en el elemento de posicionamiento.

4. POSITION:RELATIVE + POSITION:ABSOLUTE


id = div-before

id = div-1

id = div-1a

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Integer pretium dui sit amet felis. Integer sit amet diam. Phasellus ultrices viverra velit.

id = div-1b

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Integer pretium dui sit amet felis. Integer sit amet diam. Phasellus ultrices viverra velit. Nam mattis, arcu ut bibendum commodo, magna nisi tincidunt tortor, quis accumsan augue ipsum id lorem.

id = div-1c

id = div-after


Si fijamos posicionamiento relativo para div-1, cualquier elemento dentro de div-1 será posicionado relativamente a div-1. De esta manera, si fijamos una posición absoluta para div-1a, ahora lo podremos colocar arriba-derecha de div-1 y no de la página:


#div-1 {
position:relative;
}
#div-1a {
position:absolute;
top:0;
right:0;
width:200px;
}

5. Dos columnas con ABSOLUTE


id = div-before

id = div-1

id = div-1a

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Integer pretium dui sit amet felis. Integer sit amet diam. Phasellus ultrices viverra velit.

id = div-1b

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Integer pretium dui sit amet felis. Integer sit amet diam. Phasellus ultrices viverra velit. Nam mattis, arcu ut bibendum commodo, magna nisi tincidunt tortor, quis accumsan augue ipsum id lorem.

id = div-1c

id = div-after







Ahora hemos construido un esquema de dos columnas, usando posicionamiento relativo y absoluto.


#div-1 {
position:relative;
}
#div-1a {
position:absolute;
top:0;
right:0;
width:200px;
}
#div-1b {
position:absolute;
top:0;
left:0;
width:200px;
}

Una ventaja de usar este tipo de posicionamiento, es que podemos colocar elementos en cualquier orden, en cualquier parte de la página, sin importar el orden en que aparecen en el código HTML. Así es cómo hemos puesto div-1b delante de div-1a.


Pero espera, ¿qué ocurre con los otros elementos? Han sido ocultados por los elementos con posición absoluta. ¿Qué podemos hacer para solucionarlo?

6. Dos columnas con ABSOLUTE + HEIGHT


id = div-before

id = div-1

id = div-1a

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Integer pretium dui sit amet felis. Integer sit amet diam. Phasellus ultrices viverra velit.

id = div-1b

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Integer pretium dui sit amet felis. Integer sit amet diam. Phasellus ultrices viverra velit. Nam mattis, arcu ut bibendum commodo, magna nisi tincidunt tortor, quis accumsan augue ipsum id lorem.

id = div-1c

id = div-after


Una solución es incorporar una altura fija a los elementos.


Sin embargo, esta no es una solución viable para la mayoría de diseños, porque normalmente no sabemos a priori cuanto texto va a contener la capa o el tamaño exacto de fuente que usaremos.


#div-1 {
position:relative;
height:250px;
}
#div-1a {
position:absolute;
top:0;
right:0;
width:200px;
}
#div-1b {
position:absolute;
top:0;
left:0;
width:200px;
}

7. FLOAT


id = div-before

id = div-1

id = div-1a

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Integer pretium dui sit amet felis. Integer sit amet diam. Phasellus ultrices viverra velit.

id = div-1b

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Integer pretium dui sit amet felis. Integer sit amet diam. Phasellus ultrices viverra velit. Nam mattis, arcu ut bibendum commodo, magna nisi tincidunt tortor, quis accumsan augue ipsum id lorem.

id = div-1c

id = div-after


Para columnas de alto variable, el posicionamiento absoluto no funciona bien, así que veamos otra solución.


Podemos hacer "flotar" un elemento para colocarlo tan lejos como sea posible a la derecha o a la izquierda y así hacer también que el texto lo rodee. Este sistema se usa habitualmente con imágenes, pero también se puede utilizar con otros elementos más complejos... sobre todo porque es la única herramienta que tenemos para ello!


#div-1a {
float:left;
width:200px;
}

8. Columnas con FLOAT


id = div-before

id = div-1

id = div-1a

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Integer pretium dui sit amet felis. Integer sit amet diam. Phasellus ultrices viverra velit.

id = div-1b

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Integer pretium dui sit amet felis. Integer sit amet diam. Phasellus ultrices viverra velit. Nam mattis, arcu ut bibendum commodo, magna nisi tincidunt tortor, quis accumsan augue ipsum id lorem.

id = div-1c

id = div-after


Si hacemos flotar una columna a la izquierda y luego una segunda columna también a la izquierda, ambas se mostrarán juntas.


#div-1a {
float:left;
width:150px;
}
#div-1b {
float:left;
width:150px;
}

9. Columnas con FLOAT + CLEAR


id = div-before

id = div-1

id = div-1a

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Integer pretium dui sit amet felis. Integer sit amet diam. Phasellus ultrices viverra velit.

id = div-1b

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Integer pretium dui sit amet felis. Integer sit amet diam. Phasellus ultrices viverra velit. Nam mattis, arcu ut bibendum commodo, magna nisi tincidunt tortor, quis accumsan augue ipsum id lorem.

id = div-1c

id = div-after


Después de ubicar elementos con FLOAT, podemos utilizar CLEAR para eliminar en los siguientes elementos ese efecto, de manera que se muestren como si no se hubiera indicado nada (STATIC)


#div-1a {
float:left;
width:190px;
}
#div-1b {
float:left;
width:190px;
}
#div-1c {
clear:both;
}

10. Disclaimer & Recursos


Estos ejemplos son muy sencillos y no provocan la ira de los bugs CSS de IE (muchos).


La siguiente página fue muy valiosa:

Relatively Absolute


Cuando pases por aquí aprovecha para ver también:


Un artículo traducido por Oloman(Oloblogger)
Nota: El enlace original a la "página valiosa", actualmente no funciona.
Recibe por correo las últimas publicaciones.
Teclea tu dirección.


No rights reserved
NINGUN DERECHO RESERVADO
...aunque se agradece un enlace. Si crees que algo aquí vulnera los derechos de otro, mándanos un correo.

El botón que
no hace nada
El botón que no hace nada

Ir Arriba