miércoles, 21 de diciembre de 2011

Programación Web - CSS (I) - [ INTRODUCCIÓN ]

CSS

Para utilizar CSS tenemos tres alternativas:

• Dentro de las etiquetas mediante el atributo "Style" [En Línea]
• En el encabezado del documento HTML, es decir, dentro de "<head>" utilizando la etiqueta "<style>"
• En un documento externo vinculándolo a nuestro HTML mediante el tag "<link>"

La primera opción es la menos recomendable, puesto que "ensucia" todo el código HTML y lo hace menos legible para la modificación, se denomina popularmente diseño en línea.

La segunda opción es un poco mejor que la primera, sin embargo, a pesar que el código está enmarcado y separado del cuerpo de la página, al ser, muchas veces, extenso, aumenta en gran medida el tamaño del documento HTML en cuestión.

La tercera opción es, por así decirlo, la mejor de todas por varios motivos, principalmente no "ensucia" el código HTML y por ser un archivo externo tampoco aumenta el tamaño del documento. Al margen de esto, al tener separados los estilos del maquetado puro de HTML permite que dos personas estén trabajando en simultaneo, una editando HTML y otra el CSS.

Dicho esto, comencemos con CSS.
Básicamente la sintaxis de un "estilo" es la siguiente:

selector {atributo: valor;}

Esto se lee de la siguiente manera:
Selector - Puede ser el nombre de una etiqueta, el valor de un ID o el nombre de una Clase.
{ - Comienzo de estilos.
Atributo - Propiedad de CSS que modificaremos.
: - Separador de Atributo y Valor (podría considerarse como signo de asignación).
(espacio) – No es obligatorio, se deja para mejorar la legibilidad de la instrucción.
Valor - Valor que le asignamos a la propiedad inmediatamente anterior a los dos puntos (:).
; - Fin de la modificación del atributo que acabamos de alterar.


Esto quedará más claro con el siguiente ejemplo:
h3 {color: red;}

El estilo que acabamos de escribir funciona para la etiqueta <h3> de HTML y el atributo que alteramos fue el que determina su color y lo colocamos en rojo.

Visualmente queda así:


Encabezado <h3> en rojo mediante CSS


En "selector" que utilizamos fue h3, esto significa que para cualquier h3 que este en nuestro documento HTML se le aplicara el color rojo, veamos el ejemplo:



Varios <h3> en rojo mediante CSS


 
Ahora bien, pero ¿Dónde escribir las reglas de estilo del CSS?

Como mencioné al principio hay 3 lugares donde escribir las reglas de estilo, veamos dos de ellas y más adelante veremos la tercera.

Para el primer caso, es decir, estilos en línea la sintaxis es la siguiente:

<h3 style="color: red;">Texto</h3>

Visualmente queda así:


Utilización de estilos en línea

Sin embargo, pueden notar que otros <h3> no han sido alterados, esto se debe a que solo se altera la etiqueta a la que se le aplica el estilo.
Como puede verse, para que esto funcione utilizamos el atributo de HTML "style" y en la asignación de valor, escribimos el atributo de CSS (color), dos puntos (:) y finalmente el valor que le asignamos al atributo (red), luego de esto punto y como (;) esto nos permite tanto finalizar la redacción de estilos como para escribir nuevos atributos.

La segunda forma de hacerlo mediante estilos en el <head>, veamos un ejemplo visual similar al anterior:

CSS en el <head> del documento


El código de la imagen es el siguiente:

<head>
      <style type="text/css">
           h3 {color: red;}
      </style>
</head>


Este código que se acabamos de escribir dentro del "<head>" del documento HTML aplica la regla de estilo a todos los "<h3>" que conformen nuestro documento.
En caso de quererlo aplicar a algunos <h3> específicos debemos comenzar a utilizar "Clases" o en su defecto "ID".

Utilización del Atributo CLASS de HTML

HTML cuenta con un atributo que permite definir a que Clase pertenecerá un elemento determinado, esto nos facilitará asignarle estilos de manera personalizada a esa Clase, veamos un ejemplo, en donde nuestro Body tiene lo siguiente:

<body>
      <h2>Titulo</h2>
      <h3>Subtitulo</h3>
      <p>Párrafo</p>
      <h3>Subtitulo</h3>
      <p>Párrafo</p>
      <h3>Subtitulo Extra</h3>
      <p>Párrafo</p>
</body>


El código anterior se ve de la siguiente manera:



A este <body> le aplicaremos CSS

Y ahora le queremos aplicar un color azul solo a los dos primeros <h3> para ello haremos lo siguiente:

<body>
      <h2>Titulo</h2>
      <h3 class="azul">Subtitulo</h3>
      <p>Párrafo</p>
      <h3 class="azul">Subtitulo</h3>
      <p>Párrafo</p>
      <h3>Subtitulo Extra</h3>
      <p>Párrafo</p>
</body>

Como pueden ver, en el código a los dos primeros <h3> se les ha agregado el atributo "class", al mismo le asignamos valor con el signo igual (=) y entre comillas (") escribimos el nombre de la clase.
Ahora bien, para poder aplicarle a estos <h3> el color azul en el <head> tenemos que hacer lo siguiente:

<head>
      <style type="text/css">
           .azul {color:blue;}
      </style>
</head>


El resultado que obtenemos es el siguiente:



Utilizando el atributo CLASS del HTML para aplicar CSS

Como pueden ver, en lugar de utilizar el nombre de la etiqueta (<h3>) utilizamos el nombre de la clase ("azul") precedida por un punto (.), este punto en cuestión le dice a nuestro navegador que los estilos se aplicaran a la clase con el nombre al lado del mismo (en este caso "azul").



Utilización del Atributo ID de HTML

Otra posibilidad es asignarle estilos a una elemento en especifico y solo a ese elemento, a diferencia de las clases que permiten aplicarlo a uno o varios elementos, la asignación de estilos mediante el atributo ID es para un único elemento, puesto que el ID no puede repetirse, siguiendo el ejemplo anterior, supongamos que el elemento <h3> restante que no tiene clase le queremos aplicar un estilo, en este caso podríamos utilizar directamente asignación de estilo a la etiqueta <h3>, pero si en el futuro hubiese otras, estas también se verían afectadas. Para evitar este tema haremos lo siguiente:

<body>
      <h2>Titulo</h2>
      <h3 class="azul">Subtitulo</h3>
      <p>Párrafo</p>
      <h3 class="azul">Subtitulo</h3>
      <p>Párrafo</p>
      <h3 id="amarillo">Subtitulo Extra</h3>
      <p>Párrafo</p>
</body>

Como pueden ver, en el código al último <h3> se les ha agregado el atributo "id", al mismo le asignamos valor con el signo igual (=) y entre comillas (") escribimos el nombre del elemento (único e irrepetible).
Ahora bien, para poder aplicarle a ese <h3> el color amarillo en el <head> tenemos que hacer lo siguiente:

<head>
      <style type="text/css">
           .azul {color:blue;}
           #amarillo {color:yellow;}
      </style>
</head>


El resultado que obtenemos es el siguiente:



Utilizando el atributo ID de HTML para aplicar CSS

Como pueden ver, en lugar de utilizar el nombre de la etiqueta (<h3>) utilizamos el nombre del id ("amarillo") precedida por el signo numeral (#), este numeral en cuestión le dice a nuestro navegador que los estilos se aplicaran al elemento cuyo ID sea el nombre al lado del mismo (en este caso "amarillo").
En caso de no haber usado amarillo y utilizado nuevamente azul, nuestra ID sería "azul" por lo cual tanto Class como ID tendrían el mismo valor, lo cual esta permitido dado que son atributos distintos, sin embargo, no puede haber más de un elemento con el mismo ID.

Reglas para los valores de los Atributos Class e Id

• Deben comenzar con una letra: [ A-Z ] o [ a-z ].
• Luego de la primer letra pueden contener: Letras [A-Z , a-z ], Números [ 0-9 ], Guión Medio [ - ] y/o Guión Bajo [ _ ].
• En HTML los valores son sensitivos a mayúsculas y minúsculas, por ende, utilizar exactamente el nombre que fue asignado como valor de atributo, Ejemplo: Si utilizaron class="colorRojo", al utilizarlo en CSS deben escribir ".colorRojo", puesto que si utilizan ".colorrojo" o ".ColorRojo" no funcionará.

Dicho todo esto nos encontramos con que tenemos tres maneras de aplicar estilos:

• Directamente nombrando las etiquetas, ejemplo: h1, h3, p, li, ul, etcétera.
• Utilizando nombre de Clases ya aplicadas a elementos, para ellos utilizar el punto (.), ejemplos: .nombreclase, .nombre-clase, .otronombre, etcétera. [Se puede utilizar el Guión medio {"-"} y el Guión bajo {"_"} como separador de palabras]
• Utilizando nombres de ID ya aplicados a elementos, para ello utilizar el numeral (#), ejemplos: #nombreid, #nombre-id, #otronombre, etcétera. [Se puede utilizar el Guión medio {"-"} y el Guión bajo {"_"} como separador de palabras]

Más adelante veremos más especificaciones y la utilización de selectores en cascada, selectores de grupo, entre otras opciones.

sábado, 2 de julio de 2011

Programación Web - HTML (IX) - [ FORMULARIOS II ]

Formularios II
Continuando con el tema anterior, es decir, Formularios hoy veremos más etiquetas y armaremos algunos modelos que son los más usuales.

Etiqueta FIELDSET
Una práctica que puede resultar útil es agrupar los diferentes elementos de un formulario bajo la Etiqueta FieldSet, esta lo que hará es generar un recuadro en todos los elementos que contenga.
Además utilizando la Etiqueta "Legend" podremos ponerle un Título al recuadro. La sintaxis básica de un FieldSet es la siguiente:

<form>
<fieldset>
<legend>Titulo</legen>
<input ……
<input …..
<textarea>…
</fieldset>
</form>

Como podemos observar, FieldSet contiene en primer medida a Legend y luego a todos los Input, TextArea, etc. que queramos agrupar.
Veamos un ejemplo visual:


FieldSet
El Código es el siguiente:

<html>
<head></head>
<body>
<form>
<fieldset>
<legend>Titulo</legend>
Nombre: <input type="text" name="nombre" /><br />
Apellido: <input type="text" name="apellido" /><br />
</fieldset>
</form>
</body>
</html>

En caso de no utilizar la etiqueta "Legend" en el navegador solo aparecerá un recuadro alrededor de los Input.

Acción de Formulario [ ACTION ]
La etiqueta <form> tiene un Atributo que es "Action" [ Acción ] que contiene, generalmente, un Link. Este Link será al que se dirija nuestra navegador en el momento en que el usuario haga Clic en el botón "Enviar/Send", es decir, sobre el <input type="submit" value="Enviar" />.
La sintaxis es la siguiente: <form action="pagina.extension">…</form>.
Ejemplo: <form action="login.php">….</form>

Métodos de Formulario [ METHOD ]
La etiqueta <form> tiene un Atributo que es "Method", es decir, el método que utilizará para enviar los datos. Tiene dos posible valores GET o POST.

El Método GET
Este método envía el valor de las variables mediante la URL, es decir, que todos los valores que el usuario haya ingresado quedarán visibles. Esto demuestra que es un método que carece de seguridad, puesto que, de utilizarse este método al enviar variables de Input tipo Password este quedará visible en la URL para cualquiera que la vea.
Sin embargo, y a pesar de esto, este tipo de método es el utilizado cuando se realizan búsqueda y la razón de esto es que cuando copiemos y peguemos la URL con las variables pasadas por GET obtendremos la misma página web que teníamos después de haber hecho las búsquedas.

La sintaxis de un Formulario cuyo método es GET es la siguiente:
<form method="get" action="pagina.extension">…</form>

Ejemplo:
<form method="get" action="productos.html">
Nombre: <input type="text" name="nombre" /><br />
Precio: <input type="text" name="precio" /><br />
<input type="submit" value="Enviar" />
</form>

Supongamos que el usuario escribe los siguientes datos:


Method GET


Una vez que el Usuario haga Clic en el botón Submit [ Enviar ] obtendrá en la URL lo siguiente:
www.nombreservidor.com/productos.html?nombre=papel&precio=30

Como pueden observar en la URL que obtuvimos vemos los siguientes datos:
Una vez enviado el Formulario el navegador cargará la pagina del Action, es decir, productos.html
A continuación del Link del Action aparece un "?", este es el separador de URL y Variables.
Luego vemos que dice "nombre=papel&precio=30", aquí vemos lo siguiente:
"nombre" y "precio" son los nombres de los Input. Si se fijan en el código anterior verán que al Input de Nombre le pusimos en el Atributo "Name" el valor de "nombre" mientras que en el Input de Precio le pusimos en el Atributo "Name" el valor de "precio".
A continuación de estos aparece el signo "=" esto significa que el Input de Nombre tiene el valor de "papel" y el Input de precio tiene el valor de "30".
Cada variable del Formulario (en este caso, cada Input) esta separado por el símbolo "&", es decir, que si tuviésemos mas variables para pasar en el formulario obtendríamos lo siguiente:

www.nombreservidor.com/productos.html?nombre=papel&precio=30&otrovariable=valor1&masvariables=valor2

Como aclaración importante, este método tiene, a parte de la poca seguridad, un limitante de cantidad de información que se pasa como parámetro en la URL, teóricamente depende de cada navegador, sin embargo, es limitada.


El Método POST
A diferencia del GET, este método codifica la información que se envía de documento a documento no siendo visible para los usuarios, es decir, no utiliza la URL para pasar la información.
Como pude notarse este método es mas seguro que el GET y además, como otra ventaja, no tiene límites.

La sintaxis es la siguiente: <form method="post" action=" pagina.extension">…</form>

Utilizando el mismo código que el anterior un Formulario con información pasado con POST queda de la siguiente manera:

<form method="post" action="productos.html">
Nombre: <input type="text" name="nombre" /><br />
Precio: <input type="text" name="precio" /><br />
<input type="submit" value="Enviar" />
</form>

Y al pasar de página la URL no se ve afectada y queda: www.nombreservidor.com/productos.html
Para recuperar las variables utilizaremos algún lenguaje como ser PHP.

Bien, en este punto ya saben lo necesario como para empezar a crear formularios detallados, veamos algunos ejemplos:


Formulario de "Acepto los Términos y Condiciones de uso"
<form method="post" action="acepto.html">
<textarea rows="20" cols="50" readonly="readonly">Terminos y condiciones de uso
Esta web…
.
.
.
Debe aceptar los términos y las condiciones de uso para continuar</textarea><br />
<input type="checkbox" name="acepto" /> Acepto los términos y condiciones de uso<br />
<input type="submit" value="Aceptar" />
</form>


Formulario de Acepto los Términos y Condiciones de Uso


Formulario de Login
<form method="post" action="login.php">
<fieldset>
<legend>Login</legend>
Usuario: <input type="text" name="usuario" /><br />
Contraseña: <input type="password" name="clave" /><br />
<input type="submit" value="login" />
</fieldset>
</form>


Formulario de Login


Formulario de Comentarios
<form method="post" action="comentario.php">
<fieldset>
<legend>Deja tu comentario</legend>
Usuario: <input type="text" name="usuario" /><br />
EMail: <input type="text" name="email" /><br />
Comentario: <textarea rows="5" cols="50"></textarea><br />
<input type="submit" value="login" />
</fieldset>
</form>


Formulario para dejar Comentarios

Bien, aquí ya tiene algunos ejemplos, claro que aun falta la parte del procesamiento de los datos, pero como actualmente estamos aprendiendo HTML no cabe comenzar a explicar PHP lenguaje que tal vez mas adelante veamos.

En la próxima entrega veremos mas etiquetas a fin de, en futuras entregas, comenzar con HTML5 el futuro de la Web.

miércoles, 29 de junio de 2011

Programación Web - HTML (VIII) - [ FORMULARIOS ]

Formularios

Uno de los últimos temas que nos quedan por ver en cuanto a HTML son los formularios. Es más que seguro que todas las personas, al menos una vez en su vida, han visto un formulario, por ejemplo antes de obtener una cuenta de mail han llenado mínimamente un formulario.


Un formulario es un elemento del HTML que agrupa un conjunto de etiquetas con un fin determinado.
La etiqueta más importante para un formulario es <form> que debe cerrarse al final con la etiqueta </form>, dentro de este bloque irán los "campos" que los usuarios deben llenar. Esta etiqueta es la que le indica al navegador que todo lo que este dentro de ella será un formulario.


Los formularios son muy útiles para nuestra páginas web, por ejemplo, para obtener un feedback con los usuarios, puesto que ellos podrán hacernos llegar consultas, peticiones, críticas, etc. mientras que nosotros podremos darles una respuesta ya sea vía mail, si nosotros lo requerimos y el usuario lo provee, o mismo en la pagina realizando las modificaciones pertinentes.


Ahora bien, la etiqueta <form> por sí sola no muestra nada en un documento HTML , solo su contenido es lo que el usuario verá y estos se crean con las siguientes etiquetas:


Etiqueta INPUT 
Cuando queremos que el usuario ingrese un texto, un número, una edad, un email utilizaremos el elemento denominado "Input" del Tipo "Texto".
La etiqueta es <input type="text" /> que debe cerrarse con " />", es decir, "<input …[atributo/s=valor/es]… />". Esta etiqueta genera un cuadro de ingreso de texto.

Ejemplo visual de un <input type="text" />



Input Type Text


Cuyo código es:
Nombre: <input type="text" name="nombre" /><br />
Apellido: <input type="text" name="apellido" />



Etiqueta TEXTAREA

Cuando queremos que el usuario ingrese un texto extenso, como una descripción, un comentario, una crítica, es decir, elementos que tendrán gran cantidad de caracteres utilizaremos la etiqueta <textarea> que debe cerrarse con </textarea>. Esta etiqueta es similar al <input type="text" /> con la diferencia que su objetivo es almacenar un texto relativamente grande pudiendo utilizar múltiples líneas.

Ejemplo visual de un <textarea>
 

Textarea



Cuyo código es:
Descripción: <textarea></textarea> 


Etiqueta para RADIO BUTTON
Cuando queremos que un usuario elija una opción de varias y solo pueda ser una sola utilizaremos el concepto de "Radio Button", un ejemplo clásico de esto es la opción de sexo, es decir, "Hombre" – "Mujer", cuando se selecciona "Hombre" se deselecciona "Mujer" y viceversa.
La etiqueta base es <input> y su atributo "Type" es "Radio" es decir, <input type="radio"
/>
 
Ejemplo visual de un <input type="radio" />
 



Radio Button


El código del ejemplo es el siguiente:
<input type="radio" name="sexo" value="hombre" />Hombre<br />
<input type="radio" name="sexo" value="mujer" />Mujer<br />
Los atributos "name" y "value" los veremos más adelante en este mismo episodio.



Etiqueta para CHECKBOX
Cuando queremos que los usuarios elijan una o más opciones al mismo tiempo no podremos utilizar los "Radio Button", deberemos utilizar un nuevo concepto llamado "Check Box" cuya sintaxis es la siguiente:
La etiqueta base es <input> y su atributo "Type" es "Check" es decir, <input type="check"
/>
 
Ejemplo visual de un <input type=" check" />


Checkbox
El código del ejemplo es el siguiente:
<input type="checkbox" name="intereses" value="juegos" />Juegos<br />
<input type="checkbox" name="intereses" value="peliculas" />Películas<br />
<input type="checkbox" name="intereses" value="tv" />TV<br />

<input type="checkbox" name="intereses" value="otros" />Otros<br /> 

Botón RESET & SUBMIT
Bien, hasta aquí tenemos la mayoría de los elementos aprendidos, a continuación veremos 2 botones esenciales para la utilización de formularios, estos son "Reset" [Restablecer] y "Submit" [Para términos prácticos "Enviar"].
El primero, que restablecerá todo los elementos del formulario a "blanco" o "nada", tiene la siguiente sintaxis:


<input type="reset" value="Limpiar" />


El segundo, que enviará los datos del formularios, tiene la siguiente sintaxis:


<input type="submit" value="Enviar" />


Visualmente ambos botones quedan de la siguiente manera:
 

Button Reset - Submit




Bien, ya nos estamos acercando al momento donde debemos empezar a perfeccionar nuestros formularios para que se vean bien, sean acordes a los estándares de la W3 y por supuesto tenga un buen funcionamiento, es decir, veremos más etiquetas especificas para determinados elementos y comenzaremos a utilizar atributos en etiquetas que vimos recientemente para mejorar y/o perfeccionar su uso.

Etiqueta para PASSWORD
Por ejemplo, si queremos agregar un campo en nuestro formulario para que el usuario ingrese su contraseña no podríamos utilizar el <input type="text" /> puesto que su contraseña quedaría expuesta a todas las personas que vean el monitor en el momento en que la escriba, por lo cual, debemos utilizar un Tipo de Input especifico para las contraseñas, este es "Password" cuya sintaxis es la siguente:


<input type="password" name="clave" />


Visualmente el Input Password con valor incluido queda así: 


Input Password


Bueno, hasta aquí hemos visto nuevas etiquetas de HTML que de seguro nos servirán, para proseguir con este capitulo comenzaré a explicar algunos atributos para empezar a hacer algunos formularios mas "útiles".

Determinar el tamaño de un TEXTAREA 
Si se han fijado el textarea que hemos creado anteriormente es muy pequeño como para manipular textos muy grandes, si bien el texto entrará será muy difícil su lectura. Para arreglar este problema tenemos dos atributos específicos de textarea que nos resultarán muy útiles, esto son " rows " y " cols ", es decir, columnas y filas. Veamos un ejemplo visual:

Atributos Rows y Cols de Textarea




El TextArea (1) tiene 2 filas y 20 columnas. Sintaxis: 
<textarea rows="2" cols="20">textarea 2 filas 20 columnas</textarea>

El TextArea (2) tiene 5 filas y 10 columnas. Sintaxis:
<textarea rows="5" cols="10">textarea 5 filas 10 columnas</textarea>
 
Creo que con estos dos ejemplos es mas que suficiente como para entender como se manejan estos atributos. Además, como pueden ver en el código y comprobarlo en el ejemplo visual, todo texto que se escriba entre la etiqueta de apertura del TextArea y la etiqueta de cierre estará contenido (en la visualización por el navegador) dentro de la caja de texto.

TEXTAREA como Solo Lectura (READONLY)
Muchas veces se habrán encontrado con páginas web que tienen el clásico "términos de licencia y uso" con el aún mas entrañable Checkbox "He leído y acepto los términos y condiciones de uso", si es así, se habrán dado cuenta que los términos de uso están dentro de un cuadro cuyo texto puede ser seleccionado, sin embargo, no se puede escribir en él. Bien esto se debe a que se utiliza un TextArea con el atributo de Solo Lectura cuya sintaxis es la siguiente:

<textarea rows="5" cols="20"  readonly="readonly">Términos de uso...</textarea>

Podrán comprobar ustedes mismos que el texto no puede ser editado debido al atributo de solo lectura. 
Además al igual que los Input, TextArea puede tener su atributo "name", ejemplo:


<textarea rows="5" cols="20"  name="descripcion">Descripcion</textarea>


Mas adelante veremos bien para qué sirve el atributo name, por ahora solo diré que lo deben utilizar pues son necesarios para obtener la información que las etiquetas contienen.

Bien, sé que en este capitulo he dicho que veríamos mas cosas, pero recapitulando un poco, creo que es necesario que primero practiquen con lo aprendido hoy, y en el próximo capitulo veremos, finalmente, formularios mas completos donde les enseñare los "métodos de formulario", más atributos y alguna que otra etiqueta nueva.