Aprende CSS desde cero y aplícalo a interfaces WebAR con MindAR.
Nivel básico
La ruta correcta para aprender CSS aplicado a WebAR
Este nivel empieza desde cero. Antes de diseñar una interfaz para MindAR, necesitamos entender qué es CSS, cómo se escribe, cómo se conecta con HTML y por qué algunas propiedades son tan importantes cuando una experiencia usa cámara.
Qué aprenderás primero
CSS como lenguaje de estilos: qué controla y qué no controla.
Sintaxis: selector, propiedad, valor, llaves, punto y coma.
Selectores: etiquetas, clases, id, hijos, estados y pseudoelementos.
Aplicación WebAR: scanner, paneles, botones, capas sobre cámara, safe area y escena MindAR.
Idea importante: CSS no hace tracking ni abre la cámara. Eso lo hacen MindAR, A-Frame y JavaScript. CSS hace que la experiencia sea usable, legible, cómoda y profesional.
Fundamento
Qué es CSS y por qué importa en WebAR
CSS significa Cascading Style Sheets, o en español, hojas de estilo en cascada. Es el lenguaje que usamos para definir cómo se ve una página web: colores, tamaños, espacios, botones, paneles, animaciones, posiciones y adaptación a móvil.
Qué hace CSS
Convierte un HTML básico en una interfaz visual.
Define jerarquía visual: qué se ve grande, pequeño, principal o secundario.
Controla espacios para que los elementos no choquen.
Permite diseñar pantallas móviles sin que la cámara quede tapada.
Crea animaciones como líneas de escaneo, loaders y transiciones.
Qué no hace CSS
No detecta imágenes target.
No carga modelos 3D por sí solo.
No abre la cámara.
No guarda datos ni valida formularios.
En WebAR, CSS trabaja junto a JavaScript. JavaScript puede decir: “MindAR detectó el marcador”. CSS responde visualmente: “muestra el panel”, “oculta el scanner”, “cambia el mensaje”, “anima el botón”.
Sintaxis CSS
Cómo se escribe una regla CSS
Una regla CSS tiene tres partes principales: el selector, la propiedad y el valor. Esta es la base de todo el curso. Si entiendes esta estructura, puedes leer cualquier CSS con mucha más calma.
Línea 1:.ar-button es un selector de clase. El punto significa “busca elementos HTML que tengan class="ar-button"”.
Línea 1: la llave { abre el bloque de estilos. Todo lo que esté dentro afecta al selector.
Línea 2:background es la propiedad. #38bdf8 es el valor. Cambia el color de fondo del botón.
Línea 3:color cambia el color del texto dentro del botón.
Línea 4: la llave } cierra la regla.
Vocabulario que debes dominar
Selector: indica qué elemento quieres diseñar.
Propiedad: indica qué aspecto quieres cambiar.
Valor: indica cómo quieres cambiarlo.
Declaración: una pareja propiedad/valor, por ejemplo color: white;.
Bloque: todo lo que está entre llaves.
HTML base
Crear el primer index.html que vamos a diseñar
CSS necesita HTML. HTML crea los elementos y CSS los diseña. En este primer archivo vamos a crear una pantalla inicial sencilla para una experiencia WebAR.
Dónde va este código: crea una carpeta llamada css-webar-basico. Dentro crea un archivo llamado index.html. Pega este código completo desde la línea 1.
Archivo HTML inicialindex.html
<!doctype html>
<html lang="es">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>CSS para WebAR</title>
<link rel="stylesheet" href="styles.css" />
</head>
<body>
<main class="ar-start">
<p class="tag">WebAR CSS</p>
<h1>Escanea el producto</h1>
<p>Apunta la cámara hacia la imagen objetivo.</p>
<button class="ar-button" type="button">Iniciar experiencia</button>
</main>
</body>
</html>
Explicación línea por línea
Línea 7: conecta el archivo styles.css. Sin esta línea, el navegador mostrará el HTML sin diseño.
Línea 10:class="ar-start" crea una clase para diseñar toda la pantalla inicial desde CSS.
Línea 11:class="tag" nos permitirá diseñar una etiqueta pequeña encima del título.
Línea 14:class="ar-button" nos permitirá convertir el botón normal en un botón grande, cómodo y visual.
Primer CSS
Crear styles.css y conectar estilos con HTML
Ahora creamos el archivo CSS. Recuerda: debe llamarse exactamente styles.css porque así lo conectamos en el HTML.
Dónde va este código: en la misma carpeta donde tienes index.html, crea styles.css. Pega este código completo.
Líneas 1 a 3:* selecciona todos los elementos. box-sizing: border-box hace que padding y borde no aumenten el tamaño final de las cajas.
Líneas 5 a 10: preparamos html y body para que ocupen altura completa y usamos una fuente simple.
Línea 7:margin: 0 quita el margen automático que el navegador pone por defecto.
Línea 13:color: white define el color de texto principal.
Línea 14:background pinta el fondo. En WebAR este fondo suele verse antes de activar cámara.
Línea 18:100dvh usa la altura dinámica del dispositivo. Es útil en móviles porque la barra del navegador cambia de tamaño.
Líneas 19 a 21:grid, place-items y align-content centran el contenido sin cálculos manuales.
Selectores
Clases, etiquetas, hijos y estados
Un selector le dice al navegador qué elemento debe recibir un estilo. En WebAR usamos muchos selectores de clase porque son claros, reutilizables y fáciles de activar desde JavaScript.
.ar-start h1: selecciona solo los títulos h1 que están dentro de un elemento con clase ar-start. No afecta otros h1 de la página.
.ar-start p: selecciona párrafos dentro de la pantalla inicial. Esto evita diseñar todos los párrafos del sitio.
.ar-button: selecciona cualquier elemento con esa clase. En nuestro caso es el botón de inicio.
border-radius: 999px: crea un botón tipo píldora. Es común en interfaces móviles porque se ve táctil y cómodo.
clamp(): hace que el título sea responsive: tiene tamaño mínimo, tamaño flexible y tamaño máximo.
Modelo de caja
Margin, padding, border y tamaño real
Cada elemento HTML es una caja. CSS controla el contenido, el espacio interno, el borde y el espacio externo. Entender esto evita que la interfaz se desordene sobre la cámara.
Las cuatro partes de una caja
Content: el texto, imagen o contenido interno.
Padding: espacio entre el contenido y el borde.
Border: línea alrededor de la caja.
Margin: espacio externo que separa una caja de otra.
min(72vw, 320px): el scanner mide 72% de la pantalla, pero nunca pasa de 320px.
aspect-ratio: 1: mantiene el scanner cuadrado sin definir altura manual.
rgba(): permite usar color con transparencia. Es clave para overlays encima de cámara.
#0f172a: es un color hexadecimal. Representa rojo, verde y azul en una forma compacta.
Layout
Flexbox y Grid para organizar interfaces WebAR
Layout significa cómo se acomodan los elementos en pantalla. Para WebAR necesitamos layouts que no bloqueen la cámara y que sigan siendo cómodos en pantallas pequeñas.
display: grid: crea una cuadrícula. Aquí la usamos para centrar todo de forma simple.
place-items: center: centra elementos horizontal y verticalmente dentro de sus celdas.
gap: separa elementos sin usar márgenes individuales.
display: flex: acomoda botones en fila.
flex-wrap: wrap: permite que los botones bajen a otra línea si no caben.
UI nativa MindAR
Personalizar el scanner de MindAR sin duplicarlo
En el básico no vamos a crear otra interfaz encima del scanner de MindAR. Vamos a tocar lo mínimo: tamaño del scanner nativo y fondo del loader. Esto enseña una idea clave de CSS: una librería puede generar HTML y tú puedes rediseñarlo con selectores.
position: fixed: fija la interfaz a la pantalla, incluso si la página pudiera hacer scroll.
inset: 0: hace que la capa ocupe toda la pantalla.
z-index: controla qué capa aparece encima. Números mayores aparecen sobre números menores.
pointer-events: none: evita que una capa invisible bloquee la escena o la cámara.
pointer-events: auto: vuelve a permitir clics en botones específicos.
Responsive móvil
Safe area, media queries y botones táctiles
Una interfaz WebAR casi siempre se usa con el teléfono en la mano. El CSS debe respetar pantallas pequeñas, notch, barras del navegador y botones fáciles de tocar.
Líneas 13 a 17: esta interfaz HTML se diseña con CSS y vive encima de la escena AR.
Línea 19:a-scene crea el canvas de A-Frame/MindAR. CSS lo puede posicionar a pantalla completa.
Línea 21:id="target" permitirá que JavaScript escuche targetFound y targetLost en el nivel intermedio.
Línea 22: la caja es el contenido aumentado. En cursos de WebAR puede reemplazarse por modelos, videos o imágenes.
.mind
Compilar el marcador para probar la interfaz
El archivo .mind es el target compilado. Para que la experiencia funcione, guarda el resultado como targets/poster.mind.
Compilador .mind integrado
Sube una imagen con detalles, texto, contraste o bordes. Evita imágenes planas, borrosas o repetitivas.
No hay imágenes seleccionadas.
Selecciona una imagen para comenzar.
Template
Descargar el proyecto básico completo
Este ZIP contiene el proyecto básico con pantalla inicial, escena MindAR, personalización básica del loader y scanner nativo de MindAR y poster.mind de práctica incluido.
Template CSS WebAR Básico
Incluye index.html, styles.css, app.js y carpeta targets.