Curso HTML+Css+Sass+Accesibilidad+Javascript
Curso HTML+Css+Sass+Accesibilidad+Javascript
2021
Who i am?
Javier Samper Arias
https://github.com/Jsamper92
https://www.linkedin.com/in/javiersamperarias/
Índice
1. Sintaxis
2. Estructura
3. Bloques de contenido
4. Bloques de texto
5. Data Atributos
6. Listados
7. Enlaces
8. Imágenes, audio y video
9. Tablas
10. Formularios
1. Sintaxis
Sintaxis
HTML Básico 4
2. Estructura
Estructura
Diccionario: https://codepen.io/manz/full/maVXvv
HTML Básico 5
Estructura - Head
HTML Básico 6
3. Bloques de contenido
Bloques de contenido
En bloque
En línea
4. Bloques de texto
Bloques de texto
Ejemplo: https://codepen.io/na7acha/pen/bGbZMrM
HTML Básico 8
5. Data Atributos
Elementos - Atributos
https://www.w3schools.com/tags/att_data-.asp
https://developer.mozilla.org/es/docs/Web/CSS/attr()
HTML Básico 9
6. Listados
Listados
● Lista no ordenada ● Lista ordenada
● Listado de descripción
Ejemplos:
https://codepen.io/na7acha/pen/gOYEjZw
HTML Básico 10
7. Enlaces
Enlaces
HTML Básico 11
8. Imágenes, audio y vídeo
HTML Básico 12
Imágenes - Figure
https://codepen.io/na7acha/pen/VwZREwr
HTML Básico 13
9. Tablas
Tablas
https://codepen.io/na7acha/pen/dybrgeK
HTML Básico 14
10. Formulario
Formularios
Atributos de un formulario
● action
● method
● Fieldset
● Legend
Ejemplos: https://codepen.io/na7acha/pen/dybrQex?editors=1010
https://developer.mozilla.org/es/docs/Learn/Forms/Your_first_form
HTML Básico 15
Formularios - Elementos
2. Select
5. Datalist
3. Textarea
HTML Básico 16
Formularios – Input types
Type: File
Type: Number
HTML Básico 17
Formularios – Input attributes
HTML Básico 18
Etiquetas de formateo
¡¡Recomendable usar hoja de estilos para formatear
texto!!
HTML Básico 19
Práctica
https://github.com/Jsamper92/AcademiaDEX-HTML-CSS-ACCESIBILIDAD-JA
VASCRIPT
HTML Básico 20
Bibliografía
1. https://developer.mozilla.org/es/docs/HTML/HTML5
2. https://www.w3schools.com/html/default.asp
3. https://www.w3.org/
4. https://validator.w3.org/
HTML Básico 21
CSS Básico
CSS Básico 22
2019
Bloque CSS
1. Usos
2. Sintaxis
3. Selectores
4. Especificidad
5. Cascada y herencia
6. Box model
7. Custom Properties
8. Selectores
9. Unidades
10. Posicionamiento
11. Pseudo-clases
12. Pseudo-elementos
13. Overflow
14. Diseño Responsive
CSS Básico 23
Usos
Estilos en línea
CSS Básico 24
Sintaxis
CSS Básico 25
Cascada y herencia
https://www.w3schools.com/css/exercise.asp?filename=exercise_howto1
CSS Básico 26
Especificidad
CSS Básico 27
Box Model
Cada elemento que definimos en un HTML se mostrará en el navegador como una caja
CSS Básico 28
Position - Position
Ejemplo: https://codepen.io/bthehuman/pen/BNraLo
CSS Básico 29
Pseudo-clases
CSS Básico 30
Pseudo-elementos
CSS Básico 31
Overflow – Overflow contenido
Scroll-behavior
https://www.campusmvp.es/recursos/post/como-suavizar-scrolls-automaticos-solo-con-CSS-y-scroll-behavior.a
spx
Ejercicio Scroll-behavior:
https://codepen.io/jsamper92/pen/YzqQeaa
CSS Básico 32
Overflow – Overflow textos
White-space: determina como se maneja el espacio en blanco dentro de un elemento.
CSS Básico 33
Fuentes
En este apartado se comentan las propiedades que permiten describir el tipo de letra (la fuente) en una página web o aplicacion:
● Interlineado: line-height (no es propiamente una característica del tipo de letra, pero se comenta en esta lección)
● La propiedad compuesta font
● Tipo de letra: font-family
● Tamaño del tipo de letra: font-size
● Grosor del trazo (negrita): font-weight
CSS Básico 34
Texto - Unidades
CSS Básico 35
Custom properties
CSS Básico 36
CSS – Diseño Responsive
2020
Diseño Responsive
● https://css-tricks.com/snippets/css/a-guide-to-flexbox/
CSS Básico 38
Diseño Responsive - Media queries
https://codepen.io/TrentWalton/full/kqxDy 🡪 Ejemplo
https://www.w3schools.com/cssref/css3_pr_mediaquery.asp🡪Más info
CSS Básico 39
Diseño Responsive - Grid
CSS Básico 40
Diseño Responsive – CSS Grid
● https://css-tricks.com/snippets/css/complete-guide-grid/ 🡪 documentación
● https://codepen.io/IbanVeiss/pen/KJgbJE 🡪 Ejemplo básico Grid
CSS Básico 41
Referencias
1. https://www.w3schools.com/css/default.asp
2. https://developer.mozilla.org/en-US/docs/Learn/CSS
3. https://jigsaw.w3.org/css-validator/
4. https://css-tricks.com
5. https://caniuse.com
6. https://www.w3.org/TR/selectors/#specificity
CSS Básico 42
CSS - Framework
2021
Índice
3. Boostrap CSS
Normalmente podremos instalarlos a través de un link al CDN del framework, o bien mediante su instalación por módulo NPM que nos
suele venir indicado en la documentación del framewok.
Cuando decidimos utilizar un framework CSS hay que tener en cuenta las ventajas y las desventajas que nos aporta el mismo, para
poder decidir si nos compensa usar uno o es mejor usar otras opciones.
Ventajas
Las principales ventajas que nos aporta son las siguientes:
● Acelera el desarrollo de las páginas web, ya que conociendo un poco el framework CSS, se pueden desarrollar las páginas de
una manera más rápida que si lo hacemos desde cero, ya que al tener hecha la estructura base, solo debemos re-estilizarlo.
● Facilita el trabajo en equipo, ya que si hemos desarrollado una página y sus estilos usando un framework, si posteriormente
otra persona necesita modificarlos y conoce ese framework, puede mantener la misma línea de desarrollo de las hojas de estilo y
esa página web.
● Garantiza que todo lo que se desarrolle sea compatible con todos los navegadores, lo que si tuviéramos que hacer nosotros
mismos supondría más tiempo y esfuerzo, y nos da una garantía extra de seguridad, ya que están muy testeados en este
aspecto.
● Los frameworks son mantenidos y evolucionados por la comunidad, por lo que los posibles errores son corregidos y sus
funciones van ampliándose, de manera que si decidimos usarlos, deberemos estar pendientes de los cambios de versión, para
ver si nos compensa actualizarnos o no.
Desventajas
A la hora de utilizar un framework no todo son ventajas, ya que hay una serie de desventajas que hay que tener en cuenta:
● Al emplear un framework estamos importándonos muchos estilos y librerías, de las que no empleamos todas. Este uso, de
una gran cantidad de elementos, hace que nuestra página web pese más y tarde más en descargarse.
● Si utilizamos un framework CSS, salvo que lo personalicemos, lo que requiere más conocimientos, nuestra página web se va a
parecer mucho a millones de páginas web diferentes que se han hecho con el mismo framework.
● Un framework CSS tiene una curva de aprendizaje, por lo que si queremos utilizarlo primero tenemos que aprender a hacerlo.
● Otra desventaja muy importante, aunque pueda no parecerlo, es que si utilizamos un framework sin haber aprendido CSS, no
vamos a saber hacer cualquier modificación sin el framework, ya que vamos a desconocer la base sobre la que funciona.
Frameworks CSS
Estos 4 frameworks, son un ejemplo de las librerías css más usadas, partiendo de las
más nuevas y menos consolidadas (Tailwind 2019 y Bulma 2016), a las más veteranas y
por tanto de mayor uso, (Foundation y Boostrap (ambos en 2011)
Estos 4 frameworks, y por norma general, la mayoría de las librerías, tienen estas
características en común:
- Dispone de una store propia donde comprar themes hechos para tu web, con una configuracion de personalizacion bastante
sencilla
- Pertenece a una comunidad de desarrolladores opensource tremenda, de manera que recibe constantes mejoras y
actualizaciones.
- Tiene integraciones con los frameworks frontend más populares - Tanto en React, como en Angular o Nuxt (El framework de Vue)
podemos encontrar adaptaciones directas que integran Bootstrap en componentes escritos para dichos lenguajes, haciendo su
inclusión más rápida y sencilla.
Como contras, si bien es relativamente simple comenzar, la gran cantidad de opciones puede hacer que sea fácil perderse como
principiante, además de que se ha vuelto tan omnipresente que a algunos desarrolladores les preocupa que los sitios web diseñados con
él no se destaquen.
Referencias
● Tailwind CSS:
https://tailwindcss.com/
● Bulma
https://bulma.io/documentation/overview/
● Foundation
https://get.foundation/
● Boostratp
https://getbootstrap.com/
CSS - Animaciones
2020
Índice
1. Introducción
2. Ventajas e inconvenientes
3. CSS Triggers
4. Transiciones
5. Animaciones
6. Will-change
7. Cubic-bezier
8. Buenas prácticas
Introducción
Las animaciones CSS3 permiten animar la transición entre un estilo CSS y otro. Las
animaciones constan de dos componentes: un estilo que describe la animación CSS y un conjunto
de fotogramas que indican su estado inicial y final, así como posibles puntos intermedios en la
misma.
Ventajas e inconvenientes
Ventajas
● Nos permite construir páginas web más dinámicas haciendo más atractiva y vistosa la propia
aplicación
● Al formar parte del estándar de la W3C heredan una sintaxis familiar y cuya implementación
es bastante simple, por lo que tiene una baja curva de aprendizaje.
Inconvenientes
https://csstriggers.com/
Propiedades
Las propiedades tienen un valor por defecto. Por lo tanto, para hacer una animación siempre debe existir un
valor inicial.
https://cssreference.io/
Transición
Las transiciones nos permiten animar propiedades CSS por medio de un disparador durante un
periodo de tiempo establecido.
Propiedades:
● Transition-property: elegimos la propiedad que cambiamos o elegir todas poniendo "all".
● Por performance es mejor elegir la propiedad concreta que queremos animar, en el caso de que no todas
las propiedades tengamos pensado animar. Aunque el valor por defecto es all, con lo cual, si tenemos
que animar todas nos podemos evitar poner all y escribir simplemente -> transition: .5s; en vez de
transition: all .5s;
● Transition-duration: en segundos.
● Transition-timing-function: Elegimos la función de la curva de velocidad. Ease-in.ease-out, etc...
● Transition-delay: elegimos el tiempo que va a tardar hasta que empiece la animación.
● Transition: engloba todas las propiedades en una.
● Sintaxis:
Transition: transition-property transition-duration transition-delay transition-time-function;
Disparadores
Las transiciones se disparan cuando una propiedad CSS cambia su valor, sin importar que
desencadenó (trigger) ese cambio de valor. Los posibles triggers pueden ser:
● Eventos js
● Pseudo clases css
○ :hover
○ :active
○ :target
○ :focus
○ :checked
○ :invalid :valid
○ :in-range :out-of-range
○ :required :optional
https://codepen.io/jsamper92/pen/wvoaPLp
Animaciones
Las animaciones nos permiten animar propiedades CSS por medio de un disparador durante un periodo de tiempo establecido.
Propiedades minimas:
● Animation-name: nombre
● Animation-duration: 0s, no acepta valores negativos
https://codepen.io/jsamper92/pen/LYbVzoM
Cubic-bezier
Es una curva que controla la relación tiempo / cambio en la animación.
● Eje X (Horizontal) -> tiempo
● Eje Y (Vertical) -> cambio de propiedades
La función cubic-bezier() recibe cuatro parámetros que son las coordenadas de los puntos de control de la curva
● Los dos primeros valores es la curva de entrada y los dos valores finales es la curva de la salida. Ejemplo:
○ Cubic-bezier(.25, .01, .25, 1)
https://cubic-bezier.com/#.17,.67,.83,.67
Buenas prácticas
● Debug y rendimiento
○ Framerate: Es la cantidad de cuadros que tiene por segundo. Una animación debe ir a 60fps
● Waterfall(cascada): le ofrece información sobre el tipo de cosas que hace el navegador mientras ejecuta su aplicación. Se
basa en la idea de que las cosas que hace un navegador cuando ejecuta un sitio se pueden dividir en: ejecutar js,
actualizar diseño, etc…
○ Recalculate style -> Recalcular el estilo, al cambiar un color recalcula el estilo
○ Layout -> Crea el layout que son todos lo cambios geométricos, margenes, etc
○ Paint -> Una vez hecho estos cambios geométricos pinta estos estilos calculadas
● Propiedad will-change: Propiedad que permite mejorar rendimiento de una app mandandola al hilo compositor. No mandar
will-change a todos los elementos. Ponerlo cuando sepamos que el elemento va a cambiar
Accesibilidad Web
2021
Índice
Hacer nuestras webs accesibles no sólo beneficia a este tipo de personas, nos beneficia a todos, ya que a veces por
circunstancias que escapan a nuestro control como una conexión lenta, un brazo roto o simplemente la vejez, no
podemos hacer un uso normalizado de la web.
¿Cómo convenzo al cliente?
1º Impulsa la innovación:
“Las funciones de accesibilidad en productos y servicios, a menudo
resuelven problemas imprevistos”
2º Mejora la marca:
“La diversidad es un concepto que cada vez está cobrando más
importancia en el mundo empresarial, de manera que emplear a
personas con algún tipo de discapacidad o incluir una declaración
de accesibilidad real, hace que las empresas obtengan un mayor
reconocimiento social y por extensión, la marca, ya que la población
cada vez está más concienciada y volcada con la inclusión de este
tipo de personas que hasta hace unos años quedaban
prácticamente excluidas de la gran mayoría de las actividades u
oportunidades laborales.“
¿Cómo convenzo al cliente?
3º Extiende el alcance del mercado
“El mercado global de personas con discapacidades es de más de mil
millones de personas, de manera que si pudiésemos “llegar” a ellas
haciendo nuestras webs accesibles, podríamos cubrir una cuota de
mercado que generaría unos 5 billones de euros de beneficio.”
“Cada vez más son los países que ponen foco en regular la accesibilidad digital”
¿Qué es la WCAG?
Los documentos WCAG (Web Content Accessibility Guidelines) son documentos técnicos que contienen un conjunto de políticas o
pautas, que debemos seguir para hacer que el contenido de nuestra web sea accesible para las personas con discapacidad, la cual,
como hemos hablado antes, no tiene por qué ser crónica o temporal.
Actualmente tenemos 2 versiones en las que apoyarnos, la WCAG 2.0 (2008) y la WCAG 2.1 (2018), que no es más que una
actualización de la 2.0.(También existe la WCAG 2.2 que aún está en fase de borrador pero que en breve tiempo, pasará a ser el
estándar).
Estos documentos, son generados por la WAI (Web Accessibility Initiative) que forma parte de la W3C (World Wide Consortium,
principal organización que rige los estándares de internet) y constan de unas 12-13 pautas organizadas bajo los 4 principios de la
accesibilidad (Perceptible, Operable, Comprensible y Robusto).
Para cada pauta, existen criterios de éxito comprobables mediante la combinación de pruebas automatizadas y evaluación humana,
(por ejemplo la usabilidad), distribuidos en tres niveles, según el nivel de conformidad/aceptación de los criterios que tienen como
requisitos y son : A, AA y AAA.
Para esto, ARIA, ofrece a los desarrolladores la opción de agregar información semántica complementaria a nuestros
desarrollos que seran interpretados por la mayoría de las diferentes tecnologías de asistencia:
- Roles para describir el tipo de widget presentado, como "menú", "elemento de árbol", "control deslizante" y "barra de
progreso".
- Roles para describir la estructura de la página web, como encabezados, regiones, áreas de búsqueda y áreas de
navegación.
- Las propiedades para describir los widgets de estado se encuentran, como "marcada" para una casilla de verificación,
"haspopup" para un menú que representa un submenú u otra ventana emergente y "expandido / contraído" para un nodo de
árbol.
- Propiedades para definir regiones activas de una página que probablemente recibirán actualizaciones ( como cotizaciones de
bolsa), así como una política de interrupción para esas actualizaciones.
- Propiedades para arrastrar y soltar que describen las fuentes de arrastre y los objetivos de colocación(dragganddrop)
- Proporcionar un método para la navegación por teclado en widgets.(precisan de una navegación interna, independizada de la general)
Ejemplo
A tener en cuenta
A pesar de que ARIA nos permite modificar sutilmente (o radicalmente) el árbol de accesibilidad de cualquier elemento de la
página, es lo único que cambia, es decir:
- ARIA no hará que el elemento pueda tener el foco ni le brindará gestores de eventos de teclado. (Esa sigue siendo parte de
nuestra tarea de desarrollo)
- No es necesario definir aria en los elementos nativos. Es decir, un elemento <input type="checkbox"> no necesita un atributo de
ARIA role="checkbox" adicional para anunciarse correctamente.
- También vale la pena mencionar que ciertos elementos HTML tienen restricciones sobre los roles y atributos de ARIA que se
pueden usar en ellos. Por ejemplo, a un elemento <input type=“password"> no se le puede aplicar un rol, como vemos en al
imagen.
Accesibilidad en frameworks - React vs Angular
https://es.reactjs.org/docs/accessibility.ht https://angular.io/guide/accessibility
ml#___gatsby
https://material.angular.io/cdk
/a11y/overview
Auditorías
Esta metodología recoge un conjunto de requisitos y procedimientos para que la evaluación sea lo más fiable posible.
Ambos, son empleados como verificación inicial, ya que nos indican los errores de nuestro
código a un nivel técnico y semántico. ( Es recomendable pasarlos antes que las demás herramientas.)
Herramientas de validación - TAW
TAW es una herramienta automática on-line para analizar la accesibilidad de sitios web. Creada
teniendo como referencia técnica las pautas de accesibilidad al contenido web ( WCAG 2.0) del
W3C.
Cuenta con más de 15 años, siendo la herramienta de referencia en habla hispana.
Herramientas de validación - WAVE
● Validadores adicionales
https://www.usableyaccesible.com/recurso_misvalidadores.php
● Carrusel accesible:
https://www.w3.org/WAI/tutorials/carousels/
Arquitectura CSS
2020
¿Quién soy?
Indice
1. Construcción del modelo de datos (cómo funciona el CSS por detrás)
2. Herencia, cascada y especificidad
3. BEM
4. ITCSS
5. Sass
6. Buenas prácticas
Construcción del modelo de datos
Cómo funciona CSS por dentro (DOM y CSSOM)
Flujo de ejecución motor de renderizado
Motores de renderizado
Herencia, cascada y especificidad ???
Herencia
Especificidad
Cascada
En su nivel más básico indica que el orden de las reglas CSS importa,
pero es algo más que eso. Que prevalezcan unos selectores sobre
otros en la cascada depende de tres factores (en orden de importancia.
Los primeros prevalecen sobre los últimos):
1. Orden del código/Herencia o cascada
2. Especificidad
3. Importancia
Cascada - Orden en el código
Cascada - Especificidad
La Especificidad es en sí una medida de cómo de específico es un selector.
La especificidad que tiene un selector se mide mediante 4 valores.
¿CÓMO COMBATIMOS LAS
ESPECIFICIDAD?
Metodologías CSS
OOCSS (Oriented Object CSS) : metodología basada en el concepto de “objeto” CSS, es decir un patrón
repetitivo que puede encapsularse en un pedazo independiente de HTML/CSS.
ITCSS (Inverted Triangle CSS) : esta metodología se basa en fijar la forma en la que se estructura el código
que generamos. Se conciben una serie de secciones o capas que se organizan con la forma de un triángulo
invertido
BEM (Block Element Modifier)
Es una metodología que te ayuda a crear componentes reutilizables y compartir códigos en el desarrollo
de aplicaciones.
- Fácil
- Modular
- Flexible
- Reusable
- Estructurado
Bloque. Unidad que es relevante por sí misma. (header, container, menu, checkbox, input)
Elemento. Es parte de un bloque que no tiene sentido por sí mismo y está semánticamente relacionado
con su respectivo bloque (menu item, list item, checkbox caption, header title)
Modificador. son variantes de componentes o elementos que modifican su aspecto sin llegar a cambiar su
significado, como, background de un botón, color de una alerta,... (alert--success, button--primary, ..)
BEM (Block Element Modifier)
Práctica
Ejercicio 1
1. Dada la estructura base, analizar el archivo index.html y migrar la
nomenclatura bajo la metodología BEM, clonando estas nuevas
clases en el archivo assets/styles/style.css
2. Una vez hecho esto comprobar el visual
https://github.com/Jsamper92/AcademiaDEX-HTML-CSS-ACCESIBILID
AD-JAVASCRIPT/tree/sass-block
ITCSS - Inverted Triangle css architecture
ITCSS - Inverted Triangle css architecture
Settings. Aquí se definen las variables al utilizar un preprocesador. No genera CSS
$main-color: #6834cb
Tools. Si se utiliza preprocesador, las funciones y mixins se definen en esta capa. Al igual que
la anterior, no genera CSS
@function sum($numbers...) {
$sum: 0;
@each $number in $numbers {
$sum: $sum + $number;
}
@return $sum;
}
Generic. Se refiere al código genérico, aquel que sirve para resetear o estandarizar los estilos base de los
navegadores. Por ejemplo un reset css o un normalize iría aquí.
* {
padding: 0;
margin: 0;
}
.search-bar {
background-color: $pearl;
color: $light-grey;
font-size: 22px;
}
Utils (trump): engloba a todas aquellas reglas que anulan cualquier otra que se haya definido en las capas anteriores.
Es la única capa en donde se permite utilizar !important. Un ejemplo sería tener una clase que nos permita ocultar
elementos mediante un display: none.
.d-none {
display:none!important;
}
SASS
SASS es el mejor ayudante para el desarrollador web a la hora de
trabajar en CSS gracias a sus múltiples funcionalidades: mixins,
variables, funciones, herencia, nesting.
Hay una gran confusión con respecto a la semántica del nombre Sass, y por
una buena razón. Sass nombra tanto al preprocesador como a su propia
sintaxis.
Sass
- Fuerte tabulación, nos evitamos las
llaves, puntos y coma
- Extensión: .sass
Scss
- La sintaxis funciona igual que CSS,
por tanto no hay prácticamente curva
de aprendizaje
- Extensión: .scss
Linea de comandos - Instalación sass
Instalamos sass en nuestro entorno de trabajo
npm install -g sass
Una vez lanzado nos indica que para parar dicho proceso
Compiled sass\styles.scss to css\styles.css
Press Crtl-C to stop
Hay que tener cuidad a la hora de definir estas variables, porque si las definimos dentro de una regla
anidada, solo funcionará dentro de ese anidamiento, para que tengan un mayor potencial hay que
definirlas fuera de los selectores
Sintaxis – SassCript: Cadenas de texto
Podemos tener cadenas de texto por ‘Hola’ o “Hola” o por
ejemplo las que no tienes comillas como en el caso de bold,
sans-serif, …
Dentro de los mixins se definen los parametros que usaremos para definir ciertos valores
Sintaxis – Directivas
Directiva @function: Se pueden definir directivas propias para que se pueden
utilizar en las hojas de estilos
Sintaxis – Directivas
@extend .javascript;
Buenas prácticas