Introducción al

Desarrollo Front-End

¿Cuál es el cometido de un desarrollador front-end?

Un desarrollador/a front-end se encarga de maquetar la estructura semántica del contenido (HTML) y codificar el diseño en hojas de estilo (CSS).

<!DOCTYPE html>
<head>
    <title>Documento en HTML</title>
</head>
<body>
    <h1>Hola mundo!</h1>
</body>
</html>

Fundamentos del Desarrollo front-end

h1 {
    font-size:35px;
    color: green;
}

HTML

CSS

¿Qué es HTML?

Fundamentos del Desarrollo front-end

H

T

M

L

Hyper

Markup

Text

Language

Permite tomar texto, imágenes y demás elementos, organizarlos y presentarlos de una forma jerarquizada.

1 - HTML esencial

 1.1 - Etiquetas

<p>Hola mundo</p>
  • Es un lenguaje basado en etiquetas (tags).
  • Estas etiquetas delimitan el tipo de contenido.
  • El contenido en si va dentro de las etiquetas.

El navegador Web hace de lector e intérprete de HTML.

Fundamentos del Desarrollo front-end

1 - HTML esencial

<ul>
    <li>Número uno</li>
    <li>Número dos</li>
    <li>Número tres</li>
</ul>
  • Las etiquetas pueden estar anidadas.
  • La mayoría se abren y se cierran (/).
  • Se utiliza espacio de tabulador para aumentar la legibilidad.

 1.1 - Etiquetas

Fundamentos del Desarrollo front-end

1 - HTML esencial

<!DOCTYPE html>
  • Indica al navegador que el documento que viene es HTML (5).
  • No se cierra.
  • No se muestra.
  • Clara mejoría respecto a HTML 4.

Etiquetas de organización

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
            "http://www.w3.org/TR/html4/strict.dtd">

 1.1 - Etiquetas

Fundamentos del Desarrollo front-end

1 - HTML esencial

<html></html>
  • En la jerarquía de HTML, es la etiqueta padre, dentro de la cual tiene cabida todo el contenido.
  • No se muestra.

Etiquetas de organización

 1.1 - Etiquetas

Fundamentos del Desarrollo front-end

1 - HTML esencial

<head></head>
  • Descendiente  directo de <html>.
  • Contenido que tiene que ser procesado antes de cargar la página.
  • CSS, JavaScript, custom fonts, etc.
  • No se muestra.

Etiquetas de organización

 1.1 - Etiquetas

Fundamentos del Desarrollo front-end

1 - HTML esencial

<body></body>
  • Descendiente  directo de <html> y padre de todo el contenido visible.
  • Hermano (sibling) de <head>.
  • No se muestra.

Etiquetas de organización

 1.1 - Etiquetas

Fundamentos del Desarrollo front-end

1 - HTML esencial

<h1>Esto es un título</h1>
  • <h1><h2><h3> son etiquetas heading.
  • Sirven para expresar, en HTML, que el contenido entre las etiquetas es un titular o subtitular.

Etiquetas de contenido

<h2>Esto es un subtítulo</h2>

 1.1 - Etiquetas

Fundamentos del Desarrollo front-end

1 - HTML esencial

<p>
    Esto es un párrafo 
    de texto en HTML.
</p>
  • Distingue semánticamente el contenido como un párrafo de texto.

Etiquetas de contenido

 1.1 - Etiquetas

Fundamentos del Desarrollo front-end

1 - HTML esencial

<ul>
    <li>Lista desordenada.</li>
</ul>
  • Lista desordenada (unordened list).
  • Sirven para expresar, en HTML, que el contenido entre las etiquetas es una lista de elementos que no guardan orden.

Etiquetas de contenido

 1.1 - Etiquetas

Fundamentos del Desarrollo front-end

1 - HTML esencial

<ol>
    <li>Lista ordenada.</li>
</ol>
  • Lista ordenada (ordened list).
  • Sirven para expresar, en HTML, que el contenido entre las etiquetas es una lista de elementos que guardan orden correlativo.

Etiquetas de contenido

 1.1 - Etiquetas

Fundamentos del Desarrollo front-end

1 - HTML esencial

Ejercicio:

 1.1 - Etiquetas

Fundamentos del Desarrollo front-end

1 - HTML esencial

<a href="http://esat.es">ESAT</a>
  • Estructuras creadas para conectar diferentes partes de una página Web con información y recursos externos e internos.

Hiperenlaces

 1.2 - Enlaces

Fundamentos del Desarrollo front-end

1 - HTML esencial

<a href="http://esat.es" 
target="_blank">ESAT</a>
  • La etiqueta <a> acepta una serie de atributos:
    • href: el destino del enlace, entre "".
    • target: "_self", "_top", _"blank".

Hiperenlaces

 1.2 - Enlaces

Fundamentos del Desarrollo front-end

1 - HTML esencial

http://esat.es/game-development

Estructura de una URL

Protocolo
Hypertext Transfer Protocol

Servidor

Archivo

 1.2 - Enlaces

Fundamentos del Desarrollo front-end

1 - HTML esencial

<a href="https://maps.google.es/" target="_blank">Google Maps</a>
  • Siempre deben mostrar la URL completa, con protocolo.
  • Se usan cuando queremos enlazar a un contenido que está en un servidor específico, generalmente fuera del nuestro.

Hiperenlaces absolutos

 1.2 - Enlaces

Fundamentos del Desarrollo front-end

1 - HTML esencial

<a href="secciones/contacto.html">Contacto</a>
  • La ruta se establece de forma relativa a donde nos encontramos (index.html).
  • Solicita y enlaza a contenido que está alojado en el mismo servidor.

Hiperenlaces relativos

 1.2 - Enlaces

Fundamentos del Desarrollo front-end

1 - HTML esencial

Ejercicio:

 1.2 - Enlaces

Fundamentos del Desarrollo front-end

1 - HTML esencial

C

S

S

Cascading

Sheets

Style

  • Son hojas de estilo en cascada.
  • Disponibles (tal y como las conocemos ahora) desde HTML 4.

 2.1 - Selectores

Fundamentos del Desarrollo front-end

2 - CSS esencial

  • Las reglas CSS seleccionan una o varias etiquetas.
  • Para luego aplicar valores a propiedades.
<style>
    p {
        color: red;    
    }

</style>

<p>Esto es un párrafo</p>

SELECTOR

PROPIEDAD

VALOR

 2.1 - Selectores

Fundamentos del Desarrollo front-end

2 - CSS esencial

  • En cada declaración, se puede aplicar valores a más de una propiedad.
<style type="text/css">
    p {
        color: red;
        font-size: 1.2em;
        text-align: center;
    }
</style>
  • Estos valores se aplican a todas las instancias del selector.

En este caso a todos los párrafos

 2.1 - Selectores

Fundamentos del Desarrollo front-end

2 - CSS esencial

  • Los selectores permiten apuntar a etiquetas hijas de otras etiequetas (children tags).
<style type="text/css">
    ul li {
        display:inline-block;
        margin-right: 10px;
    }
</style>

En este caso a todos los items de la lista desordenada.

 2.1 - Selectores

Fundamentos del Desarrollo front-end

2 - CSS esencial

  • También llamadas "pseudo clases", sirven para definir un estado, posición o relación especial de un elemento HTML (tag).
<style type="text/css">
    a:hover {
        text-decoration: underline;
    }
</style>

En este caso, a todos los enlaces (<a>) cuando el ratón se sitúa sobre ellos (:hover).

ESTADO

 2.1 - Selectores

Fundamentos del Desarrollo front-end

2 - CSS esencial

  • También llamadas "pseudo clases", sirven para definir un estado, posición o relación especial de un elemento HTML (tag).
<style type="text/css">
    article p:first-child {
        font-size: 1.5em;
    }
</style>

En este caso, a todos los primeros párrafos (<p>) de hijos del elemento article.

POSICIÓN

 2.1 - Selectores

Fundamentos del Desarrollo front-end

2 - CSS esencial

  • También llamadas "pseudo clases", sirven para definir un estado, posición o relación especial de un elemento HTML (tag).
<style type="text/css">
    a:not(.destacado) {
        color: grey;
    }
</style>

En este caso, a todos los enlaces (<a>) que no tengan la clase .destacado (¿?) .

RELACIÓN

 2.1 - Selectores

Fundamentos del Desarrollo front-end

2 - CSS esencial

  • En el <head> de nuestra página HTML:
<!DOCTYPE html>
<html>
    <head> 
        <title>Mi Web</title>
        
        <!-- Estilos -->
        <style type="text/css">
            h1 {
                color: blue;
            }
        </style>   

    </head>
    <body>
        <h1>Hola mundo</h1>
    </body>
</html>

Considerado una muy mala práctica.

 2.1 - Selectores

Fundamentos del Desarrollo front-end

2 - CSS esencial

  • En las propias etiquetas/elementos HTML:
<!DOCTYPE html>
<html>
    <head> 
        <title>Mi Web</title>
    </head>
    <body>
        <h1 style="color:blue;">Hola mundo</h1>
    </body>
</html>

Esto es mucho peor.

 2.1 - Selectores

Fundamentos del Desarrollo front-end

2 - CSS esencial

  • En un archivo CSS independiente:
<!DOCTYPE html>
<html>
    <head> 
        <title>Mi Web</title>
        
        <link rel="stylesheet" href="css/estilos.css">

    </head>
    <body>
        <h1>Hola mundo</h1>
    </body>
</html>

Separar el contenido de la presentación (estilo) es siempre la mejor opción.



/* Estilos */
h1 {
    color: blue;
}

index.html

estilos.css

 2.1 - Selectores

Fundamentos del Desarrollo front-end

2 - CSS esencial

Ejercicio:

Leer:

 2.1 - Selectores

Fundamentos del Desarrollo front-end

2 - CSS esencial

  • Hsta ahora hemos usado los nombres de colores:
    • red, purple, green, black, etc..
  • Pero en CSS los colores comúnmente se especifican en forma hexadecimal (entre otras):
p {
    /* Color rojo */
    color: #FF0000;
}

 2.2 - Colores hexadecimales

Fundamentos del Desarrollo front-end

2 - CSS esencial

#FFFF00=

Rojo

Verde

Azul

 2.2 - Colores hexadecimales

Fundamentos del Desarrollo front-end

2 - CSS esencial

10 dígitos

10 dígitos + 6 primeras letras del alfabeto

Notación decimal (10)

76

(7x10) + (6x1)

76

 2.2 - Colores hexadecimales

Fundamentos del Desarrollo front-end

2 - CSS esencial

Notación hexadecimal (16)

76

(7x16) + (6x1)

118

 2.2 - Colores hexadecimales

Fundamentos del Desarrollo front-end

2 - CSS esencial

Notación hexadecimal (16)

FF

(15x16) + (15x1)

255

 2.2 - Colores hexadecimales

Fundamentos del Desarrollo front-end

2 - CSS esencial

Notación hexadecimal (16)

#7403AB

(7x16) + (4x1) = 116

(0x16) + (3x1) = 3

(10x16) + (11x1) = 171

 2.2 - Colores hexadecimales

Fundamentos del Desarrollo front-end

2 - CSS esencial

Colores disponibles

255 x 255 x 255

Más de 16 millones.

 2.2 - Colores hexadecimales

Fundamentos del Desarrollo front-end

2 - CSS esencial

  • Todos los elementos dentro de <body> están contenidos en un rectángulo invisible llamado "box".
  • Hay elementos de nivel bloque (block level) cuya caja (box) ocupa todo el ancho disponible.
  • Otros elementos son en línea (inline), es decir, que ocupan sólo el ancho necesario y fluyen  con el resto.
  • Podemos alterar ese comportamiento con la propiedad CSS "display".

Box Model (modelo de caja)

(Demo párrafo, enlace y display.)

 2.3 - Modelo de

Fundamentos del Desarrollo front-end

2 - CSS esencial

¿Cómo sabe el navegador cuánto espacio vertical debe haber entre cada elemento HTML?.

Box Model (modelo de caja)

 2.3 - Modelo de caja

Fundamentos del Desarrollo front-end

2 - CSS esencial

Contenido

+

Padding

+

Borde

+

Margin

Los navegadores incluyen estilos CSS propios (reset).

 2.3 - Modelo de caja

Fundamentos del Desarrollo front-end

2 - CSS esencial

(Chrome Dev Tools)

  • Usadas para diferenciar entre los elementos HTML.
    • Hasta ahora estábamos seleccionando todas.
  • Las clases hacen accesibles elementos individuales de HTML.
.lista {
    margin-left: 20px;
}
  • Se pueden utilizar junto con los selectores comunes.
ul.lista li a {
    font-weight:bold;
}

 3.1 - Selector de clase

Fundamentos del Desarrollo front-end

3 - Clases y layout básico

<ul class="lista">
    <li>Hacer la compra.</li>
</ul>
<ul class="lista">
    <li><a href="#">Enlace</a></li>
</ul>

Ejercicio 3.1

 3.2 - Divs y elementos de layout

Fundamentos del Desarrollo front-end

3 - Clases y layout básico

  • Div (división), es un elemento de nivel de bloque que se utiliza para agrupar contenido relacionado.
<div class="cabecera">
    <ul>
        <li><a href="index.html">Portada</a></li>
        <li><a href="noticias.html">Noticias</a></li>
        <li><a href="contacto.html">Contacto</a></li>
    </ul>
</div>

<div class="principal">
    <!-- Contenido principal -->
</div>

 3.2 - Divs y elementos de layout

Fundamentos del Desarrollo front-end

3 - Clases y layout básico

  • Los divs y todos los elementos HTML pueden ser centrados.
/* Elemento block level 
   y ancho fijo */

div {
    width: 500px;
    margin: 0 auto;
}
/* Hijos (chlidren) de
   un block level */

div h1 {
    text-align:center;
}

Ejercicio 3.2

4.1 - Imágenes de contenido

Fundamentos del Desarrollo front-end

4 - Imágenes

  • La etiqueta o tag HTML para las imágenes es <img>:
<img src="imagenes/imagen1.png" alt="Mi super imagen">
  • Es una etiqueta que no se cierra (empty).
  • Se debe añadir la etiqueta alt (alternativo) para hacerla accesible a dispositivos que leen imágenes.
  • Es una etiqueta de nivel inline pero se puede transformar con la propiedad display de CSS.

4.1 - Imágenes de contenido

Fundamentos del Desarrollo front-end

4 - Imágenes

  • La mayoría de las imágenes en Web pertenecen a la categoría de contenido, layout o interfaz.
  • Las imágenes de contenido complementan el texto y son necesarias en el contexto de la información.

Ejercicio 4.1

4.2 - Imágenes de layout

Fundamentos del Desarrollo front-end

4 - Imágenes

  • Generalmente se usan como fondo (background) y complementan el estilo y presentación de la página pero no son indispensables para comunicar toda la información.
  • Se crean con la propiedad "background" de CSS.
div {
    background-image:url(imagenes/imagen.jpg);
}

4.2 - Imágenes de layout

Fundamentos del Desarrollo front-end

4 - Imágenes

  • Puede obtener rutas absolutas o relativas.
/* Relativo */
div {
    background-image:url(imagenes/imagen.jpg);
}

/* Absoluto */
div {
    background-image:url(http://www.esat.es/imagenes/imagen.jpg);
}
  • Siempre especifica un color de fondo por si la imagen no carga.
div {
    background-color: #999999;
    background-image:url(imagenes/imagen.jpg);
}

4.2 - Imágenes de layout

Fundamentos del Desarrollo front-end

4 - Imágenes

  • Las imágenes de fondo (background) se pueden posicionar con la propiedad CSS "background-position".
div {
    background-position: bottom right;
    background-image:url(imagenes/imagen.jpg);
}
  • El primer argumento, eje Y puede ser top, center o bottom.
  • El segundo argumento, eje X, puede ser left, center o right.

(Demo - Lorenpixel)

4.2 - Imágenes de layout

Fundamentos del Desarrollo front-end

4 - Imágenes

  • Las imágenes de fondo (background) se pueden repetir para ocupar el espacio de la etiqueta HTML contenedora.
div {
    /* Repetir siempre */
    background-repeat: repeat;

    /* Repetir eje Y */
    background-repeat: repeat-y;

    /* Repetir eje X */
    background-repeat: repeat-x;

    /* No repetir */
    background-repeat: no-repeat;
}

(Demo - Lorenpixel)

Ejercicio 4.2

5.1 - Fuentes

Fundamentos del Desarrollo front-end

5 - Fuentes y formularios

  • El estilo de las fuentes se controla con CSS.
  • Si no especificamos nada, el navegador selecciona una fuente por defecto.
  • Para seleccionar una fuente se utiliza la propiedad CSS "font-family".
body {
    font-family: Helvetica, Arial, "Times New Roman", sans-serif;
}

FUENTE IDEAL

FUENTES DE REEMPLAZO (FALLBACK)

  • No todos los S.O. tienen las mismas fuentes.

5.1 - Fuentes

Fundamentos del Desarrollo front-end

5 - Fuentes y formularios

  • Los navegadores también tiene estilos CSS por defecto para las propiedades del texto, al igual que con el Box Model.
/* Reset actualizado */
html, body, h1, h2, h3, p, ol, ul, li, a {
    /* Box model reset*/
    padding: 0;
    border: 0;
    margin: 0;

    /* Font model reset */
    font-size: 100%;
    font: inherit;
}

5.1 - Fuentes

Fundamentos del Desarrollo front-end

5 - Fuentes y formularios

  • Algunas propidades CSS relacionadas con el texto y la tipografía.
p {
    font-size: 22px;
    font-weight: bold;
    font-style: italic;
    text-transform: uppercase;
    line-height: 20px;
}

(Demo)

Ejercicio 5.1

5.2 - Formularios

Fundamentos del Desarrollo front-end

5 - Fuentes y formularios

  • Son el método más común para recibir feedback de los usuarios de nuestra Web.
<form>
    <label for="nombre">Nombre</label>
    <input type="text" id="nombre">
</form>
  • Hay varios tipos de controles e inputs para trabajar con formularios.

5.2 - Formularios

Fundamentos del Desarrollo front-end

5 - Fuentes y formularios

  • Las etiquetas (tags) HTML "input" y "label" son de nivel inline, se suelen convertir en nivel bloque.
label, input {
    display:block;
}
  • Una vez realizado el cambio, ya se puede manipular con CSS igual que con otras etiquetas de nivel bloque.
label {
    margin-bottom: 10px;
}
input {
    width: 500px;
    margin-bottom: 25px;
}

5.2 - Formularios

Fundamentos del Desarrollo front-end

5 - Fuentes y formularios

  • Para acceder vía CSS a inputs en particular (botones, etc), se usan los selectores de atributos.
/* Botón de enviar */
input[type=submit] {
    width: 200px;
    text-align: center;
}
/* Campo de texto */
input[type=text] {
    width: 500px;
    padding:5px;
}
  • Primero seleccionan el nombre del atributo y luego el valor.

Ejercicio 5.2

Introducción al Desarrollo Front-end

By Juan Andrés Núñez

Introducción al Desarrollo Front-end

  • 1,874