jueves, 30 de agosto de 2012

NUEVO AUTOR EN AYUDA BLOGGERS: davisdrumkey

Hello World Bloggers!!! Mi nombre es Davis y mi alias es "davisdrumkey", desde hoy seré un nuevo autor en Ayuda Bloggers.

Les contare algo sobre mi... Soy un estudiante de Ingeniería Conectividad y Redes, Telecomunicaciones. Vivo en Santiago de Chile y tengo 22 años.

Soy muy amante en temas del mundo de la tecnología en general. Así como también temas sobre Linux, hacking Ético, Código Libre, Fotografía, Música (Baterista hace ya 8 años) y como no ser amante de lo relacionado en la web, así que compartire algunas gotas de conocimiento en Ayuda Bloggers. Para mi es un gusto estar colaborando en la nube y sobre todo en un blog que estimo.

Así que nos veremos seguido queridos visitantes, un gusto escribirles y también que me lean. Me despido, saludos y buenas vibras!!! 

LARGA VIDA A <!DOCTYPE html>


PD: El primero que comente a que me refiero exactamente con "LARGA VIDA A <!DOCTYPE html>" se ganara una mención en mi primer articulo :)

miércoles, 29 de agosto de 2012

El problema de los menús que no se despliegan

Toda etiqueta es un rectángulo, si tiene un borde o un color de fondo esto es evidente pero, si no lo tiene, sigue siendo un rectángulo que ocupa un determinado espacio y se ubica en una determinada posición de la página. Esta es la clave de todo, entender eso y además, tener en cuenta que el orden en que son agregadas influirá en su resultado ya que, aunque las veamos ubicadas gráficamente de cierto modo, para el navegador, eso, sólo es un dibujito ya que todos ellos siguen una regla sencilla: para ellos, el orden natural es secuencial, de arriba hacia abajo y de derecha a izquierda.

Es cierto que pueden mostrarse de cualquier otro modo, para eso están las propiedades (float, position, margin, etc) pero, al navegador, no le interesan esos detalles y eso, justamente, es lo que puede crear conflictos o problemas.

Si toda etiqueta es un rectángulo real (tiene ancho y tiene alto aunque no los definamos) y armamos algo como esto, donde simplemente hay dos DIVs, uno arriba y otro abajo y al de abajo lo "subimos" un poco con un margen negativo, tal vez, dependiendo de las reglas de estilo que tengamos, el enlace que está allí, no funcionará. Si ponen el cursor encima y tratan de hacer click, no pasará nada, ni siquiera veremos la manito indicativa:

A B C D E F

¿Por qué pasa esto? porque el de arriba está encima del enlace y, aunque es transparente, sus reglas de estilo TAPAN el enlace. Si le pusiéramos un color de fondo, lo veríamos claramente:
ver | restaurar.

¿Cómo se soluciona? Lo lógico sería repasar las reglas de estilo de esas etiquetas ¿No será que uno es demasiado alto y compensamos eso con márgenes negativos? ¿Es necesaria la propiedad position? Las respuestas pueden ser infinitas y no pretendo darlas, todo dependerá y, llegado el caso, siempre nos queda la opción de usar z-index. En este ejemplo, bastaría invertir el orden:


Este mismo problema es el que genera muchísimas consultas sobre menús que no se despliegan aunque, en realidad, no es que no se desplieguen sino que no se ven desplegados.

Si tenemos un contenedor (un DIV) con ese menú que vimos armadito y lo agregamos al header de nuestro sitio, tal vez, dependiendo de dónde lo hayamos puesto y de las reglas de estilo del resto de nuestra página, se verá bien pero ¿no funciona?

  • menu 1
  • menu 2
    • submenu 2.1
    • submenu 2.2
    • submenu 2.3
  • menu 3
    • submenu 3.1
    • submenu 3.2
    • submenu 3.3
  • menu 4
Aliquam erat volutpat. Phasellus ligula augue, hendrerit sit amet pharetra et, auctor nec odio! Nunc placerat facilisis volutpat! Donec nisi elit, convallis nec vestibulum ac, aliquam quis magna! In aliquet arcu eget mi mollis at porta erat condimentum. Pellentesque congue ante non felis fringilla mattis. Morbi urna lectus; laoreet id tempor vitae, pretium id nibh. Sed nisl eros, molestie non luctus nec, pretium nec felis. Praesent pharetra egestas interdum. Quisque consequat placerat mi, in pharetra nisl mattis in. Aenean id orci vel enim ultrices eleifend!

¿Por qué sólo se ve un pedacito? Por el mismo motivo que el enlace del ejemplo anterior no funcionaba aunque, en este caso, no se trata de una etiqueta que es demasiado alta y tapa a la de abajo sino de una etiqueta cuya altura es escasa (UL LI) y que contiene otras que sólo se ven cuando se coloca el cursor encima pero, no tienen espacio suficiente ya que la etiqueta que está debajo (el texto), ocupa ese lugar así que queda encima del menú desplegado.

Otra vez, esto se resuelve con z-index:


¿Y que es z-index? Un numero de orden que sólo se aplica a los elementos que tengan definida la propiedad position como relative, absolute o fixed y, dicho muy livianamente, indica cuál está encima de cuál; por defecto, se "apilan" en el mismo orden en que se encuentran en el código así que en este caso, la segunda (el texto) tiene un valor implícito de z-index, superior a la primera (el menú) y bastaría invertir ese orden para que el menú se viera desplegado.

Dependiendo del caso (he usado muchas veces la palabra depender porque nada de todo esto es una ciencia exacta) deberemos agregarle las propiedades z-index al menú y al div inferior (un valor más alto al menú); o bien, simplemente, sólo agregar la propiedad z-index al menú (una valor cualquiera, no hace falta poner valores exorbitantes):
#mi-menu {
position:relative;
z-index: 100;
}

martes, 28 de agosto de 2012

Consejos y atributos para diseñar la plantilla de tu blog

Si estás en el proceso de crear tu propia plantilla para Blogger, te interesará este artículo ya que contiene algunos elementos útiles para que tu plantilla se vea mucho mas elaborada, junto con algunos datos y solución a los errores más comunes que les sucede a la mayoría.



Para este tutorial, me he dispuesto a hacer una plantilla a partir del tutorial anterior, para ello voy a mostrarles un antes y un después para que comparemos el resultado (El color de los contenedores en algunas imágenes es para poder diferenciar y ubicar cada elemento en la página, no se establecerán en el producto final).

Los márgenes, alineaciones y dimensiones:

Lo primero que debes considerar en la creación del blog, es el tamaño y ubicación que tendrá cada contenedor, recuerda que esto permitirá que distribuyas de forma óptima los elementos en el espacio y así podrás trabajar de forma eficiente cada sección (Véase este artículo). Procura siempre:

  1. Que los márgenes siempre estén bien distribuídos.
  2. El tamaño de cada contenedor debe estar claramente establecido, aprovechando pixel por pixel.
  3. Antes de aplicar un márgen, establece un padding para que puedas comprobar cuánto espacio utilizará el contenedor.
  4. Si lo deseas, puedes establecer los contenedores con un margen personalizado, intenta siempre que estos sean valores los correctos.
  5. Recuerda que hay otros atributos que utilizan espacio y modifican el tamaño de los contenedores, como los bordes, considérelos al momento de definir las dimensiones.

Forma óptima de uso:



Para este ejemplo:

  • Tamaño de la sidebar: 280px(Width)+20px(Padding)=300px
  • Tamaño de las entradas: 640px(Width)+20px(Padding)=660px
  • Ancho del #contenedor-general: 960px;
Si nos damos cuenta, el padding de cada contenedor nos resta 10px tanto a la izquierda como a la derecha, por lo que el ancho del contenedor tiene que ser 20px menos para poder ocupar cada pixel y no dejar espacios en blanco, la suma de 660px y 300px da 960px, el mismo valor establecido en el contenedor.


Configurando la tipografía:

Una de las cosas más importantes y que permite resaltar el contenido del blog, son las fuentes, su tamaño, su color y desde el principio debemos saber cual estableceremos.

A considerar:

  1. Para el texto de las entradas, utiliza fuentes claras que no molesten en la lectura.
  2. No abuses del color, intenta siempre que se adapte a los colores de la plantilla, considera esto una vez que ya tengas lista tu selección de colores y ya los hayas aplicado.
  3. No uses fuentes demasiado grandes, ni demasiado pequeñas, establece un punto de equilibrio que consideres apropiado.


.
Nota: En el ejemplo he utilizado la fuente "Source Sans Pro", disponible desde Google Web Fonts (Ver guía).

Eligiendo los colores óptimos:

Establecer los colores es una de las decisiones más complicadas, ya que necesitas que combinen en el texto, en los contenedores, en el fondo del blog, etc.

Para ayudarlos un poco en esta labor les recomiendo que utilicen ColorCombos, una increíble base de combinaciones de colores óptimas para el diseño de tu sitio, aquí algunos ejemplos:


Observemos la siguiente muestra, para ello utilizaremos colores claros para el fondo del blog y contenedores, el texto tendrá un color oscuro para que haga contraste y no tendrá un impacto negativo:




Importante:

  1. Nunca utilices colores primarios o colores demasiado básicos, esfuérzate en conseguir un color especial.
  2. No sobrecargues la plantilla en exceso mezclando colores, utiliza sólo nos necesarios.
  3. No es necesario que utilices un color único en algún elemento, puedes usar imágenes o gradientes CSS3 (Ver guía).
Manipulando otros elementos del blog:

Recuerda que tu blog posee muchos elementos que pueden ser personalizados, éstos pueden hacer la diferencia al momento de terminar tu plantilla porque con la "brocha gorda" únicamente personalizas lo general, pero los elementos tales como títulos, enlaces, listas, etc. necesitan atributos por igual.

Adjunto una lista de posibles elementos que decorar junto con una guía relevante:

Correcciones de errores:

1. El blog posee un espacio "en blanco" en la zona superior de la página: Si sucede esto, la forma más sencilla de corregirlo es suprimiendo tanto el padding y el margin del <body> y del </html>:
html, body {
margin:0; /*Márgenes nulos*/
padding:0; /*Espaciado interno nulo */
}

2. El contenido del blog no se mantiene centrado al hacer zoom: Considera establecer un ancho fijo o porcentual y márgenes laterales automáticos en el contenedor del blog:
#contenedor-general {
width:960px; /*Ancho en píxeles, puedes usar em o %*/
margin:0 auto; /* Utilizar un valor automático permite centrar un elemento block o inline-block*/
}

3. Aparece una barra de desplazamiento horizontal en el navegador y las dimensiones no sobrepasan el ancho del monitor: Si esto es un problema, podemos eliminar la barra con el atributo "overflow-x:hidden" en el cuerpo del documento web:
body {
overflow-x:hidden; /*Barra horizontal (eje x) oculta*/
}
4. Al establecer el ancho de la cabecera al 100% de la página, éste se queda del mismo tamaño que el resto de elementos: Por defecto, la plantilla mantendrá el mismo ancho que el #contenedor-general ya que ésta se ubica dentro de este elemento, para solucionar esto es necesario tomar el código y situarlo sobre este <div>:

Antes:
<div id="contenedor-general">      
      <div id="cabecera">
         <b:section id="header" class="header" showaddelement="yes">
                   <b:widget id="Header1" locked="true" title="Cabecera del blog" type="Header"/>
         </b:section>
     </div> 

Después:
<div id="cabecera">
         <b:section id="header" class="header" showaddelement="yes">
                   <b:widget id="Header1" locked="true" title="Cabecera del blog" type="Header"/>
         </b:section>
 </div>  

<div id="contenedor-general">      

5. Si quiero hacer lo mismo del ítem 4 con el pié de página, ¿Qué debo modificar?: Deberás hacer lo mismo, enviar el elemento 1 nivel arriba en la jerarquía:

Antes:
     <div id="pie-de-pagina">
         <b:section id="footer" class="footer" showaddelement="yes">
         </b:section>
     </div>


</div>
</body>
Después:
</div>
    <div id="pie-de-pagina">
         <b:section id="footer" class="footer" showaddelement="yes">
         </b:section>
     </div>


</body>


Otros recursos para facilitar la creación de tu plantilla:

  1. Eliminar el clicktrap en Blogger.
  2. Aumentar el tamaño del editor HTML en la nueva versión de Blogger.
  3. 5 Extensiones de Firefox para usar en Blogger (Relevante Firebug).


¿Necesitas otra ayuda o consejo? Cualquier otra duda o problema en la que necesites un poco de orientación, coméntala y se incluirá en la entrada.

Nota: Esta guía se renovará constantemente para añadir otros elementos, dentro de los que están pendientes:

  1. Atributos de un blog moderno.
  2. Otras correcciones de errores.
  3. Cómo usar Firebug en Blogger (Vídeotutorial explicativo). 
  4. jQuery y uso de scripts en determinados elementos.
  5. Añadir elementos tales como un menú sencillo y animado.
Los temas que aún no se han tratado y necesiten una elaboración mas detallada se crearán en una entrada adicional, y si te ha gustado este artículo por favor compártelo en tus redes sociales, publicar se ha vuelto un tanto dificil.

lunes, 27 de agosto de 2012

Blogger y la nueva opción: deshabilitar la navbar

Hace unos días, Felipe Calvo me preguntaba si sabía que ya era posible deshabilitar totalmente la navbar de Blogger desde la misma ventana de diseño y confieso que no lo sabía.

Es que uno es un animal de costumbres y desde hace años, lo primero que se hace en un blog es eliminarla manualmente, agregando el CSS correspondiente aunque ... en realidad nunca se elimina sino que se la mantiene oculta con lo cual, el código, que Blogger agregaba de modo automático, seguía siendo parte del código fuente de la página. Ahora, con esta opción, ese código desaparece casi por completo.


El cambio, no sólo se ve allí, también se ve en la plantilla misma que ahora incluye una nueva sección:
<b:section class='navbar' id='navbar' maxwidgets='1' showaddelement='no'>
<b:widget id='Navbar1' locked='false' title='NavBar ' type='Navbar'/>
</b:section>
Y si desplegamos el contenido, veremos todo el código que antes se agregaba de modo directo.


Si deshabilitamos la navbar, el código de la plantilla sigue allí pero ya no se ejecuta y, obviamente, lo primero que uno piensa es, genial, la deshabilitamos y listo pero ... Blogger es Blogger y, por lo que he visto, cuando hacemos eso, desaparecen los íconos de edición rápida del blog.

¿Será un error? ¿Será que funciona así? En todo caso, hay que tener cuidado porque Blogger es mudo y jamás informa de estos cambios porque, claro, nosotros somos adivinos

domingo, 26 de agosto de 2012

Slideshow de imágenes como fondo del blog


En la entrada anterior vimos cómo hacer que la imagen de fondo del blog cubra toda la pantalla sin importar la resolución del monitor. El método que usamos con jQuery es un plugin llamado BackStretch el cual también tiene la opción de crear un slideshow de imágenes como fondo del blog sin perder la cualidad de ajustarse al ancho y alto de la pantalla.
Lo que haremos en esta en estrada es justamente eso, que el fondo del blog tenga imágenes que vayan cambiando, todas con un efecto de desvanecimiento entre cada transición.

Puedes ver un ejemplo en este blog de pruebas.

Para poner este slideshow de imágenes en el fondo del blog entra en la Edición HTML de la plantilla y antes de </head> agrega el siguiente código:
<script src='http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js' type='text/javascript'/>
<script>
//<![CDATA[
/*
* jQuery Backstretch
* Version 1.2.8
* http://srobbin.com/jquery-plugins/jquery-backstretch/
* Add a dynamically-resized background image to the page
* Copyright (c) 2012 Scott Robbin (srobbin.com)
* Licensed under the MIT license
* https://raw.github.com/srobbin/jquery-backstretch/master/LICENSE.txt
*/
;(function(a){a.backstretch=function(p,b,l){function s(){if(p){var b;0==c.length?c=a("<div />").attr("id","backstretch").css({left:0,top:0,position:m?"fixed":"absolute",overflow:"hidden",zIndex:-999999,margin:0,padding:0,height:"100%",width:"100%"}):c.find("img").addClass("deleteable");b=a("<img />").css({position:"absolute",display:"none",margin:0,padding:0,border:"none",zIndex:-999999,maxWidth:"none"}).bind("load",function(d){var b=a(this),e;b.css({width:"auto",height:"auto"});e=this.width||a(d.target).width();d=this.height||a(d.target).height();n=e/d;q();b.fadeIn(g.speed,function(){c.find(".deleteable").remove();"function"==typeof l&&l()})}).appendTo(c);0==a("body #backstretch").length&&(0===a(window).scrollTop()&&window.scrollTo(0,0),a("body").append(c));c.data("settings",g);b.attr("src",p);a(window).unbind("resize.backstretch").bind("resize.backstretch",function(){"onorientationchange"in window&&window.pageYOffset===0&&window.scrollTo(0,1);q()})}}function q(){try{j={left:0,top:0},rootWidth=h=o.width(),rootHeight=r?window.innerHeight:o.height(),f=h/n,f>=rootHeight?(k=(f-rootHeight)/2,g.centeredY&&(j.top="-"+k+"px")):(f=rootHeight,h=f*n,k=(h-rootWidth)/2,g.centeredX&&(j.left="-"+k+"px")),c.css({width:rootWidth,height:rootHeight}).find("img:not(.deleteable)").css({width:h,height:f}).css(j)}catch(a){}}var t={centeredX:!0,centeredY:!0,speed:0},c=a("#backstretch"),g=c.data("settings")||t;c.data("settings");var o,m,r,n,h,f,k,j;b&&"object"==typeof b&&a.extend(g,b);b&&"function"==typeof b&&(l=b);a(document).ready(function(){var b=window,d=navigator.userAgent,c=navigator.platform,e=d.match(/AppleWebKit\/([0-9]+)/),e=!!e&&e[1],f=d.match(/Fennec\/([0-9]+)/),f=!!f&&f[1],g=d.match(/Opera Mobi\/([0-9]+)/),h=!!g&&g[1],i=d.match(/MSIE ([0-9]+)/),i=!!i&&i[1];o=(m=!((-1<c.indexOf("iPhone")||-1<c.indexOf("iPad")||-1<c.indexOf("iPod"))&&e&&534>e||b.operamini&&"[object OperaMini]"==={}.toString.call(b.operamini)||g&&7458>h||-1<d.indexOf("Android")&&e&&533>e||f&&6>f||"palmGetResource"in window&&e&&534>e||-1<d.indexOf("MeeGo")&&-1<d.indexOf("NokiaBrowser/8.5.0")||i&&6>=i))?a(window):a(document);r=m&&window.innerHeight;s()});return this}})(jQuery);
//]]>
</script>
<script>
//<![CDATA[
var images = [
 "URL de la imagen",
 "URL de la imagen",
 "URL de la imagen",
 "URL de la imagen",
 "URL de la imagen",
  ];

  $(images).each(function(){
 $('<img/>')[0].src = this;
  });
  var index = 0;
$.backstretch(images[index], {speed: 1000});
  var slideshow = setInterval(function() {
  index = (index >= images.length - 1) ? 0 : index + 1;
    $.backstretch(images[index]);
  }, 5000);
//]]>
</script>
Ahí agrega las URLs de las imágenes que estarán como fondo del blog.
Si quisieras añadir más imágenes sólo agrega después de var images = [ otra línea como esta:
 "URL de la imagen",

Las imágenes irán pasando según el orden que las hayas puesto, si quisieras que éstas fueran al azar entonces cambia la segunda parte del código por este:
<script>
//<![CDATA[
var images=new Array();
images[ 1 ]="URL de la imagen";
images[ 2 ]="URL de la imagen";
images[ 3 ]="URL de la imagen";
images[ 4 ]="URL de la imagen";
images[ 5 ]="URL de la imagen";

  Array.prototype.shuffle = function() {
  var len = this.length;
  var i = len;
  while (i--) {
  var p = parseInt(Math.random()*len);
  var t = this[i];
  this[i] = this[p];
  this[p] = t;
  }
};

  images.shuffle();
  $(images).each(function(){
 $('<img/>')[0].src = this;
  });
  var index = 0;
$.backstretch(images[index], {speed: 1000});
  var slideshow = setInterval(function() {
  index = (index >= images.length - 1) ? 0 : index + 1;
    $.backstretch(images[index]);
  }, 5000);
//]]>
</script>
También puedes añadir más imágenes agregando una línea como esta:
images[ 6 ]="URL de la imagen";
Sin embargo verás que en este caso hay unos números consecutivos en color azul, por lo que si agregas otra será la 6, luego la 7, etc.

En ambos casos puedes modificar el tiempo que dura cada imagen en el 5000 que está al final del script.
La ventaja de este slideshow en el fondo del blog es que las imágenes se redimensionarán automáticamente al tamaño del monitor, así que en cualquier resolución se deberá ver bien.

No está de más recordar que si usas Scriptaculous deberás hacer unos cambios, y si ya usas jQuery deberás dejar sólo una versión.


Página del autor | BackStretch

Transición con CSS3


Los efectos en imágenes siempre resultan atrayentes, este en concreto muestra una transición suave utilizando CSS3.

Para hacerlo necesitamos dos imágenes de la misma medida y que esa medida esté indicada en los estilos, es decir, que todas las imágenes a mostrar con este efecto tendrán la misma medida.

Los estilos los añadimos en plantilla edición de HTML justo antes de ]]></b:skin>

Si la imagen la añadimos en un gadget de HTML también podemos añadir los estilos en su interior sin olvidar envolverlos con las etiquetas <style> y </style>

a.nowandthen{
position:relative;
display: block;
overflow:hidden;
cursor: pointer;
width: 550px; /* anchura de la imagen */
height: 434px; /* altura de la imagen */

}

a.nowandthen img{
position:absolute;
left:0;
top:0;
width: 100%;
height: 100%;
-moz-transition: all 0.5s ease; /* enable transition */
-webkit-transition: all 0.5s ease;
-o-transition: all 0.5s ease;
-ms-transition: all 0.5s ease;
transition: all 0.5s ease;
z-index: 2;
clip: rect(0,550px,434px,0); /* clip values should be rect(0,image_width,image_height,0) */
}

a.nowandthen img:nth-of-type(2){ /* hide "after" image beneath "before" so it's initially out of view */
z-index: 1;
}

a.nowandthen:hover img:nth-of-type(1){ /* clip "before" image to reveal "after" */
clip: rect(0,0,434px,0); /* clip values should be rect(0,0,image_height,0) */
opacity: 0;
}

a.nowandthen.alt{
width: 300px; /* set width of image container */
height: 354px; /* set height of image container */
}

a.nowandthen.alt img{
clip: rect(0,300px,354px,0); /* clip values should be rect(0,image_width,image_height,0) */
}

a.nowandthen.alt:hover img:nth-of-type(1){
clip: rect(0,0,354px,0); /* clip values should be rect(0,0,image_height,0) */
}

Las imágenes las añadimos ahí donde deseamos mostrarlas, ya sea un post o un gadget.
<a class="nowandthen">
<img src="Url-imagen-beforejt.jpg" alt="">
<img src="Url-imagen-afteruc.jpg" alt="">
</a>

REFERENCIADynamicdrive



sábado, 25 de agosto de 2012

jueves, 23 de agosto de 2012

repost.us: Facilitar la inclusión de entradas

Repost.us es un servicio que permite que los visitantes, incluyan entradas de nuestro blog en otros sitios, de manera sencilla y sin los conflictos que suele traer este tipo de copia porque lo hace generando un iframe [más información].

Algunas de las ventajas que dice ofrecer el sistema:
  • es un enlace a la entrada original y evita el contenido duplicado.
  • si la entrada se actualiza, el servicio actualizará todos los iframes insertados
  • se puede personalizar y definir si se verán completos o no
  • es posible excluir sitios o permitir que sólo algunos puedan utilizar el sistema
  • permite agregar anuncios publicitarios
Para utilizarlo, se debe crear una cuenta gratuita y luego, ir completando las opciones; básicamente, establecer el sitio web donde queremos aplicar el sistema y luego, copiar y pegar el código que os dan que tiene dos partes; la primer, la pondremos antes de <:/head>
<script src='http://static.1.rp-api.com/rjs/repostus.js' type='text/javascript' />
<meta content='0000000000000000000' name='RepostUsAPIKey' />
y la segunda en donde quisiéramos mostrar alguno de los botones disponibles que, normalmente, sería en alguna parte del footer de las entradas:
<a class='rpuRepostUsButton' expr:href='&quot;https://secure.repost.us/syndicate/create?url=&quot; + data:post.url'>
<img title='Repost This' alt='Repost This' src='http://secure.repost.us/images/button-hrz-sml.png'/>
</a>
El servicio puede agregarse a Blogger sin problemas y quienes usan Wordpress disponen de un plugin que simplifica la tarea.




En general, es conveniente ingresar a la opción llamada Selectors y allí, agregar las clases donde se encuentran nuestras entradas:
Article Title: .post-title
Article Boded .post-body
la siguiente página, nos permitirá verificar si todo es correcto, probando con cualquier URL de nuestro blog.

REFERENCIAS:labrujulaverde.com

El mercado persa del Social Media

posicionamiento web

Cada día me encuentro con mas discusión sobre como profesionales y empresas de social media trabajan. Nadie suele dar nombres en publico, pero esta claro que muchos se dedican mas a criticar que a trabajar para sus clientes.

No me parece mal esa discusión, incluso creo que aun no es lo suficientemente fuerte para empezar a limpiar un sector que desde sus inicios empezó mal, como cualquier inicio de una nueva actividad.

Hubo quien se dio cuenta desde el principio que podría ser un buen nicho para asentarse y hay quienes se han ido incorporando mas tarde. Ese hecho no ha supuesto un problema, lo que si ha supuesto un problema es que al ser un nuevo sector, desconocido para todos, se incorporan a el perfiles muy diferentes, desde diseñadores, programadores y usuarios avezados pasando por periodistas, relaciones publicas, gente de marketing, recursos humanos, etc…

Esa diversidad de perfiles, ninguno con experiencia en ese sector, no se puede tener experiencia en algo que acababa de nacer, esta haciendo que un nuevo mercado que podría emplear a bastantes personas, sea como un mercado persa que genera la desconfianza de sus posibles clientes.

Si a la desconfianza que genera a cualquier marca un nuevo sector donde poder expandirse, le unimos la diversidad de mensajes, la diversidad de perfiles, etc nos encontramos con lo que tenemos ahora… el mercado persa.

Mi opinión es que desde el principio el mensaje esta equivocado, no se trata de hablar de redes sociales y su uso, hoy cualquier empresa o profesional debe estar en ella, hay que hablar de presencia en red y posicionamiento web. La presencia en red va mucho mas allá de una pagina en Facebook, de twittear o de tener en blog.

No se trata de tener mas seguidores, mas me gusta, mas +1, eso es un añadido, cuando se trata de empresas lo que quieren ver es el retorno de esa inversión, el famoso ROI, pero si somos sinceros lo que quieren es ganar dinero a través de esa presencia y eso no se consigue solo con acciones aisladas en redes sociales.

Creo que profesionales o agencias que realmente lo estén haciendo bien hay muy pocas y no hacen mucho ruido con sus logros, todo lo contrario de la mayoría que intentan hacer el mayor ruido posible para alcanzar clientes, clientes que acaban escarmentados y a los que es muy difícil recuperar.

En un sector donde uno mas uno unas veces es dos, otras tres y otras cero, donde aun hay pocas cosas que estén claras que funcionen siempre igual, que depende de algo tan variable como los usuarios, de su interpretación de lo escrito, de sus ganas de crearte una crisis, etc, no se debería además sumarle la incompetencia de muchos.

Los profesionales y empresas deben saber que este nicho depende de tantos factores que es imposible de controlar, deben saber que aun así deben estar en el, pero deben empezar a exigir.

Los profesionales y agencias que se dedican a el deben pensar que de seguir así lo único que consiguen es viciar un nuevo sector emergente, que todo lo que no pase por asociar sus ingresos a resultados medibles para sus clientes es pan para hoy y hambre para mañana.

Quienes se decidan a dar el paso tendrán futuro ¿alguien se atreve? Yo conozco alguna que si lo hace…

martes, 21 de agosto de 2012

Cinco selectores especiales

Estos son cinco selectores que se pueden utilizar para crear reglas de estilo que afecten a situaciones específicas (Más información: 1 | 2 | 3)

Todos se utilizan del mismo modo, se aplican a etiquetas, clase o ids y lo que permiten es establecer las propiedades basándose es el contenido de un atributo cualquiera.

Empecemos con un ejemplo simple; esto, haría que los textos de las etiquetas P se vieran de color verde:
p {color:green;}
y esto, haría que se vieran de color amarillo sólo si esa etiqueta tuviera un atributo title:
p[title] {color:yellow;}
lo mismo podría hacerse con cualqueir otro (href src class target alt) y la sintaxis general es:
[atributo]
Pero los selectores permiten mucho más ya que podemos aplicar las reglas de modo más amplio.

[atributo=valor]
de este modo, aplicamos una regla de estilo solo si el atributo es EXACTAMENTE IGUAL al valor

.demo[title="rojo exacto"] {color:red;}
title="rojo" : NO ES EXACTOtitle="rojo exacto" : ESTE SI


[atributo|=valor]
con el carácter | el atributo debe ser EXACTAMENTE IGUAL al valor o este tiene un guión por lo que se aplicará, por ejemplo a rojo-123, rojo-algo, etc.

.demo[title|='rojo'] {color:red;}
title="rojo" : ES EXACTOtitle="no es rojo" : ESTE NOtitle="rojo-123" : incluye guión


[atributo^=valor]
con el carácter ^ detectamos todos los atributos que COMIENZAN con ese valor:

.demo[title^='rojo'] {color:red;}
title="no es rojo" : NOtitle="rojo y algo más" : SI


[atributo$=valor]
con el carácter $ detectamos todos los atributos que TERMINAN con ese valor

.demo[title$='rojo'] {color:red;}
title="este es rojo" : SItitle="rojo y algo más" : NO


[atributo*=valor]
el caracter * sirve de comodín y de este modo, detectamos un atributo que contenga ese valor en cualquier parte:

.demo[title*='rojo'] {color:red;}
title="verde amarillo azul"title="verde rojo azul"title="también es rojo"

domingo, 19 de agosto de 2012

Muchas animaciones con CSS y mucha paciencia

Las animaciones con CSS parecen engorrosas porque son engorrosas; no es que sean tan difíciles como parecen sino que se nos complica usarlas por dos motivos, constantemente aparecen nuevas propiedades y , sobre todo, para usarlas, deben multiplicarse las reglas porque cada navegador requiere que se escriban las reglas incluyendo su prefijo y eso hace que una cosa que debería ser simple, se transforme en una larga lista que nos asusta.

De nada sirve quejarse, es lo que hay ... por ahora.

Si vamos a utilizarlas o queremos experimentar con ellas, animate.css es una buena ayuda porque allí, han resumido una larga lista de reglas estilos con un surtido enorme de animaciones que pueden usarse en los navegadores que las comprenden (Firefox, Chrome, Safari, Opera, IE10) y que no tendrán efecto en el resto.

Las animaciones pueden ser descargadas en conjunto o seleccionar sólo algunas y lo que obtendremos en un archivo de extensión CSS que podemos abrir con el block de notas y copiar y pegar en nuestra plantilla junto con el resto de las reglas de estilo o entre etiquetas <style> </style>..

Acá hay unos pocos ejemplos; coloco un HTML como este:
<div id="ejemploANI">
... un contenido cualquiera ...
</div>
Y le pondré propiedades de estilo para que quede fijo:
#ejemploANI {
left: 50%;
margin-left: -320px;
opacity:0; /* lo mantengo oculto */
position: fixed;
top: 200px;
width: 400px;
z-index: 1000;
/* y cualquier propiedad gráfica */
background-color: #445566;
border-radius: 50px;
box-shadow: 0 0 10px #ABC inset;
color: #FFF;
font-size: 20px;
padding: 20px 0;
text-align: center;
/* las reglas genericas de la animación */
-moz-animation-fill-mode: both; -moz-animation-duration: 1s; /* Firefox */
-webkit-animation-fill-mode: both; -webkit-animation-duration: 1s; /* Chrome/Safari */
-o-animation-fill-mode: both; -o-animation-duration: 1s; /* Opera */
-ms-animation-fill-mode: both; -ms-animation-duration: 1s; /* IE10 */
animation-fill-mode: both; animation-duration: 1s; /* w3.org */
}
Ahora, nos faltarían las animaciones; en este caso solo uso cuatro:

lightSpeedIn hará que el DIV aparezca de derecha a izquierda y lightSpeedOut hará que "se vaya" en al misma dirección; para eso, bastaría agregarle la clase al DIV:
<div id="ejemploANI" class="lightSpeedIn"">
o bien
<div id="ejemploANI" class="lightSpeedOut">
¿Cómo hacer eso? Dependerá del uso que queramos darle; por ejemplo, podemos hacer que aparezca y desaparezca haciendo click en alguna parte:
<a href="javascript:void(0);" onclick="document.getElementById('ejemploANI').className = 'NOMBRE_CLASE'> click acá </a>

¿Y el CSS de la animación? Sólo uno a manera de ejemplo.

@-moz-keyframes lightSpeedIn {
0% { -moz-transform: translateX(100%) skewX(-30deg); opacity: 0; }
60% { -moz-transform: translateX(-20%) skewX(30deg); opacity: 1; }
80% { -moz-transform: translateX(0%) skewX(-15deg); opacity: 1; }
100% { -moz-transform: translateX(0%) skewX(0deg); opacity: 1; }
}
@-webkit-keyframes lightSpeedIn {
0% { -webkit-transform: translateX(100%) skewX(-30deg); opacity: 0; }
60% { -webkit-transform: translateX(-20%) skewX(30deg); opacity: 1; }
80% { -webkit-transform: translateX(0%) skewX(-15deg); opacity: 1; }
100% { -webkit-transform: translateX(0%) skewX(0deg); opacity: 1; }
}
@-o-keyframes lightSpeedIn {
0% { -o-transform: translateX(100%) skewX(-30deg); opacity: 0; }
60% { -o-transform: translateX(-20%) skewX(30deg); opacity: 1; }
80% { -o-transform: translateX(0%) skewX(-15deg); opacity: 1; }
100% { -o-transform: translateX(0%) skewX(0deg); opacity: 1; }
}
@keyframes lightSpeedIn {
0% { transform: translateX(100%) skewX(-30deg); opacity: 0; }
60% { transform: translateX(-20%) skewX(30deg); opacity: 1; }
80% { transform: translateX(0%) skewX(-15deg); opacity: 1; }
100% { transform: translateX(0%) skewX(0deg); opacity: 1; }
}
.lightSpeedIn {
-moz-animation-name: lightSpeedIn; -moz-animation-timing-function: ease-out;
-webkit-animation-name: lightSpeedIn; -webkit-animation-timing-function: ease-out;
-o-animation-name: lightSpeedIn; -o-animation-timing-function: ease-out;
animation-name: lightSpeedIn; animation-timing-function: ease-out;
}
Buenos dias, tardes, noches ...

Galería de imágenes con categorías sólo con CSS3

Haciendo uso de distintos atributos, selectores y pseudo-selectores CSS3 podemos hacer cosas increíbles sin necesidad de interactuar con javascript, y en este experimento desarrollado por Roman Komarov, podemos apreciar un sistema de filtración de elementos basado en pseudo-selectores que sin duda es bastante simple pero que a su vez puede utilizarse en el desarrollo web de forma bastante efectiva.

Observar el código fuente de esta creación puede ser un poco complicado y por ello decidí por utilizar una síntaxis propia, además de aplicar un efecto distinto a los elementos.

Ejemplo 1: 




Ejemplo 2: 





Como puedes apreciar he utilizado como ejemplo una tienda digital, pero puedes utilizarla como una galería de imágenes personales o de la forma que quieras, todo depende de tu creatividad.


El tutorial:

Paso 1: Añadir los atributos y elementos en la plantilla:

En "Plantilla | Edición HTML" deberás buscar la siguiente línea:
]]></b:skin>
Arriba de ésta pega el siguiente código dependiendo del efecto que desees aplicar:

Para el efecto del ejemplo 1:
#galeria-selectiva {
    background:url(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjqV9ImwbEWyfedF_DytgDViekmxNGCLWnFSb3P-cyX37Ly81dQTprWHpjMoBZdhY9JJR2czj_gPdVajtqYUk3zxwwT_vyj8z5qMYBeB-YQ1xLHcDQQkLCTc5a8nrWI-kc03ozG8fIShqY/s1600/granulado.jpg);
    width:92%;
    margin:0 auto 20px;
    padding:10px;
    box-shadow:0 0 1px #CCC;
    border:1px solid #fff;
}
#galeria-selectiva input {
    background:url(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglXQIGqLzx_kzZjKY0Y7cygJMn7fqswrN4ex0Yo-6xNrm1LkRqQj6Z9sKT94m8_XYbZDMlzfjWpFvcrYD4sa4ryyX1JhS7Ukoqcq18EhoM38yyi9WvVpv70PJa6rlLyWIurp4lDp9Y0qM/s1600/bkgOverBarraRoja.png) repeat-x top;
    padding:2px 3px 2px 3px;
    color:white;
    border:1px solid red;
    cursor:pointer;
    text-shadow:none;
    border-radius:2px;
    text-shadow:0 0 1px red;
    box-shadow:none;
}

#galeria-selectiva img {
    padding:4px 4px 20px 4px;
    box-shadow:0 0 3px #666;
    border:1px solid #FFF;
    float:left;
    -moz-transition: 0.2s;
    margin:10px 5px 10px 0;
    background-color: rgba(255, 255, 255, 0.95)
    -webkit-transition: 0.2s;
    -o-transition:0.s2;
    transition: 0.2s;
    width:90px;
    height:auto;
    cursor:pointer;
}


.categoria1:focus ~ .clase4 {opacity:0.2;}
.categoria1:focus ~ .clase3 {opacity:0.2;}
.categoria1:focus ~ .clase2 {opacity:0.2;}
.categoria1:focus ~ .clase1 {opacity:1;}


.categoria2:focus ~ .clase4 {opacity:0.2;}
.categoria2:focus ~ .clase3 {opacity:0.2;}
.categoria2:focus ~ .clase2 {opacity:1;}
.categoria2:focus ~ .clase1 {opacity:0.2;}

.categoria3:focus ~ .clase4 {opacity:0.2;}
.categoria3:focus ~ .clase3 {opacity:1;}
.categoria3:focus ~ .clase2 {opacity:0.2;}
.categoria3:focus ~ .clase1 {opacity:0.2;}


.categoria4:focus ~ .clase4 {opacity:1;}
.categoria4:focus ~ .clase3 {opacity:0.2;}
.categoria4:focus ~ .clase2 {opacity:0.2;}
.categoria4:focus ~ .clase1 {opacity:0.2;}

Para el efecto del ejemplo 2:

#galeria-selectiva {
    background:url(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjqV9ImwbEWyfedF_DytgDViekmxNGCLWnFSb3P-cyX37Ly81dQTprWHpjMoBZdhY9JJR2czj_gPdVajtqYUk3zxwwT_vyj8z5qMYBeB-YQ1xLHcDQQkLCTc5a8nrWI-kc03ozG8fIShqY/s1600/granulado.jpg);
    width:92%;
    margin:0 auto 20px;
    padding:10px;
    box-shadow:0 0 1px #CCC;
    border:1px solid #fff;
}
#galeria-selectiva input {
    background:url(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglXQIGqLzx_kzZjKY0Y7cygJMn7fqswrN4ex0Yo-6xNrm1LkRqQj6Z9sKT94m8_XYbZDMlzfjWpFvcrYD4sa4ryyX1JhS7Ukoqcq18EhoM38yyi9WvVpv70PJa6rlLyWIurp4lDp9Y0qM/s1600/bkgOverBarraRoja.png) repeat-x top;
    padding:2px 3px 2px 3px;
    color:white;
    border:1px solid red;
    cursor:pointer;
    text-shadow:none;
    border-radius:2px;
    text-shadow:0 0 1px red;
    box-shadow:none;
}

#galeria-selectiva img {
    padding:4px 4px 20px 4px;
    box-shadow:0 0 3px #666;
    border:1px solid #FFF;
    -moz-transition: 0.2s;
    float:left;
    margin:10px 5px 10px 0;
    background-color: rgba(255, 255, 255, 0.95)
    -webkit-transition: 0.2s;
    -o-transition:0.s2;
    transition: 0.2s;
    width:90px;
    height:auto;
    cursor:pointer;
}


.categoria1:focus ~ .clase4 {display:none;}
.categoria1:focus ~ .clase3 {display:none;}
.categoria1:focus ~ .clase2 {display:none;}
.categoria1:focus ~ .clase1 {display:block;}


.categoria2:focus ~ .clase4 {display:none;}
.categoria2:focus ~ .clase3 {display:none;}
.categoria2:focus ~ .clase2 {display:block;}
.categoria2:focus ~ .clase1 {display:none;}

.categoria3:focus ~ .clase4 {display:none;}
.categoria3:focus ~ .clase3 {display:block;}
.categoria3:focus ~ .clase2 {display:none;}
.categoria3:focus ~ .clase1 {display:none;}


.categoria4:focus ~ .clase4 {display:none;}
.categoria4:focus ~ .clase3 {display:none;}
.categoria4:focus ~ .clase2 {display:none;}
.categoria4:focus ~ .clase1 {display:block;}

Paso 2: Añadir la galería en el blog:

En alguna sección de tu plantilla, o en alguna entrada deberás pegar el siguiente código:
<div id="galeria-selectiva">
<!--CONTROLES-->
<input type="button" class="categoria1" value="NOMBRE PRIMERA CATEGORIA" />
<input type="button" class="categoria2" value="NOMBRE SEGUNDA CATEGORIA" />
<input type="button" class="categoria3" value="NOMBRE TERCERA CATEGORIA" />
<input type="button" class="categoria4" value="NOMBRE CUARTA CATEGORIA" /> <br /><br />
<!--CONTROLES-->


<img class="clase4" src="url-categoria-clase4" />

<img class="clase2" src="url-categoria-clase2" />

<img class="clase2" src="url-categoria-clase2" />

<img class="clase3" src="url-categoria-clase3" />

<img class="clase1" src="url-categoria-clase1" />

<img class="clase1" src="url-categoria-clase1" />

<img class="clase1" src="url-categoria-clase1" />

<img class="clase2" src="url-categoria-clase2" />

<img class="clase3" src="url-categoria-clase3" />

<img class="clase4" src="url-categoria-clase4" />
<div style="clear:both;"></div>

</div>
Reemplaza los valores destacados y listo, respetando que la claseX apuntará a la categoríaX.

Importante:

Si deseas añadir más categorías, recuerda añadir en el código CSS una nueva regla en cada categoría, deberá quedar de la siguiente forma:

.categoria5:focus ~ .clase5 {opacity:1;} /*Clase destacada*/
.categoria5:focus ~ .clase4 {opacity:0.2;}
.categoria5:focus ~ .clase3 {opacity:0.2;}
.categoria5:focus ~ .clase2 {opacity:0.2;}

.categoria5:focus ~ .clase1 {opacity:0.2;}

.categoria4:focus ~ .clase5 {opacity:0.2;}
.categoria4:focus ~ .clase4 {opacity:1;} /*Clase destacada*/
.categoria4:focus ~ .clase3 {opacity:0.2;}
.categoria4:focus ~ .clase2 {opacity:0.2;}
.categoria4:focus ~ .clase1 {opacity:0.2;}

.categoria3:focus ~ .clase5 {opacity:0.2;}
.categoria3:focus ~ .clase4 {opacity:1;} /*Clase destacada*/
.categoria3:focus ~ .clase3 {opacity:0.2;}
.categoria3:focus ~ .clase2 {opacity:0.2;}
.categoria3:focus ~ .clase1 {opacity:0.2;}

.categoria3:focus ~ .clase5 {opacity:0.2;}
.categoria3:focus ~ .clase4 {opacity:0.2;}
.categoria3:focus ~ .clase3 {opacity:1;} /*Clase destacada*/
.categoria3:focus ~ .clase2 {opacity:0.2;}
.categoria3:focus ~ .clase1 {opacity:0.2;}

.categoria2:focus ~ .clase5 {opacity:0.2;}
.categoria2:focus ~ .clase4 {opacity:0.2;}
.categoria2:focus ~ .clase3 {opacity:0.2;}
.categoria2:focus ~ .clase2 {opacity:1;}  /*Clase destacada*/
.categoria2:focus ~ .clase1 {opacity:0.2;}

.categoria1:focus ~ .clase5 {opacity:0.2;}
.categoria1:focus ~ .clase4 {opacity:0.2;}
.categoria1:focus ~ .clase3 {opacity:0.2;}
.categoria1:focus ~ .clase2 {opacity:0.2;}
.categoria1:focus ~ .clase1 {opacity:1;} /*Clase destacada*/
El código destacado en negrita corresponde a la nueva categoría (Código añadido), mientras que a las categorías existentes se les ha añadido una nueva línea la cual ha sido destacada en rojo.

También recuerda que el atributo diferente (En este caso "opacity:1") deberá ser el que apunte a la clase que tendrá la opacidad al 100%, en el caso del ejemplo 2, sería básicamente lo mismo, pero en su lugar se utiliza el atributo "display:block" .

Deberás además incluir un quinto <input> al código del paso 2 (Los controles):
<input type="button" class="categoria5" value="NOMBRE QUINTA CATEGORIA" />
 Y para añadir imágenes en esta categoría bastaría con añadirlas de esta forma:
<img class="clase5" src="url-categoria-clase4" />

Tal vez sea un poco complicado añadirlas, pero si lees con atención no deberías tener problemas.


Nota: Esta entrada fué programada para el día 30 de Julio del 2012, el administrador aún no puede atender sus comentarios. Lamento la situación.

Cualquier duda o problema con la edición de esta entrada por favor comentar, debido al escaso tiempo no he podido revisar correctamente y no he podido darme el tiempo de detallar todo.

sábado, 18 de agosto de 2012

Pasado pluscuamperfecto





Cómo hacer que la imagen de fondo del blog cubra toda la pantalla



Una constante pregunta es cómo hacer para que la imagen de fondo del blog siempre ocupe toda la pantalla sin importar la resolución del monitor. Y es que a veces ponemos una imagen de fondo según las medidas de nuestro monitor, y no consideramos que en la actualidad los monitores los hay de todas las resoluciones, muy pequeños y muy grandes. Así que si ponemos una imagen de acuerdo a nuestra pantalla habrá alguien con un monitor mayor que seguramente no verá toda la imagen o la verá repetida, y en el caso de los que usan monitores muy pequeños verán la imagen incompleta.

Aquí veremos dos soluciones a ello, una usando CSS3, y otra con jQuery. Con cualquiera de las dos haremos que la imagen de fondo de la página ocupe toda la pantalla del monitor sin importar la resolución del mismo.

CSS3
La primera opción es usando CSS3, la ventaja con este método es que no sobrecargamos el blog con scripts, usaremos únicamente la propiedad background-size que se encargará de realizar lo que queremos.
La desventaja es que esta propiedad sólo es soportada por los navegadores modernos, así que en el caso de Internet Explorer sólo se verá de la versión 9 en adelante, en los demás navegadores no deberá haber problema.
El método es muy simple, sólo tenemos que ingresar a la Edición HTML de la plantilla, localizar el background que está dentro de body { y reemplazarlo por esto:
background: url(URL de la imagen) no-repeat center center fixed;
background-size: cover;

Se vería más o menos así:
body {
background: url(URL de la imagen) no-repeat center center fixed;
background-size: cover;
margin:0;
color:#000;
font:x-small Georgia Serif;
font-size/* */:/**/small;
font-size: /**/small;
text-align: center;
}

Sólo pon la URL de la imagen y listo.

jQuery
Con este método usaremos jQuery con el plugin BackStretch, la ventaja es que funciona en todos los navegadores, incluyendo IE7 en adelante. La desventaja no es mayor si ya usas jQuery, ya que el plugin en realidad es pequeño. Para usar este método en tu blog entra en la Edición HTML y antes de </head> pega este script:
<script src='http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js' type='text/javascript'/>
<script type='text/javascript'>
//<![CDATA[
/*
* jQuery Backstretch
* Version 1.2.8
* http://srobbin.com/jquery-plugins/jquery-backstretch/
* Add a dynamically-resized background image to the page
* Copyright (c) 2012 Scott Robbin (srobbin.com)
* Licensed under the MIT license
* https://raw.github.com/srobbin/jquery-backstretch/master/LICENSE.txt
*/
;(function(a){a.backstretch=function(p,b,l){function s(){if(p){var b;0==c.length?c=a("<div />").attr("id","backstretch").css({left:0,top:0,position:m?"fixed":"absolute",overflow:"hidden",zIndex:-999999,margin:0,padding:0,height:"100%",width:"100%"}):c.find("img").addClass("deleteable");b=a("<img />").css({position:"absolute",display:"none",margin:0,padding:0,border:"none",zIndex:-999999,maxWidth:"none"}).bind("load",function(d){var b=a(this),e;b.css({width:"auto",height:"auto"});e=this.width||a(d.target).width();d=this.height||a(d.target).height();n=e/d;q();b.fadeIn(g.speed,function(){c.find(".deleteable").remove();"function"==typeof l&&l()})}).appendTo(c);0==a("body #backstretch").length&&(0===a(window).scrollTop()&&window.scrollTo(0,0),a("body").append(c));c.data("settings",g);b.attr("src",p);a(window).unbind("resize.backstretch").bind("resize.backstretch",function(){"onorientationchange"in window&&window.pageYOffset===0&&window.scrollTo(0,1);q()})}}function q(){try{j={left:0,top:0},rootWidth=h=o.width(),rootHeight=r?window.innerHeight:o.height(),f=h/n,f>=rootHeight?(k=(f-rootHeight)/2,g.centeredY&&(j.top="-"+k+"px")):(f=rootHeight,h=f*n,k=(h-rootWidth)/2,g.centeredX&&(j.left="-"+k+"px")),c.css({width:rootWidth,height:rootHeight}).find("img:not(.deleteable)").css({width:h,height:f}).css(j)}catch(a){}}var t={centeredX:!0,centeredY:!0,speed:0},c=a("#backstretch"),g=c.data("settings")||t;c.data("settings");var o,m,r,n,h,f,k,j;b&&"object"==typeof b&&a.extend(g,b);b&&"function"==typeof b&&(l=b);a(document).ready(function(){var b=window,d=navigator.userAgent,c=navigator.platform,e=d.match(/AppleWebKit\/([0-9]+)/),e=!!e&&e[1],f=d.match(/Fennec\/([0-9]+)/),f=!!f&&f[1],g=d.match(/Opera Mobi\/([0-9]+)/),h=!!g&&g[1],i=d.match(/MSIE ([0-9]+)/),i=!!i&&i[1];o=(m=!((-1<c.indexOf("iPhone")||-1<c.indexOf("iPad")||-1<c.indexOf("iPod"))&&e&&534>e||b.operamini&&"[object OperaMini]"==={}.toString.call(b.operamini)||g&&7458>h||-1<d.indexOf("Android")&&e&&533>e||f&&6>f||"palmGetResource"in window&&e&&534>e||-1<d.indexOf("MeeGo")&&-1<d.indexOf("NokiaBrowser/8.5.0")||i&&6>=i))?a(window):a(document);r=m&&window.innerHeight;s()});return this}})(jQuery);
//]]>
</script>
<script>
$.backstretch("URL de la imagen");
</script>
Pon la URL de la imagen donde se indica y listo.
Con este método la carga de la imagen del fondo se hace hasta el final, esto es para que el usuario no tenga que estar esperando a que cargue la imagen para que empiece cargar el blog, así que si en el body { ya utilizas una imagen de fondo se verá primero e instantes después se cargará la del script, por lo que si lo deseas puedes eliminar la imagen que tengas en el body y así dejar que sólo cargue la imagen del script.

Como puedes ver ambos sistemas son fáciles de aplicar, cada uno con sus pros y contras, pero el resultado es el mismo, extender la imagen de fondo para que se ajuste a la pantalla de cualquier monitor sin importar la resolución del mismo.

Recuerda que en el caso del método con jQuery, deberás verificar que no uses Scriptaculous o Mootools, de ser así tendrás que aplicar unos cambios en el script para hacerlos compatibles.
Y si ya usas jQuery recuerda tener sólo una versión, la última.

jueves, 16 de agosto de 2012

¿Contraseñas en Blogger? No, no y no

Son muchos los que preguntan algo cuya respuesta parece no satisfacerlos o se niegan a aceptarla, probablemente, porque si uno busca en la web, verá cientos de artículos explicando como hacer lo que yo digo que no puede hacerse o, mejor dicho, lo que digo que NO DEBE hacerse y, en este caso, no es un tema de opiniones personales y discutibles, es algo elemental.

La pregunta repetida es ¿cómo restringir el acceso a determinadas páginas? ¿cómo permitir la descarga de ciertos archivos a determinados usuarios? ¿cómo hago para agregar una contraseña a mi blog de Blogger?

Y la respuesta es sencilla, simplemente NO hay manera de hacer eso porque el único lenguaje que podemos usar es JavaScript y con ese lenguaje no existe ninguna forma segura de establecer una contraseña por una razón básica: el código es visible y por lo tanto, cualquiera puede verlo. Es lo mismo que escribir una pregunta y dejar visible al respuesta.

¿Se puede hacer? Si, claro pero ¿para qué? Es completamente inútil. El manejo de contraseñas requiere de lenguajes que se ejecuten en el servidor y no en el navegador.

¿No están convencidos? Usen CTRL+U para mirar el código fuente de los "ejemplos prácticos" que se ofrecen.

Pack de PNGs para ediciones

Éste es un pack que contiene más de 40 imágenes en formato PNg (recortadas con fondo transparente) para que puedan usarlas en ediciones, blends, la cabecera de su blog, etc.

Todas tienen muy buena calidad. En el pack encontrarás marcos decorativos, cintas, lazos, bordes, flores, etc., con los que podrás hacer muchos diseños.
La contraseña del archivo está en el video.
Si quieres saber cómo descargar el pack y ver todo el contenido completo del mismo, mira el video.

Descargar