Skip to content

Latest commit

 

History

History
331 lines (249 loc) · 9.54 KB

File metadata and controls

331 lines (249 loc) · 9.54 KB

Módulo 1 - Introducción

Contenido

HTML semántico

Escribir HTML semántico permite que nuestro código sea más legible, además de mejorar la interpretación de los lectores de pantalla, por lo que es beneficioso también en términos de accesibilidad.

Accesibilidad

Accesibilidad Web significa que sitios web, herramientas y tecnologías están diseñadas y desarrolladas de tal manera que las personas con discapacidades pueden usarlas. Más concretamente, que puedan: percibir, comprender, navegar e interactuar con la web, además de contribuir en ella.

Abarca todas las discapacidades que afectan al acceso a la web, incluyendo auditivas, cognitivas, neurológicas, físicas, del habla y visuales. Y no solo discapacidades: personas con limitación por su ubicación, conexión a internet, personas mayores, etc.

Fuente: W3C

Atributos ARIA

ARIA significa Accessible Rich Internet Applications y se usa para añadir información semántica a los elementos de un sitio web. Existen tres tipos de elementos principales:

  • Roles: define el tipo de elemento mediante role=”role_name”, por ejemplo button, checkbox, dialog, link, tab, menu, etc.
  • Estados: cambian en función de la interacción del usuario, por ejemplo aria-checked y aria-disabled.
  • Propiedades: no cambian con la interacción del usuario, por ejemplo aria-label y aria-hidden.

Ejemplos de uso:

<!-- Botón con solo un icono -->
<button aria-label="Cerrar">
  <svg focusable="false" aria-hidden="true" viewBox="0 0 24 24">
    <path
      d="M19 6.41L17.59 5 12 10.59 6.41 5 5
         6.41 10.59 12 5 17.59 6.41 19 12
         13.41 17.59 19 19 17.59 13.41 12z"
    />
  </svg>
</button>
<!-- Inupt sin label -->
<input
  type="text"
  name="name"
  placeholder="¿Cuál es tu email?"
  aria-label="Tu email"
/>

Contraste de color

Elementos activos

Herramientas para testear accesibilidad web

  • Pa11y, para ejecutarlo directamente desde la terminal, por ejemplo npx pa11y https://github.com
  • Lighthouse, para usarlo desde terminal o con la extensión de Chrome.
  • Wave, una de las extensiones para navegadores más completas.

Trabajando con diseño

Software de handoff

Un vistazo a Figma

CSS avanzado

Reset CSS

Custom properties

:root {
  --primary-color: teal;
}

section {
  background-color: var(--primary-color);
}

button {
  border: 1px solid var(--primary-color);
}

Unidades de medida y operaciones

Viewport units

calc()

div {
  width: calc(100% - 80px);
}

Media queries

/* Cuando el navegador tiene al menos 600px */
@media screen and (min-width: 600px) {
  div {
    /* Estilos */
  }
}

Imágenes

figure y figcaption

<figure>
  <img
    src="starry-night.jpg"
    alt="An abstract painting with a weird squiggly tree thing in front of a swirling starry nighttime sky."
  />
  <figcaption>
    The Starry Night, a famous painting by Vincent van Gogh
  </figcaption>
</figure>

Imágenes responsive

srcset

En función de la densidad de píxeles:

<img
  alt="A dog swimming on the beach"
  srcset="/dog1x.jpg 1x, /dog2x.jpg 2x, /dog3x.jpg 3x, /dog4x.jpg 4x"
  src="/dog-fallback.jpg"
/>

En función del tamaño:

<img
  alt="A dog swimming on the beach"
  srcset="/dog1x.jpg 200w, /dog2x.jpg 300w, /dog3x.jpg 400w, /dog4x.jpg 500w"
  src="/dog-fallback.jpg"
/>

picture

<picture>
  <source srcset="dog-zoomed-out.jpg" media="(min-width: 1000px)" />
  <source srcset="dog.jpg" media="(min-width: 600px)" />
  <img src="dog-zoomed-in.jpg" alt="A dog swimming on the beach" />
</picture>

Proporciones

img {
  object-fit: cover; /* fill | contain | cover | none | scale-down */
}
img {
  object-position: right bottom; /* Porcentaje o valores top | left | right | bottom */
}

Aspect ratio

div {
  aspect-ratio: 1 / 1; /* Cuadrado */
}

Formularios

Tipografía

Cargar fuentes

font-face

Se usa normalmente para cargar fuentes locales.

@font-face {
  font-family: Lato;
  src: url("path-to-lato.woff2") format("woff2"), url("path-to-lato.woff")
      format("woff");
}

@font-face {
  font-family: Lato;
  src: url("path-to-lato-bold.woff2") format("woff2"), url("path-to-lato-bold.woff")
      format("woff");
  font-weight: 700;
}

@font-face {
  font-family: Lato;
  src: url("path-to-lato-italic.woff2") format("woff2"), url("path-to-lato-italic.woff")
      format("woff");
  font-style: italic;
}

@font-face {
  font-family: Lato;
  src: url("path-to-lato-bold-italic.woff2") format("woff2"), url("path-to-lato-bold-italic.woff")
      format("woff");
  font-weight: 700;
  font-style: italic;
}

import

@import url("https://fonts.googleapis.com/css2?family=Open+Sans:wght@500&display=swap");

body {
  font-family: "Open Sans", sans-serif;
}

link

<link rel="preconnect" href="<https://fonts.googleapis.com>" />
<link rel="preconnect" href="<https://fonts.gstatic.com>" crossorigin />
<link
  href="<https://fonts.googleapis.com/css2?family=Open+Sans:wght@500&display=swap>"
  rel="stylesheet"
/>
body {
  font-family: "Open Sans", sans-serif;
}