Blog de clase Tecnologías para el desarrollo de aplicaciones web

Blog de clase

View on GitHub
14 August 2021

Tecnologías del Desarrollo Web(HTML & CSS)

by Santiago Henao González y Luisa María Zapata Saldarriaga

Frontend

La parte de la aplicación que tiene interacción con el usuario. Construido principalmente en las 3 principales tecnologías de la web.

HTML

Es el lenguaje de marcado(markup) sirve para estructurar y describir el contenido de las páginas web. Es una extensión del lenguaje de XML.

Los navegadores están equipados para interpretar HTML para poder renderizar sitios web. Hay herramientas(frameworks) que facilitan el desarrollo pero los sitios web generados siempre están creados usando las tecnologías básicas.

Consiste en elementos o tags que describen los diferentes tipos de contenidos.

Anatomía de elementos HTML

<p> HTML es un lenguaje de marcado</p>

Las etiquetas que describen el contenido se abren y cierran y llevan el contenido que describen en medio.

El contenido de los elementos puede ser otros elementos hijos.

Doctype

Es la tag que le dice al navegador que tipo de documento se está entregando y la versión de html usada.

html

Es la tag que contiene toda la página web, ósea todo el contenido.

Es la etiqueta que no se muestra en la página ni hace parte de la estructura, más bien brinda información al navegador.

body

Es donde va toda la estructura de la página web. La información que se debe mostrar.

Un ejemplo de una página básica es

<!DOCTYPE html>
<html>
	<!-- Metadatos -->
	<head>
		<title>Mi primera web</>
	</head>
	<!-- Contenido -->
	<body>
		<p>Contenido</p>
	</body>
</html> 

Elementos de texto

Hay múltiples elementos de texto en html, entre ellos están.

Cabeceras o títulos

Hay 6 niveles de títulos que se pueden usar en html, a menor el nivel más grande el título.

<h1>Título 1</h1>
<h2>Título 2</h2>
<h3>Título 3</h3>

image

Párrafos

Es texto simple.

<p>Texto de prueba</p>

image

Texto en negrilla y en itálica

Se puede resaltar texto cuando se busca darle importancia o énfasis usando estas etiquetas, se recomienda usar las nuevas versiones de la etiquetas de resaltado y italización ya que estas acarrean un significado semántico que ayuda a optimizar las búsquedas web.

<p> orem ipsum dolor sit amet <b>adipisicing</b> elit. Ullam labore blanditiis eum <strong>necessitatibus</strong>  eius maiores numquam dolorum <i>repellendus dignissimos!</i>  Laborum debitis sunt voluptate! Placeat <em>aliquid aut eveniet</em>  amet quia magni.</p>

image

Listas

Son elementos que buscan ordenar contenido relacionado entre sí, hay varios tipos de ellas.

Listas ordenadas

Listas cuyo orden importa y por lo tanto sus elementos son enumerados por defecto.

<ol><!-- listas ordenadas -->
	<li>item 1</li>
	<li>item 2</li>
	<li>item 3</li>
</ol>

image

Listas sin orden

Son listas en las que el orden no importa y por lo tanto no están numeradas, los elementos vienen indicados por viñetas.

<ul><!-- listas ordenadas -->
	<li>item 1</li>
	<li>item 2</li>
	<li>item 3</li>
</ul>

image

Listas de descripción

No son muy usadas, similares a diccionarios que almacenan términos con sus respectivas descripciones.

<dl><!-- lista descripción -->
	<dt>leche</dt><!-- Termino -->
	<dd>Bebida color blanco</dd><!-- Descripción -->
	<dt>leche</dt>
	<dd>Bebida color blanco</dd>
</dl>

image

Imágenes

Es una etiqueta que permite poner imágenes en los sitios web, por medio de los atributos de los elementos se especifica su origen y se puede modificar.

<img src="Prueba.jpg" alt="texto alternativo" width="200"><!-- limitada a 200 pixeles de ancho -->

Enlaces

Elementos que por medio de un clic nos permiten movernos a partes determinadas de la página web o a sitios externos.

<a href="http://www.pagina.com">Enlace</a>

image

Etiquetas semánticas

Con el objetivo de facilitar el trabajo de los buscadores se han introducido etiquetas que subdividen la página web en partes importantes, de manera que los algoritmos de los buscadores pueden encontrar fácilmente determinadas partes de las mismas. No agregan visualmente al sitio pero si a su funcionalidad.

Etiqueta usada para contener los menús de navegación que permiten moverse más fácilmente por un sitio web, normalmente contienen arreglos de elementos tipo anchor().

Usada para delimitar las cabeceras con información importante de la página.

article

Etiqueta que delimita el contenido del que se trata de la página.

Pie de página de la página o de una determinada parte de la misma.

main

Se usa para contener el contenido principal de la página, normalmente contiene etiquetas article dentro de sí.

section

Usada para dividir en secciones una página web.

aside

En esta etiqueta se suele ser usada para presentar enlaces a sitios externos de interés relacionados con la página web .

Un ejemplo de uso de dichas etiquetas se muestra a continuación.

<header><!-- Cabecera -->
	<nav><!-- menú -->
		<ul>
			<li><a href="sitio-1">Enlace 1</a></li>
			<li><a href="sitio-2">Enlace 2</a></li>
		</ul>
	</nav>
</header>
<section><!-- sección -->
	<main>
		<article>
			<p>Contenido</p>
		</article>
	</main>
</section>

CSS

Es la capa de estilo de las páginas web. Consiste en numerosas propiedades que se usan para darle formato al contenido: fuentes, espaciado y ubicación. Todo esto se logra estableciendo reglas que tienen la siguiente forma.

image

Las propiedades que CSS puede modificar dependen del elemento que se esté modificando. Para modificar determinados elementos del documento es importante tener en cuenta dos atributos de los elementos html, estos son, las clases o class y el id los cuales permiten aplicar cambios a varios elementos o a uno en específico, respectivamente.

<nav id="menu-principal" class="menu">
    <ul>
	<li><a href="#">enlace menu 1</a></li>
	<li><a href="#">enlace menu 2</a></li>
	<li><a href="#">enlace menu 3</a></li>
	<li><a href="#">enlace menu 4</a></li>
	<li><a href="#">enlace menu 5</a></li>
    </ul>
</nav>	

image

Aplicar estilos

Hay tres maneras de aplicar estilos en CSS.

Inline

Usando el atributo style de los elementos html es posible cambiar propiedades de un elemento específico.

<p style="color: red">Texto de prueba</p>

image

Internos

Usando la etiqueta style dentro del head del html se puede aplicar estilos a toda la página.

<style>
    h1 {/* Se selecciona todas las etiquetas h1 de la página */
	color: salmon;/* Cambio de color */
	text-align: center;/* Cambio de alineación de texto */
    }
</style>	

image

Externos

Se puede importar un archivo CSS externo en el cual están guardados los estilos a usar. Usando estos archivos se pueden aplicar estilos en diferentes páginas sin necesidad de reescribirlos. Se importa usando la etiqueta link en el head de la página.

<!-- Se importa la hoja de estilos styleTest.css -->
<link rel="stylesheet" href="styleTest.css">

En la hoja de estilos

/* Aplica selección por clase y por tag */
.menu ul li a {/* Cadena de selectores, los anchor  contenidos dentro de las tags y clases especificadas */
    color: yellow;
}

El menu con la clase “menu” se ve modificado.

image

También se puede seleccionar por id de la siguiente manera

/* Selección por id */
#menu-principal {
    text-transform: capitalize;
}

image

Estilos de texto

Hay muchas propiedades que se pueden modificar en un texto, entre ellas están.

• "color" que modifica el color del texto.
• "font-size" que cambia el tamaño de la fuente.
• "font-family" permite seleccionar otra familia de fuente, cambiando el tipo de letra.
• "text-transofrm" que incluye aplicar transformaciones como capitalizar primera letra, poner todo en mayúsculas o en minusculas.
• "font-style" la cual cambia el estilo de la fuente(itálica, negrilla, normal…).
• "line-height" que mueve la línea sobre la que se escribe el texto.
• "text-align" que controla la alineación del texto.
<p class="text mayuscula">Texto de prueba</p>
.text {
    color: yellowgreen;
    font-size: 25;
    font-style: italic;
    font-family: 'Times New Roman', Times, serif;/* Fallback en caso de no cargar fuente */
    line-height: 5;
    text-align: center;
}
	
.text.mayuscula {/* Cadena de selectores, que tenga ambas clases */
    text-transform: uppercase;
}		

image

Colores

Hay varias maneras de especificar colores en CSS, ya sea por nombre, por código rgb o por hexadecimal.

<div class="bloque-color">
    <p>Texto</p>
</div>
.bloque-color {
    color: teal;
    background-color: rgb(255, 0, 0);
    
}

.bloque-color p {
    text-decoration: underline;
    text-decoration-color: #fff;
}

image

Continuación de la clase CSS

Se pueden utilizar en todos los elementos sin tener que especificar la clase

  1. first-child : Le aplica el estilo al primer elemento que encuentre de esa clase
  2. last-child : Le aplica el estilo al último elemento que encuentre de esa clase
  3. nth-child(X) : Le aplica el estilo al n-ésimo elemento que encuentre de esa clase y la X significa el número al que se va asignar el estilo. También puede darse el parámetro de ‘odd’ para coger los items impares

Para generar una lista de varias items de manera automática se puede utilizar lo siguiente:

    <header>
        <nav>
            ul> li*10{item $}        
    
        </nav>

    </header>  

En el último item de la lista presentada se aplicará el estilo css

.lista li: last-child(4){

    color= blue
}

Estilos de enlaces

.enlace li: a: link { 
    color= dark
    text-decoration:none /* Sin subrayado */
    font-size: 20px /* Tamaño de la fuente */
}

.enlace li: a: visited { 
    color= blue /* Cuando se visita el enlace queda marcado en azul */
}
    
}
.enlace li: a: hover { 
    color= dark
    text_decoration:underline /* Subraya cada que pasa por el enlace */
}

.enlace li: a: active { 
    color= dark
    text_decoration:underline /* Subraya cada que pasa por el enlace */
}

CSS BOX MODEL

image

Espaciado y dimensiones

.box {
    color= white;
    background-color:black  /* Fondo de la margen */
    font-size= 50px;
    display: inline /* Se ajusta al espacio, por defeto en block  */
    /* COn el parámetro inline no se pueden ajustar los tamaño en cambio si inline-block si lo deja editar */
    border: 10px solid red  /*  Tamaño-tipo de borde(punteado, sólido-color)  */
     /* El padding se puede ajustar para todos los lados, o solo para uno en específico  */
    padding-top=20px;  /* Ajusta el alto puede cambiarse por left, right, bottom */
    padding-bottom=20px; 
    padding-right=20px; 
    padding-left=20px; 
/* Se pueden ajustar los 4 parámetros en una línea */
/* Padding: Top, right, botton,left */
    padding= 20px 40px 10px 13px; 
    margin= 40px 20px /* Margin:Top, botton */
    position=absolute;/* Sobresale sobre los demás elementos*/
}

ELEMENTOS BLOQUE

ELEMENTOS EN LÍNEAS

POSICIONAMIENTO ABSOLUTO

● El posicionamiento por defecto es el relativo, los elementos se posicionan uno después de otro dependiendo del orden que tenga en el código HTML. Estilo: position: relative

● En el posicionamiento absoluto los elementos no afectan a los demás y estos son superpuestos

● Estilo: position: absolute.

● Se usa top, left, bottom, right para posicionar el elemento con respecto al elemento padre con posición relativa.

PSEUDO-ELEMENTOS

● before

● after

a.enlaces li: before{
    content: "=>";
    color: blue;
    margin-right: 10px;
};


LAYOUTS(Manejo de las planillas)

Sirven apra cambiar el posicionamiento de los elementos en la página web ● floats: Elementos flotantes

● flex-box: Elementos flexibles

● grid: Cuadrilla

En caso de que los flotantes interfieran en el espacio de otros elementos, se debe de aplicar el siguiente comando:

<div class="clear"></div>
.clear{
    clear:both;
    }

.floats li { list-style: none; background-color:yellow ; display: inline-block; /* Separa por bloques dejando modficar el tamaño / width: 50px; height: 50px; margin-bottom: 10px / No se toma todo el ancho/ float: left; /Elegir si apila los elemntos a la izquierda-derecha*/ margin-right: 10px;

}


* flex-box:
```css
.flex {
    display:flex;
    flex-direction:row;
    align-items:center;
    justify-content:space-between;
    }

.flex div {
    width:100px;
    height: 100px;
    background: red;
    margin-right:10px;
    margin-bottom:10px;
    }

.flex div.small {/* No se toma todo el ancho*/
    width:50px;
    height:50px;

    }

.flex.column {/* No se toma todo el ancho*/
    flex-direction:row;  
    justify-content:space-between;
    
    width:50px;
    height:50px;

    }
.grid{
    display:grid;
    grid-template-columns:1fr 1fr; /* Dos columnas con el tamaño de una fracción */ 
}
.grid{
    display:grid;
    grid-template-columns:1fr 1fr; /* Dos columnas con el tamaño de una fracción */
    gap:10px;/* Separar por bloques */

    
}
.grid div{
    background-color:yelow;
    border:1px solid black; /* Divide */
    
}

RESPONSIVE

Ajusta cualquier tipo de pantalla respecto a su tamaño

@media only screem and (min-width: 768px){
    .box{
    width:300px;
    height:300px;

    }

}

Enlaces de interés:

https://css-tricks.com/snippets/css/a-guide-to-flexbox/

https://flexboxfroggy.com/

https://css-tricks.com/snippets/css/complete-guide-grid/