domingo, 29 de septiembre de 2013

Curvas en caminos de Canvas del HTML 5



Hasta ahora en el manual de canvas del HTML 5  vamos a aprender un poco más en la materia aprendiendo a dibujar caminos con curvas.
En principio las librerías de funciones para dibujo en el canvas permite tres métodos de para hacer trazos en curva, basados en funciones matemáticas para expresar curvas de distintos tipos:

Arcos

Nos permiten dibujar circunferencias o segmentos de circunferencias, lo que se conoce como arcos. Lo conseguimos con el método arc() enviando una serie de parámetros que veremos más adelante.


Curvas cuadráticas: 

Es una manera de especificar una curva en la que tenemos un punto de inicio, un punto de fin y un tercer punto que indica hacia qué parte se curvará la línea. Esta curva veremos que es fácil de entender y que nos servirá para hacer esquinas redondeadas, entre otras muchas cosas.


Curvas Bezier: 

Es una manera matemática de expresar una curva por medio de cuatro puntos. El punto de inicio, el de fin y dos puntos que indicarán hacia dónde se curvará la primera y segunda mitad de la línea. Es una curva un poco más compleja de entender, pero posiblemente ya hayamos experimentado con este tipo de curvas en programas de diseño como Photoshop o Ilustrator, lo que podrá ayudar un poco a comprenderla.

La verdad es que para hacer todas estas curvas hay que saber un poco de matemáticas y habría que hacer cálculos para poder ajustarlas a nuestras necesidades. Digamos que todas las fórmulas están pensadas para el dibujo técnico y no artístico, por eso quizás un matemático tendría más soltura que un artista para dibujar cosas en el lienzo del canvas.
No obstante, no podemos dejar que pensar que el dibujo en canvas es un proceso informatizado y como estamos diseñando a nivel de lenguaje de programación, no queda otra cosa que adaptarse a las fórmulas matemáticas implementadas para hacer curvas. Más adelante veremos otras maneras de solventar estos temas, como la utilización de imágenes, que podemos importar y "pegar" en el canvas, a partir de archivos gráficos creados con cualquier programa como Photoshop.
En los siguientes artículos veremos con detalle cada uno de estos tres tipos de curvas con sus ejemplos. Podemos comenzar conociendo las curvas en arcos.

Enlace: enlace

Los 10 principios básicos del SEO



Leía ayer en un libro que tener un sitio web es lo mismo que tener las llaves de un nuevo local comercial: eso es sólo el principio. Una vez has abierto el comercio, necesitas conseguir atraer al público, dándote a conocer. Y finalmente el objetivo es fidelizar a tu clientela. Lo mismo sucede con una página web. Antes incluso que el diseño web, hemos de plantearnos las razones estratégicas por las que queremos el sitio web, esto es, los objetivos de la web y el público al que nos dirigimos.

El SEO ocupa libros y libros, por lo que aquí sólo destacaremos los puntos más importantes para hacer que nuestro sitio web sea amigable a los buscadores como Google. Para más información, os recomiendo el libro Marketing online.Estrategias para ganar clientes en Internet (Titulos Especiales (anaya))
, de Fernando Maciá Domene y Javier Gosende Grela, editorial Anaya.
PRINCIPIOS BÁSICOS DEL SEO

1. ESCRIBE UN TÍTULO QUE CONTENGA LAS PALABRAS CLAVES REPETIDAS MÍNIMO UNA VEZ.

Uno de los errores más frecuentemente cometidos es empezar escribiendo el título de la web con el nombre de nuestra empresa.. ¡craso error! La parte de la izquierda del título es más relevante que la de la derecha, por lo que el nombre de la empresa debe ir al final del todo. Más todavía, si conocen el nombre de la empresa, entonces no necesitan buscarnos en Google! Otro punto importante es no exceder los 60 caracteres en la redacción del título, ya que sino aparecerá cortado en la búsqueda de Google con puntos suspensivos al final.

Ejemplo:

Empresa de diseño gráfico | Diseño gráfico Madrid | CreandoArte

En este ejemplo vemos que las palabras clave “diseño” y “gráfico” aparecen repetidas una vez y que el nombre de la empresa va al final.

2. UTILIZA LOS TITULARES DE LAS PÁGINAS WEB DE MANERA SEMÁNTICA

En cada página web debe haber como máximo un titular principal del tipo <h1>. Este titular debe contener las palabras clave que queremos potenciar. A partir de aquí, se trata de estructurar los contenidos de manera que todo aquello que puedan ser títulos o cabeceras de párrafos vaya entre <h2>..<h6>. Por eso, es muy importante pensar en la estructura semántica de los contenidos de la web y dividirlos entre títulos de mayor a menor importancia, texto y negrita.

3. UTILIZA LA ETIQUETA META DESCRIPTION DE MANERA SABIA.

En la cabecera del html podemos utilizar una serie de etiquetas llamadas meta. Una de las más importantes es la de la descripción. En ella hemos de poner un texto de hasta 160 caracteres que, una vez más repita las palabras clave mínimo una vez. En WordPress puedes añadir la descripción del sitio web con un plugin muy potente llamado All in one SEO Pack. En Google, la descripción es lo que aparece debajo del título en los resultados de búsqueda.

4. CREA URL’S AMIGABLES

Una URL amigable es del tipo:

http://www.miempresa/palabra_clave1/palabra_clave2.html

En la URL vemos el uso del guión bajo “_” para separar palabras clave. Así si queremos resaltar “armarios de cocina” en la URL, escribiremos ../armarios_cocina

Ejemplo:

http://www.abogadosbarcelona.com/derecho_civil/divorcios.html

Un ejemplo de lo que no debe ser:

http://www.polidri.com/?page_id=749

si ponemos /?page_id=749 podemos estar hablando tanto de patatas como de girasoles. En WordPress podemos cambiar la estructura de los permalinks para conseguir enlaces amigables.

5. UTILIZA EL ATRIBUTO ALT EN LAS IMÁGENES

Los buscadores no pueden leer los textos incluidos en las imágenes ni ver sus contenidos. Por eso, hemos de utilizar el atributo alt para dar una pequeña descripción de lo que es la imagen. Pongamos el caso de una foto de la Torre Eiffel. En la etiqueta alt escribiríamos “Torre Eiffel”. Esto ayuda a que incluso aquellos contenidos que no son indexables puedan ser rastreados e indexados por el motor de búsqueda.

6. REPITE LAS PALABRAS CLAVE EN EL TEXTO DE LA WEB DE MANERA NATURAL.

Digo de manera natural porque si empezamos a poner, en el caso del ejemplo anterior, “diseño gráfico” hasta en la sopa, pues mal vamos, porque los buscadores entenderán que estamos haciendo spam y penalizarán nuestro sitio web, en lugar de mejorar su posicionamiento. Escribe de manera natural, teniendo presente usar en puntos estratégicos las palabras clave.

7. CONSIGUE ENLACES DE CALIDAD A TU SITIO WEB

Y hazlo de manera gradual. Porque si de golpe apareces en 200 directorios, Google detectará que hay detrás un trabajo de SEO y penalizará tu sitio web. Busca directorios y portales temáticos donde puedas registrar tu web. Si tienes un blog, ve a directorios específicos al respecto. Participa en blogs de la misma temática y deja comentarios de alto valor añadido con un enlace a tu web en el cuerpo del texto del comentario. Cuanto más te des a conocer, más mejorará tu posicionamiento, siempre y cuando no hagas spam o algo susceptible de ser considerado spam.

8. CREA Y CONFIGURA EL ARCHIVO ROBOTS.TXT

El archivo robots.txt te permite decir a los motores de búsqueda que ha de indexar y que no. Si, por ejemplo, tienes un blog con un feed RSS, los textos del feed RSS constarán como contenido duplicado, lo que penalizará tu indexación en Google. En The Web Robots Pages tenéis información más detallada. En el caso de utilizar WordPress, os recomiendo el plugin Robots Meta.

9. CREA UNA PÁGINA DE ATERRIZAJE QUE CONVIERTA

Imagina que tienes un anuncio en AdWords y te empiezan a llegar visitas. Luego vas a Google Analytics y ves que tu tasa de rebote de las visitas que te llegan por Adwords está en el 80%.. ¡algo has hecho mal! La tasa de rebote es el porcentaje de usuarios que llegan a tu web y se van sin hacer ninguna acción (no hacen clic en ninguna parte). Debes diseñar una página de aterrizaje que logre que un tanto por cierto determinado de los usuarios que llegan al sitio web hagan aquello que esperamos, esto es lo que se llama conversión. La página de aterrizaje (landing page) es aquella a la que llega un usuario tras clicar un banner o un anuncio, por ejemplo en AdWords. En The Anatomy of a Perfect Landing Page tenéis un excelente ejemplo de como diseñar de manera óptima una página de aterrizaje.

10. PARTICIPA EN LAS REDES SOCIALES

Las redes sociales tienen un potencial enorme para hacer marketing y además son gratis (al menos de momento). Una vez más, hemos de pensar en nuestra estrategia de marketing: a quien nos dirigimos y qué esperamos conseguir. Las redes sociales nos dan un sin fin de posibilidades: desde crear una página profesional en Facebook, a un grupo en Facebook o LinkedIn, a listas en Twitter. El vídeomarketing se está extendiendo gracias al enorme éxito de Youtube, que se constituye como la tercera web más visitada del mundo. Si Facebook fuera un país, sería el tercero con mayor población a nivel mundial. El potencial de las redes está allí, sólo hemos de aprovecharlo.

Y, finalmente, mi regla personal, que si bien no es una regla general, es una que a mi me va muy bien:

Imita a los mejores y supéralos. Si piensas en aquello que haces mal, no mejorarás tan rápido como si piensas en aquello que la competencia hace bien. Estudia qué hacen las empresas que se posicionan en la primera página de Google. Si, como en el ejemplo anterior, las palabras clave son “diseño gráfico madrid”, busca estas tres palabras en Google y estudia con detenimiento las páginas web que salen en la primera página (sin tener en cuenta los anuncios de AdWords). Mira sus títulos, sus textos, si hay botones de llamada a la acción, etc. Estúdialas a fondo e imita a aquello que crees te puede dar también a ti resultados. No copies nada literalmente, sólo inspírate y mejora lo que ellos hacen. Mejora día a día y supérate, antes o después los resultados llegarán.

Fuente: enlace

Aprende acerca de constantes en lenguaje en C



Qué tipos de constantes existen en C?


En lenguaje C, una constante puede ser de tipo entero, real, carácter, de cadena o enumerado. Las contantes de tipo enumerado se van a estudiar más adelante. En cuanto a las demás, se pueden expresar de dos formas diferentes:


1. Por su valor.
2. Con un nombre (identificador).

Ejemplo 1: Las siguientes contantes de tipo entero están expresadas por su valor:

-5
10

Para expresar una constante con un nombre, la constante debe ser declarada previamente. Las constantes que se declaran en un programa escrito en lenguaje C reciben un tratamiento diferente al de la mayoría de los lenguajes de programación. En C, para representar a las constantes, se utilizanconstantes simbólicas. Una constante simbólica representa (sustituye) a una secuencia decaracteres, en vez de representar a un valor (dato almacenado en memoria).

Para declarar una constante simbólica, en lenguaje C, se utiliza una nueva directiva del preprocesador:


#define <constante> <secuencia_de_caracteres>


La directiva #define indica al preprocesador que debe sustituir, en el código fuente del programa, todas las ocurrencias del <nombre_de_la_constante> por la <secuencia_de_caracteres>, antes de lacompilación.

Ejemplo 2: Dos constantes muy habituales son:

#define PI 3.141592 #define
NUMERO_E 2.718281

En programación es una buena práctica escribir los identificadores de las constantes en mayúsculas, de esta forma es más fácil localizarlos en el código de un programa. Nótese que, después de la declaración de una constante simbólica no se escribe un carácter punto y coma (;), cosa que sí se debe hacer al declarar una variable.

Por otra parte, no se puede declarar más de una constante simbólica en una misma línea de código.

Ejemplo 3: Para declarar las constantes simbólicas PI y NUMERO_E, no se puede escribir:

#define PI 3.141592, NUMERO_E 2.718281

Por otra parte, en C, es posible declarar una variable indicando que su valor es inalterable. Para ello, se utiliza el cualificador const.

Ejemplo 4: Uso de const:

const int temperatura = -5;

En el ejemplo, se ha declarado la variable entera temperatura inicializada al valor -5 y, por medio de const, que es una palabra reservada, se ha indicado que su valor no puede cambiar durante la ejecución del programa. En cierta manera, la variable temperatura está simulando a una constante.


Ya se sabe cómo escribir la declaración de una constante y de las variables que utilice un programa y, también, se conoce el lugar en que se tiene que escribir la directiva del preprocesador #definepara declarar la constante.

En cuanto a las variables que utiliza un programa, su declaración puede escribirse en varios lugares, pero, de momento las vamos a declarar inmediatemente después del carácter abrir llave ({) de lafunción main.


[ <directivas_del_preprocesador> ]

int main()
{
[ <declaraciones_de_variables> ]

<lista_de_instrucciones>
}

Ejemplo 5: Si en un programa se quieren declarar dos variables (area y radio) y una constante (PI), se puede escribir:

#define PI 3.141592

int main()
{
float area, radio;

...
}
Fuente: enlace

Estructura de un Algoritmo en Pseudocódigo


La estructura de un algoritmo sirve para organizar a los elementos que aparecen en él. En pseudocódigo, todos los algoritmos tienen la misma estructura, definida por tres secciones: cabecera, declaraciones y cuerpo.



Cabecera de un Algoritmo

En la cabecera de un algoritmo se debe indicar el nombre (identificador) asignado al mismo. La sintaxis es:
algoritmo <nombre_del_algoritmo>
Ejemplo: Si se quiere diseñar el algoritmo de un programa que:

1º) Pida por teclado el radio (dato real) de una circunferencia.
2º) Calcule el área de la circunferencia.
3º) Muestre por pantalla el resultado (dato real).

Nota: Área de una circunferencia = pi * radio2

El algoritmo puede llamarse Area_de_una_circunferencia, por tanto, en la cabecera se puede escribir:

algoritmo Area_de_una_circunferencia

Declaraciones de un Algoritmo

En la sección de declaraciones de un algoritmo se declaran las constantes, los tipos de datos y lasvariables que se usan en el algoritmo. La sintaxis es:

[ constantes
<declaraciones_de_constantes> ]
[ tipos_de_datos
<declaraciones_de_tipos_de_datos> ]
[ variables
<declaraciones_de_variables> ]

Ejemplo: Para resolver el problema planteado en el apartado anterior "Cabecera de un Algoritmo", es necesario declarar una constante y dos variables:

constantes
PI = 3.141592
variables
real area, radio

En este caso, no es necesario declarar ningún tipo de dato.

Cuerpo de un Algoritmo

En el cuerpo de un algoritmo se escriben todas las instrucciones del algoritmo. La sintaxis es:

inicio
<instrucción_1>
<instrucción_2>
...
<instrucción_n>
fin

inicio y fin son palabras reservadas que marcan el principio y final de la sección cuerpo, que es donde está el bloque de instrucciones principal del algoritmo.

Ejemplo: El cuerpo del algoritmo Area_de_una_circunferencia es:

inicio
escribir( "Introduzca radio: " )
leer( radio )
area ← PI * radio ** 2
escribir( "El área de la circunferencia es: ", area )
fin

Sintaxis de un Algoritmo

En programación, la sintaxis completa para escribir un algoritmo en pseudocódigo es:

algoritmo <nombre_del_algoritmo>

[ constantes
<declaraciones_de_constantes> ]
[ tipos_de_datos
<declaraciones_de_tipos_de_datos> ]
[ variables
<declaraciones_de_variables> ]

inicio
<bloque_de_instrucciones>
fin

Ejemplo: el algoritmo de un programa que pida por teclado el radio de una cirunferencia y muestre por pantalla el área de la misma, se puede escribir como se muestra a continuación:

algoritmo Area_de_una_circunferencia

constantes
PI = 3.141592

variables
real area, radio

inicio
escribir( "Introduzca radio: " )
leer( radio )
area ← PI * radio ** 2
escribir( "El área de la circunferencia es: ", area )
fin

Comentarios de un Algoritmo

En los algoritmos es conveniente escribir comentarios para explicar el diseño y/o funcionamiento del mismo. Para delimitar los comentarios se pueden utilizar distintos caracteres:

( [ ) y ( ] )
( { ) y ( } )
( /* ) y ( */ )
...En pseudocódigo, en este curso de algoritmos, los comentarios se van a escribir entre los símbolos reservados barra-asterisco (/*) y asterisco-barra (*/), que son los mismos que se utilizan en lenguaje C.

Ejemplo 1: Algoritmo que sirve para calcular el área de una circunferencia, en el cual se han comentado las distintas secciones: cabecera, declaraciones y cuerpo:

/* Cabecera */

algoritmo Area_de_una_circunferencia

/* Declaraciones */

constantes
PI = 3.141592

variables
real area, radio

/* Cuerpo */

inicio
escribir( "Introduzca radio: " )
leer( radio )
area ← PI * radio ** 2
escribir( "El área de la circunferencia es: ", area )
fin

Cuando un algoritmo se convierta (codifique) en un programa, también se podrán escribir los comentarios en el código fuente de dicho programa. Dichos comentarios no afectarán nunca a la ejecución del programa. No obstante, serán muy útiles a la hora de querer saber qué hace un algoritmo (o programa), y cómo lo hace. Los comentarios de un algoritmo (o programa) forman parte de la documentación del mismo, pudiendo:

Informar sobre algunos datos relevantes del algoritmo (autor, fecha de creación, fecha de última modificación, proyecto en el que se integra, versión,... ).
Explicar la utilidad de uno o más tipos de datos, constantes y/o variables.
Describir el funcionamiento general del algoritmo (o programa).
Explicar el cometido de una o más instrucciones.
Etc.Ejemplo 2: Algoritmo que incluye comentarios acerca de su autor, fecha, etc.


/***************************************************/
/* Programa: Calcular_area_circunferencia */
/* */
/* Descripción: Recibe por teclado el radio de una */
/* circunferencia, mostrando su área por pantalla. */
/* */
/* Autor: Carlos Pes */
/* */
/* Fecha: 31/03/2005 */
/***************************************************/

/* Cabecera */

algoritmo Area_de_una_circunferencia

/* Declaraciones */

constantes
PI = 3.141592

variables
real area, radio

/* Cuerpo */

inicio
escribir( "Introduzca radio: " )
leer( radio )
area ← PI * radio ** 2
escribir( "El área de la circunferencia es: ", area )
fin

Fuente: Uneweb

Cónoce los valores de la propiedad action con Javascript




Mediante JavaScript, podremos modificar/seleccionar el valor de la propiedad action según las preferencias del usuario.

El ejemplo más típico sería el de un formulario de suscripción a un boletín de novedades, donde el usuario deberá elegir, si desea darse de alta o de baja.


Modificación del valor de la propiedad action

El Script...
<script language="javascript">
function enviar(form)
{
    if ((boletin.alta.checked == true) && (boletin.baja.checked == true))
    { alert("Por favor, marca una sola casilla"); return true; }

    if ((boletin.alta.checked == false) && (boletin.baja.checked == false))
    { alert("Debes indicar si deseas darte de alta o de baja"); return true; }

    if (boletin.alta.checked == true)
    { boletin.action = "ejemplos/alta.asp"; }

    if (boletin.baja.checked == true)
    { boletin.action = "ejemplos/baja.asp"; }

form.submit()
}
</script>

El formulario...
<form name="boletin" method="GET" action="ejemplos/alta.asp" target="_blank">
<b>Suscripción gratuita al boletín de novedades</b><br>
Por favor, introduce tu e-mail:
<input type="text" name="email" size="20"><br>
<input type="checkbox" name="alta" value="ON"> Darme de <b>alta</b> |
<input type="checkbox" name="baja" value="ON"> Darme de baja<br>
<input type="button" onClick="enviar(this.form)" value="Enviar">
</form>

Los resultados...
Por favor, introduce tu e-mail: 
 Darme de alta |  Darme de baja


Otro ejemplo muy utilizado, es enviar el mismo formulario a dos páginas diferentes. Veamos un ejemplo:


Duplicando el valor de la propiedad action

El Script...
<script language="javascript">
function Envio1()
{
datos.action = "ejemplos/pagina1.asp";
datos.submit()
}
function Envio2()
{
datos.action = "ejemplos/pagina2.asp";
datos.submit()
}
</script>
 
El Formulario...
<form method="GET" name="datos" action="ejemplos/pagina1.asp" target="_blank">
Tu nombre: <input type="text" name="nombre"><br>
Edad: <input type="text" name="edad" size="2"><br>
<input type="button" value="Enviar" onClick="Envio1(this.form); Envio2(this.form)">
</form>

Los resultados...
Tu nombre: 
Edad: 


De la misma forma que se puede modificar el valor de la propiedad action, pueden modificarse method target. Modificar el valor de la propiedad method sería un poco ridículo ya que el método por el cual se envían los datos, puede estar perfectamente definido en el formulario. El valor de target puede llegar a ser más útil, si le damos al usuario la posibilidad de decidir si quiere abrir los resultados enviados en nueva ventana, en la misma página o en un marco de la misma.

Fuente: enlace

Cónoce acerca de Método css() de jQuery


Estamos tratando algunos de los métodos más importantes de jQuery relacionados con las hojas de estilo en cascada. El más importante de estos métodos para trabajar con las CSS de manera dinámica es justamente css() y aunque ya lo hemos podido introducir en artículos anteriores del Manual de jQuery, merece la pena dedicarle un poco de nuestro tiempo para aprender todas sus posibilidades
El método css() sirve tanto para recibir el valor de un atributo CSS como para asignarle un nuevo valor y su funcionamiento depende de los parámetros que podamos enviarle. Así que, para hablar sobre este método veremos cada uno de los posibles juegos de parámetros que podemos enviarle, explicando cada una de las opciones disponibles y ofreciendo diversos ejemplos.
Nota: Si lo deseas, también puedes ver estas explicaciones en vídeo: Videotutorial de jQuery sobre el método css()

.css( nombre_propiedad_css )

Si enviamos un solo parámetro al método CSS estamos indicando que queremos recibir el valor de una propiedad CSS. En este caso la función devolverá el valor del atributo CSS que le hayamos indicado.
Si tenemos un elemento en la página como este, al que le hemos colocado un identificador, atributo id="micapa":

<div id="micapa" style="color: red;">hola!</div>

Podremos acceder a alguna de sus propiedades css de la siguiente manera:

$("#micapa").css("color");

Esto nos devolverá el atributo "color" de ese elemento, que en este caso valía "color".
Como podemos suponer, el método CSS enviando un solo parámetro puede servir de mucha utilidad para obtener datos sobre los estilos actuales de nuestros elementos, no obstante, todavía es más utilizada la siguiente opción, en la que enviamos dos parámetros.

.css( nombre_propiedad_css, valor )

En este segundo caso, aparte del nombre de una propiedad CSS estamos enviando un segundo parámetro con un valor y nos servirá para asignar un nuevo estado a dicho atributo. Esta segunda manera de invocar al método CSS tiene además algunas variantes.
Cambiar un único atributo CSS: podemos enviar el nombre de un único atributo CSS y su nuevo valor.

$("#micapa").css("color", "green");

Con esto estaríamos cambiando el color del texto del elemento con id="micapa" y asignando el color verde ("green").
Cambiar varios atributos CSS al mismo tiempo: Podemos enviar todos los atributos CSS que deseemos y sus nuevos valores, en notación de objeto. Con esto conseguimos que, en una única llamada a css() se cambien varias propiedades a la vez.

$("#micapa").css({
   "background-color": "#ff8800",
   "position": "absolute",
   "width": "100px",
   "top": "100px",
   "left": "200px"
})

Como se puede ver, se estarían actualizando con la anterior llamada a css() varios atributos CSS, como el color de fondo, la posición del elemento, su anchura, etc.
Sobre este punto vamos a dar un ejemplo adicional que puede estar bien para aprender a variar un atributo CSS teniendo en cuenta el valor anterior que tuviera.

$("#micapa").mouseover(function(){
   antiguoLeft = parseInt($(this).css("left"));
   //alert (antiguoLeft);
   $(this).css("left", antiguoLeft + 10 + "px");
})

Con esto estamos definiendo un evento onmouseover sobre la capa con id="micapa", por lo que estas instrucciones se pondrán en ejecución cuando se pase el ratón por encima de la capa. Dentro del método estamos haciendo un par de cosas. Como primer paso estamos extrayendo el valor de la propiedad CSS "left" y convirtiéndola en un entero. Como segundo paso estamos actualizando ese valor de "left" y asignando un nuevo valor que sería 10 píxeles más que el valor antiguo. Para ello sumamos 10 al valor antiguo de "left" y lo concatenamos con la unidad de medida "px".

Cambiar un único atributo y colocar el valor según el resultado de una función: Este tercer uso es un poco más avanzado y está disponible sólo a partir de jQuery 1.4. Consiste en enviarle una función como segundo parámetro, en vez del valor directamente, para asignar al atributo el valor devuelto por esa función.
Esto es tan sencillo de poner en marcha como pasar una función que simplemente tenga un return. Pero hay un detalle y es que esa función recibe dos valores. El primero es el índice del elemento dentro del objeto jQuery que recibe el método y el segundo, más útil, sirve para obtener el valor actual que hay en el atributo que queremos cambiar.
Para ver este uso del método jQuery hemos preparado el siguiente ejemplo.

$("#micapa").click(function(){
   $(this).css("width", function(index, value){
      //alert (value);
      var aumento = prompt("cuanto quieres aumentar?", "25");
      return (parseInt(value) + parseInt(aumento)) + "px";
   });
})

Como se puede ver, se define un evento clic sobre una capa. Luego utilizamos el método css() sobre el elemento, para cambiar el atributo width. El valor de width que se colocará será lo que devuelva la función indicada como segundo parámetro en el método css(). Si nos fijamos, la función devuelve un valor, que es lo que se colocará en el atributo width.

Fuente: enlace

Aprende a usar imágenes en el Canvas. HTML5


Una de las cosas más interesantes que podremos hacer cuando dibujamos en el lienzo del elemento canvas es importar y mostrar directamente el contenido de archivos gráficos externos, es decir, usar imágenes GIF, JPG o PNG dentro de los dibujos que realizamos con canvas. En este artículo veremos cómo realizar este punto, aunque adelantamos que es bastante fácil.

Las imágenes provenientes de archivos gráficos las podemos crear con nuestro editor preferido y hacer fácilmente gráficos bastante creativos y vistosos, o editar a partir de fotos creadas con nuestra cámara. Luego las podemos incluir en el Canvas y así conseguir que nuestros trabajos tengan una mejor calidad que si dibujamos a mano con las funciones Javascript del API de Canvas.

Con un poco de creatividad y algo de código Javascript, podremos hacer composiciones basadas en varias imágenes "pegadas" en el lienzo, o utilizar imágenes de fondo sobre las que luego pintamos con Javascript para destacar cosas. Como podemos usar cualquier tipo de archivo gráfico, mientras que esté soportado por el navegador, las posibilidades son enormes.
Referencia: Para entender este artículo debes haber seguido las explicaciones del Manual del elemento Canvaspublicadas en DesarrolloWeb.com.

Método drawImage() para pintar una imagen en el canvas

Para dibujar una imagen en el lienzo se utiliza el Método drawImage(), que pertenece al objeto contexto del canvas, con la siguiente sintaxis:
drawImage(objeto_imagen, x, y)
Enviamos tres parámetros, el primero es el objeto Javascript de la imagen que se desea incluir en el lienzo. Los dos siguientes son las coordenadas donde situar la imagen, siendo (x,y) el punto donde se colocará la esquina superior izquierda de la imagen.
Como decía, este método pertenece al objeto del canvas, por lo que antes de poder invocarlo debemos haber obtenido el contexto del canvas, tal como hemos aprendido anteriormente en el Manual de Canvas para cualquier otro tipo de dibujo.

Objeto Javascript imagen

El objeto imagen es uno de los objetos básicos de Javascript, que afortunadamente funciona igual en todos los navegadores. En realidad ya lo hemos explicado en anteriores artículos dentro de DesarrolloWeb.com. Concretamente os recomendamos el Manual de Tratamiento de imágenes en Javascript.
Este objeto de imagen lo podemos obtener de varias maneras, pero de momento vamos a aprender a generarlo dinámicamente con una instrucción Javascript.
var img = new Image();
Con esto tenemos una variable llamada "img" que tiene un objeto imagen dentro. Ese objeto imagen en estos momentos está sin ningún atributo. Podríamos decir que está sin inicializar. La tarea de inicialización fundamental sería asignarle una ruta a un archivo gráfico.
img.src = 'logo-grande.jpg';
Esto hace que en el objeto Image se cargue la imagen que está en el archivo 'logo-grande.jpg' y como no hemos especificado ningún directorio en la ruta, se supone que ese archivo está en la misma carpeta que el archivo HTML donde esté ese código Javascript.
Una vez tenemos el objeto imagen, podríamos pintarlo en un canvas por medio de la función drawImage(). Sería algo parecido a esto:
ctx.drawImage(img, 10, 10);
Pero atención, porque este código tiene un detalle: la imagen no se dibujará en el canvas a no ser que esté previamente cargada en el navegador.
En la secuencia de instrucciones, tal como lo tenemos ahora:

var img = new Image();

img.src = 'logo-grande.jpg';
ctx.drawImage(img, 10, 10);


El navegador al especificar el archivo de la imagen, actualizando el atributo src, tiene que descargarlo y eso lleva un tiempo. Por tanto, si inmediatamente a indicar el archivo, intentamos dibujar la imagen, dará un problema. Dicho de otra manera, sólo podemos dibujar la imagen cuando estamos seguros que el navegador ya la ha descargado. Para asegurarnos de este punto, podemos usar el evento onload de la imagen, para llamar a drawImage() sólo cuando la imagen ha terminado de cargarse.

var img = new Image();

img.src = 'canvas-html5.png';
img.onload = function(){
   ctx.drawImage(img, 10, 10);
}

Ejemplo de dibujo de imagen en un canvas

Veremos a continuación el código completo de un ejemplo que carga una imagen en un elemento canvas.


<html>

<head>
<title>Imágenes en Canvas</title>
<script language="javascript">
function cargaContextoCanvas(idCanvas){
   var elemento = document.getElementById(idCanvas);
   if(elemento && elemento.getContext){
      var contexto = elemento.getContext('2d');
      if(contexto){
         return contexto;
      }
   }
   return FALSE;
}


window.onload = function(){
   //Recibimos el elemento canvas
   var ctx = cargaContextoCanvas('micanvas');
   if(ctx){
      //Creo una imagen conun objeto Image de Javascript
      var img = new Image();
      //indico la URL de la imagen
      img.src = 'logo-desarrolloweb.gif';
      //defino el evento onload del objeto imagen
      img.onload = function(){
         //incluyo la imagen en el canvas
         ctx.drawImage(img, 10, 10);
      }
   }
}

</script>
</head>
<body>

<canvas id="micanvas" width="200" height="100">
Tu navegador no soporta canvas.
</canvas>

</body>
</html>


En el siguiente artículo vamos a mostrar diversas maneras de acceder a objetos Image desde Javascript para mostrar esas imágenes en el canvas.

Fuente: enlace

Aprende acerca de los selectores en jQuery


Como la propia palabra indica, los selectores son un mecanismo, disponible en jQuery, para seleccionar determinados elementos de la página. El selector no es más que una cadena de caracteres, creada bajo unas normas que veremos a continuación, con la que podemos referirnos a cualquiera o cualesquiera de los elementos que hay en una página.
Todo en jQuery pasa por utilizar los selectores, para acceder a los elementos de la página que deseamos alterar dinámicamente con Javascript. Hasta en los ejemplos más básicos del Manual de jQuery se tienen que utilizar selectores para acceder a los elementos que deseamos alterar, así que inevitablemente, si has leído este manual hasta este artículo, los habrás utilizado ya.
En mi opinión, una de las cosas que más potentes de jQuery son los selectores, al menos comparando este framework Javascript con otros que conozco. Veremos en este artículo cómo utilizarlos y aprovecharnos de su potencia.
Para empezar, veamos un selector, para aclarar las ideas y refrescar la memoria. Cuando utilizamos la función jQuery (o función dólar) lo que pasamos como parámetro es el selector. La función jQuery devuelve justamente los elementos de la página que concuerdan con el selector enviado por parámetro.
$("p");
En esa llamada a la función jQuery, estamos pasando por parámetro una cadena "p" y como decía, esa misma cadena es el selector. En este caso, "p" es un selector que sirve para seleccionar todas las etiquetas P de la página, es decir, los párrafos.

Selectores básicos en jQuery

Los selectores, al menos los más básicos, son parecidos, o iguales, a los que se utilizan en CSS para seleccionar los elementos a los que se desean aplicar ciertos estilos. Como entiendo que todas las personas que intenten profundizar en el framework jQuery deben haber conocido CSS anteriormente, no habrá ningún problema con ellos.


Selector de etiquetas: 


Simplemente indicamos la etiqueta a la que deseamos referirnos, es decir, la etiqueta que queremos seleccionar. Obtendremos con él todas las etiquetas de la página indicada en el selector.
$("h1") //selecciona todos los encabezados de nivel 1


Selector por identificador: 


Sirven para seleccionar los elementos que tengan un identificador dado, que se asigna a las etiquetas a través del atributo id del HTML. Para utilizar este selector se indica primero el carácter "#" y luego el identificador de cuyo elemento se desee seleccionar.
$("#idelemento") //selecciona una etiqueta que tiene el atributo id="idelemento"


Selector por clase: 


Podemos indicar el nombre de una clase (class de CSS) y seleccionar todos los elementos a los que se ha aplicado esta clase. Para ello, como en CSS, comenzamos colocando el carácter "." y luego el nombre de la clase que deseamos seleccionar.
$(".miclase") //selecciona todos los elementos que tienen el atributo class="miclase"


Selector por varias clases: 


Si lo deseamos, podemos indicar varias clases CSS, para obtener todos los elementos que tienen esas clases aplicadas: todas al mismo tiempo. Esto se consigue comenzando por un ".", igual que los selectores de clases, y luego otro "." para separar las distintas clases que queremos utilizar en el selector.
$(".clase1.clase2") //selecciona los elementos que tienen class="clase1 clase2"


Selector asterisco "*": 


Nos sirve para seleccionar todos los elementos de la página.
$("*") //selecciona todos los elementos que tiene la página


Concatenar varios selectores distintos: 


Por último, podemos utilizar varios selectores, para obtener todas las etiquetas que cumplen uno de ellos. No hace falta que cumplan todos los selectores a la vez, sino con que uno de ellos concuerde es suficiente. Para ello colocamos todos los selectores que deseamos, separados por una coma ",".
$("div,p") //selecciona todos los elementos división y párrafo 

$(".clase1,.clase2") //selecciona los elementos que tienen la clase "clase1" o "clase2" 
$("#miid,.miclase,ul) //selecciona el elemento con id="miid", los elementos con class="miclase" y todas las listas UL

Conclusión sobre los selectores

Hasta este punto hemos visto los selectores básicos de jQuery, que nos servirán para hacer la mayoría de nuestros ejemplos y resolver también la mayor parte de las necesidades de selección de elementos que nos podamos encontrar en ejemplos reales. Sin embargo, el framework Javascript incluye una buena gama de selectores adicionales que pueden venirnos bien en algunos casos más concretos y que dejamos para próximos artículos.
Nota: Si todavia no has quedado muy claro, podeís pasaros por el Videotutorial sobre los selectores en jQuery
Ahora, os recomendamos seguir el aprendizaje con el siguiente artículo, en el que pondremos en práctica los selectores que hemos conocido hasta el momento: Ejemplo para practicar con selectores de jQuery.

Fuente: enlace

Entradas populares