Sistema semántico de CSS · Nuevo recurso

sistema de diseño de Pure CSS.

Pure CSS es una hoja de estilos modular para cuadrículas, formularios, botones, menús y tablas, sin un entorno de ejecución para widgets. Esta guía muestra cómo se combinan su módulo opcional de cuadrícula adaptable y los elementos semánticos nativos en un catálogo de equipos filtrable, con la ordenación y la selección implementadas explícitamente.

Guía de OpenDesign9 capítulos24 entradas de referenciaGuía de aplicación original
01

Vista previa de la interfaz de sistema de diseño de Pure CSS

Filtre seis kits, ordénelos por nombre, seleccione los disponibles y conserve la selección al cambiar los filtros.

Catálogo de préstamo de equiposAbrir ejemplo completo
Módulos oficiales de Pure CSS 3.1.0 y de cuadrícula adaptable; JavaScript original sin dependencias. · Referencia de implementación
02

Referencia de diseño de sistema de diseño de Pure CSS

Módulos del paquete compilado de Pure CSS 3.1.0. Estos son valores literales de selectores, no un conjunto de tokens de diseño con nombre API: Pure no publica un tema de variables CSS semánticas como Chakra o Pico. La aplicación añade su propia tipografía, espaciado de maquetación y un contorno de foco más visible.

Valores oficiales de botones y formularios

Fuente
Nombre / ReglaValor / ConfiguraciónUso
.pure-button padding0.5em 1emSe adapta al tamaño de texto heredado del botón.
.pure-button radius2pxForma predeterminada de las esquinas del botón.
.pure-button background#E6E6E6 Relleno neutro del botón.
.pure-button-primary backgroundrgb(0, 120, 231)Relleno principal o de selección opcional.
.pure-button disabled opacity0.40Use también el atributo disabled para controlar el comportamiento.
.pure-form input padding0.5em 0.6emRelleno habitual de los campos de texto.
.pure-form input border1px solid #cccBorde predeterminado del campo de entrada.
.pure-form input radius4pxLa forma del campo de entrada difiere del radio de las esquinas del botón.

Valores oficiales de las tablas

Fuente
Nombre / ReglaValor / ConfiguraciónUso
.pure-table border1px solid #cbcbcbBorde exterior de la tabla.
.pure-table td / th padding0.5em 1emEspaciado legible entre celdas.
.pure-table thead background#e0e0e0 Superficie de los encabezados de columna.
.pure-table-striped odd-row fill#f2f2f2 Franjas opcionales; este ejemplo usa líneas horizontales.
.pure-table-horizontalBottom borders onlyConserva la estructura de las filas sin separadores verticales.

Límites de la cuadrícula adaptable

Fuente
Nombre / ReglaValor / ConfiguraciónUso
sm35.5em568px con un valor predeterminado de 16px en el navegador.
md48em768px; la barra lateral pasa a ocupar una cuarta parte del ancho.
lg64em1024px.
xl80em1280px.
xxl120em1920px en la cuadrícula adaptable instalada de la versión 3.1.0.

Estilos originales del catálogo

Fuente
Nombre / ReglaValor / ConfiguraciónUso
Body16px / 1.5 Arial, Helvetica, sans-serifTipografía explícita de la aplicación.
Page heading34px / 1.15; 28px on mobileJerarquía editorial original.
Section heading18px / 1.3Barra lateral y título de selección originales.
Content gutters24px desktop, 16px mobileRelleno exterior original.
Focus outline3px solid #0078e7; offset 3pxMejora de la aplicación sobre el degradado de foco predeterminado del botón.
Table minimum width540pxConserva el significado de las columnas en una región con desplazamiento local.
03

Guía completa de sistema de diseño de Pure CSS

Una guía práctica para elegir, aplicar y revisar este sistema en una interfaz real.

DESIGN-pure-css.md

Orientación completa, un punto de partida para la implementación y enlaces al código fuente.

Descargar la guía

sistema de diseño de Pure CSS: un pequeño conjunto de módulos de CSS

Un pequeño conjunto de módulos de CSS

Pure ofrece normalización básica, cuadrículas, botones, formularios, menús y tablas. Este catálogo utiliza el paquete compilado y un archivo independiente para la cuadrícula adaptable. No importa un framework, proveedor ni entorno de ejecución de widgets de JavaScript. El filtrado, la ordenación y la selección son código de la aplicación que se muestra íntegramente arriba.

De esta guía de OpenDesign

Esta distinción es importante al comparar Pure con una plataforma completa de componentes. Una clase pure-table aplica estilos a las celdas; no proporciona ordenación, paginación, virtualización ni semántica de selección. pure-button es una clase visual que puede aplicarse a un botón nativo. El ejemplo conserva los elementos semánticos subyacentes en lugar de esperar que los nombres de clase creen funcionalidades.

Consulta la especificación complementaria

sistema de diseño de Pure CSS: valores literales de CSS, no un sistema de tokens inventado

Valores literales de CSS, no un sistema de tokens inventado

Los estilos compilados de botones de Pure usan un relleno neutro #E6E6E6, un radio de dos píxeles y espaciado basado en em. El botón principal opcional es rgb(0,120,231) con texto blanco. Los campos de formulario tienen un radio de cuatro píxeles y su propio espaciado. La referencia del sistema muestra estas diferencias reales, en vez de normalizarlas en una escala de radios compartida ficticia.

Este catálogo añade una paleta de aplicación deliberadamente sobria: texto azul grisáceo oscuro, separadores neutros y un resumen de selección pálido. No son colores oficiales de la marca Pure. No hay un control para activar el modo oscuro porque esta versión del ejemplo no implementa una paleta alternativa completa para la aplicación. Un selector de tema tendría que abarcar a la vez formularios, encabezados de tabla, bordes, texto y estados de foco.

Consulta la especificación complementaria

sistema de diseño de Pure CSS: la tipografía y el espaciado son responsabilidad de la aplicación

La tipografía y el espaciado son responsabilidad de la aplicación

La capa original de la página elige Arial/Helvetica a dieciséis píxeles, con una altura de línea de 1.5, un encabezado de 34px y títulos de sección de 18px. En pantallas estrechas, el encabezado pasa a 28px. Son decisiones explícitas, no una afirmación de que Pure prescriba una escala editorial. El ejemplo de CSS incluye todos los valores necesarios para reproducir la composición.

La cuadrícula de Pure ajusta la representación del texto y el espaciado entre letras en su contenedor para gestionar las unidades en línea. Las reglas de las unidades restablecen el comportamiento normal del texto. El catálogo también asigna su familia tipográfica a las unidades de la cuadrícula para evitar cambios de fuente inesperados en la barra lateral y los resultados. El relleno de la aplicación se aplica dentro de las unidades, con el tamaño de caja border-box, para conservar intactos los anchos fraccionarios.

Consulta la especificación complementaria

sistema de diseño de Pure CSS: las proporciones adaptables requieren el módulo adaptable

Las proporciones adaptables requieren el módulo adaptable

La barra lateral combina pure-u-1 con pure-u-md-1-4; los resultados combinan pure-u-1 con pure-u-md-3-4. Al principio, ambos ocupan todo el ancho. En el límite del medio md, 48em, pasan a ocupar una cuarta parte y tres cuartas partes, respectivamente. Así, el filtro mantiene una proporción fija y legible sin cálculos de maquetación personalizados de JavaScript.

El paquete principal pure-min.css no incluye las clases de consultas de medios de la cuadrícula adaptable. Si se omite grids-responsive-min.css, los modificadores md no surtirán efecto. La configuración carga ambos archivos explícitamente. En pantallas móviles, la barra lateral aparece antes que la tabla y se elimina el borde de los resultados, lo que crea un único orden de lectura continuo.

Consulta la especificación complementaria

Pure CSS El filtrado en el sistema de diseño es independiente de la selección

El filtrado es independiente de la selección

El formulario apilado tiene un campo de búsqueda con etiqueta, un selector de categoría y una casilla de disponibilidad. Cada cambio en los campos vuelve a representar las filas visibles según las tres condiciones. Se evita el envío del formulario para que pulsar Intro en el campo de búsqueda no redirija a otra página. «Borrar filtros» ejecuta el restablecimiento nativo y vuelve a representar la lista después de que el navegador restaura los valores predeterminados.

La selección se guarda en un Set de IDs estables de kits. Ocultar un elemento seleccionado con un filtro no lo elimina de ese Set. Por eso, la lista de revisión, siempre visible, sigue siendo la referencia definitiva de los elementos seleccionados. Este comportamiento se explica junto al recuento de selecciones; de lo contrario, el usuario podría confundir las filas ocultas por los filtros con equipos que ya no están seleccionados.

  1. Selecciona una grabadora o cámara disponible.
  2. Filtra otra categoría y comprueba que el elemento seleccionado siga apareciendo en la lista de revisión.
  3. Borra la selección para eliminar todos los IDs seleccionados, independientemente de los filtros.

Consulta la especificación complementaria

Pure CSS Conserva el significado de la tabla del sistema de diseño en pantallas estrechas

Conserve el significado de las tablas en pantallas estrechas

La tabla utiliza los elementos caption, thead y tbody, y atributos scope en los encabezados de columna. El encabezado «Equipo» contiene un botón nativo que invierte el orden de los nombres. Su elemento th principal recibe aria-sort=ascending o descending, en consonancia con la flecha visible. Todas las filas conservan la misma estructura de columnas al ordenar.

Un ancho mínimo de 540px conserva el significado de «Seleccionar», «Equipo», «Categoría» y «Disponibilidad». En pantallas estrechas, solo la región etiquetada de la tabla se desplaza horizontalmente. Se puede enfocar con el teclado y muestra un contorno de foco visible. La página no se ensancha. Este tratamiento está pensado específicamente para tablas de datos, en lugar de forzar cada fila a convertirse en una tarjeta sin relación visual con las demás.

Consulta la especificación complementaria

Pure CSS Los estados deshabilitado, vacío y de foco necesitan un comportamiento real en el sistema de diseño

Los estados deshabilitado, vacío y de foco necesitan un comportamiento real

Los elementos prestados permanecen en la lista para explicar su disponibilidad, pero no se pueden seleccionar: sus casillas de verificación nativas están deshabilitadas. «Borrar selección» también se deshabilita cuando el Set está vacío. La regla de opacidad de Pure ayuda a comunicar el aspecto deshabilitado, pero el atributo HTML es lo que impide la activación.

Si un filtro no devuelve resultados, se muestra un mensaje específico de lista vacía y se conservan los encabezados. El recuento de resultados es una región de estado cortés. La hoja de estilos original añade un contorno marcado para el foco visible, ya que el tratamiento predeterminado del foco de los botones de Pure usa un degradado y restablece el contorno. En esta herramienta interactiva, resulta útil ofrecer un indicador de teclado más claro.

  • Las casillas deshabilitadas explican qué kits no están disponibles sin eliminar sus filas.
  • El estado vacío explica cómo recuperarse borrando los filtros.
  • Los contornos de foco abarcan botones, campos de entrada, selectores y la región desplazable.

Consulta la especificación complementaria

Pure CSS Instala y reproduce el catálogo completo del sistema de diseño

Instala y reproduce el catálogo completo

Instala [email protected], copia pure-min.css y grids-responsive-min.css en el directorio local de recursos e inclúyelos en ese orden antes de style.css. El cuerpo completo, el script de la aplicación y CSS se proporcionan más arriba. Un servidor estático puede servir los archivos resultantes; el catálogo no requiere un entorno de ejecución de compilación.

Los módulos del paquete también están disponibles por separado si el tamaño del paquete requiere una selección más limitada. Al reducir CSS, mantén la coherencia entre las dependencias base y las de cuadrícula. No copies solo una hoja de estilos de tabla y des por sentado que las clases de formularios o botones seguirán teniendo estilo. Este ejemplo prioriza una configuración completa y reproducible frente a un paquete parcial sin explicación.

Consulta la especificación complementaria

Pure CSS Elige módulos CSS del sistema de diseño sin perder sus dependencias

Elija módulos de CSS sin perder sus dependencias

El paquete de estilos compilado aplica estilos a los botones, formularios y tablas del catálogo, mientras que grids-responsive-min.css proporciona las fracciones con puntos de interrupción. Eliminar el archivo adaptable no produce ningún error: las clases md simplemente dejan de cambiar la distribución. Comprueba cómo se comportan las columnas al reducir los módulos importados.

Las unidades de cuadrícula también restauran el comportamiento del texto que el contenedor de cuadrícula ajusta para su disposición en línea. Asigna la fuente de la aplicación a las unidades y aplica el relleno dentro de ellas con un tamaño de caja border-box. Si más adelante el catálogo incorpora paginación, conserva la selección mediante IDs estables en el estado de la aplicación; ni CSS de la tabla ni una fracción de cuadrícula implementan ese comportamiento.

Consulta la especificación complementaria

Pure CSS Ejemplos de componentes del sistema de diseño

Marcado del catálogo con módulos de Pure

Distribución adaptable de un cuarto y tres cuartos, formulario apilado y tabla con líneas horizontales.

HTML
<main class="catalog"><header><p class="eyebrow">PURE CSS / LENDING DESK</p><h1>A small equipment catalog.</h1><p>Find a kit, select available items, and review the local selection.</p></header><div class="pure-g"><aside class="pure-u-1 pure-u-md-1-4"><div class="sidebar"><h2>Refine the list</h2><form class="pure-form pure-form-stacked" id="filters"><label for="query">Equipment name</label><input id="query" type="search" placeholder="Camera, recorder…"><label for="kind">Category</label><select id="kind"><option value="all">All categories</option><option>Camera</option><option>Audio</option><option>Lighting</option></select><label class="pure-checkbox"><input id="available" type="checkbox"> Available only</label><button class="pure-button" type="reset">Clear filters</button></form><div class="selection"><strong id="selected-count">0 items selected</strong><p>Selection is kept when a filter hides a row.</p><button id="clear-selection" class="pure-button" disabled>Clear selection</button></div></div></aside><section class="pure-u-1 pure-u-md-3-4"><div class="results"><p id="count" role="status"></p><div class="table-scroll" tabindex="0" role="region" aria-label="Equipment table, scroll horizontally on narrow screens"><table class="pure-table pure-table-horizontal"><caption>Studio lending kits — local sample records</caption><thead><tr><th scope="col">Select</th><th scope="col" aria-sort="ascending"><button id="sort" class="sort">Equipment ↑</button></th><th scope="col">Category</th><th scope="col">Availability</th></tr></thead><tbody id="rows"></tbody></table></div><p id="empty" hidden>No matching equipment. Clear the filters to see all six kits.</p><section class="summary" aria-labelledby="selection-title"><h2 id="selection-title">Selected for review</h2><ul id="selection-list"><li>No equipment selected.</li></ul><p>This is a browsing example. Selecting a kit does not reserve it.</p></section></div></section></div></main>

Referencia de código

  • grids-responsive-min.css se carga por separado.
  • Las casillas de los elementos prestados usan disabled, no solo un estilo atenuado.

Estado de filtros, ordenación y selección

El comportamiento original representa seis registros de muestra fijos y mantiene la selección mediante IDs estables.

javascript
const data=[{id:'c1',name:'Compact camera kit',kind:'Camera',available:true},{id:'c2',name:'Cinema camera kit',kind:'Camera',available:false},{id:'a1',name:'Field recorder',kind:'Audio',available:true},{id:'a2',name:'Wireless microphone pair',kind:'Audio',available:true},{id:'l1',name:'Portable LED panel',kind:'Lighting',available:false},{id:'l2',name:'Softbox lighting kit',kind:'Lighting',available:true}];const selected=new Set();let ascending=true;const $=id=>document.getElementById(id);
function selection(){ $('selected-count').textContent=selected.size+(selected.size===1?' item selected':' items selected');$('clear-selection').disabled=!selected.size;const list=$('selection-list');list.replaceChildren();for(const x of data.filter(x=>selected.has(x.id))){const li=document.createElement('li');li.textContent=x.name;list.append(li);}if(!selected.size){const li=document.createElement('li');li.textContent='No equipment selected.';list.append(li);}}
function render(){const query=$('query').value.toLowerCase().trim();const visible=data.filter(x=>x.name.toLowerCase().includes(query)&&($('kind').value==='all'||x.kind===$('kind').value)&&(!$('available').checked||x.available)).sort((a,b)=>(ascending?1:-1)*a.name.localeCompare(b.name));$('count').textContent=visible.length+' of '+data.length+' kits shown';$('empty').hidden=visible.length!==0;$('rows').replaceChildren();for(const x of visible){const tr=document.createElement('tr');const choice=document.createElement('td');const input=document.createElement('input');input.type='checkbox';input.disabled=!x.available;input.checked=selected.has(x.id);input.setAttribute('aria-label','Select '+x.name);input.addEventListener('change',()=>{input.checked?selected.add(x.id):selected.delete(x.id);selection()});choice.append(input);tr.append(choice);for(const value of [x.name,x.kind,x.available?'Available':'On loan']){const td=document.createElement('td');td.textContent=value;tr.append(td);}$('rows').append(tr);}selection();}
$('filters').addEventListener('input',render);$('filters').addEventListener('submit',e=>e.preventDefault());$('filters').addEventListener('reset',()=>setTimeout(render,0));$('sort').addEventListener('click',()=>{ascending=!ascending;$('sort').textContent='Equipment '+(ascending?'↑':'↓');$('sort').parentElement.setAttribute('aria-sort',ascending?'ascending':'descending');render()});$('clear-selection').addEventListener('click',()=>{selected.clear();render()});render();

Referencia de código

  • El filtrado no descarta silenciosamente los IDs seleccionados.
  • La búsqueda introducida por el usuario nunca se convierte en HTML.

Tipografía y foco de la aplicación CSS

Una capa visual completa que complementa la biblioteca, intencionadamente minimalista.

css
*{box-sizing:border-box}body{font:16px/1.5 Arial,Helvetica,sans-serif;color:#263238;background:#fff}.catalog{max-width:1120px;margin:auto;padding:32px 24px}h1{font-size:34px;line-height:1.15;letter-spacing:-.03em;margin:12px 0}h2{font-size:18px;line-height:1.3}.eyebrow{font-size:11px;letter-spacing:.12em;font-weight:700;color:#435c68}header{border-bottom:3px solid #263238;padding-bottom:24px;margin-bottom:24px}.pure-g [class*=pure-u]{font-family:Arial,Helvetica,sans-serif}.sidebar{padding-right:24px}.results{padding-left:24px;border-left:1px solid #d7dfe3}.pure-form input[type=search],.pure-form select{width:100%;max-width:100%}.pure-form label{margin-top:16px}.selection{border-top:1px solid #d7dfe3;margin-top:28px;padding-top:20px;font-size:14px}.table-scroll{overflow:auto}table{width:100%;min-width:540px}.pure-table caption{text-align:left;font-style:normal;color:#52616a}.sort{border:0;background:none;padding:0;color:inherit;text-align:left;font-weight:700;cursor:pointer}.summary{padding:16px 20px;background:#f3f6f7;margin-top:24px}.summary p{font-size:14px;color:#52616a}.pure-button:focus-visible,.sort:focus-visible,.table-scroll:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #0078e7;outline-offset:3px}#empty{padding:20px;border:1px dashed #83919a}@media(max-width:767px){.catalog{padding:24px 16px}h1{font-size:28px}.sidebar{padding:0}.results{padding:24px 0 0;border-left:0}.selection{margin-bottom:24px}}

Referencia de código

  • Estos valores son elecciones originales de la aplicación, no tokens oficiales de Pure.
04

Pure CSS Configuración del agente de IA del sistema de diseño

Punto de partida para la implementación

Guarda los ejemplos de CSS y JavaScript como style.css y app.js. Las clases de medios de la cuadrícula adaptable se encuentran en un archivo independiente. La vista previa sin conexión integra las dos hojas de estilos oficiales y el código original de la aplicación. El contenedor HTML incluye todo el marcado del cuerpo; guarda los ejemplos de interacción y CSS proporcionados con los nombres de archivo que se indican aquí.

HTML
<!-- npm install [email protected]
mkdir -p assets
cp node_modules/purecss/build/pure-min.css assets/
cp node_modules/purecss/build/grids-responsive-min.css assets/ -->
<!doctype html><html lang="en"><head>
<meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
<title>Equipment catalog</title>
<link rel="stylesheet" href="assets/pure-min.css">
<link rel="stylesheet" href="assets/grids-responsive-min.css">
<link rel="stylesheet" href="style.css">
<script src="app.js" defer></script></head>
<body><main class="catalog"><header><p class="eyebrow">PURE CSS / LENDING DESK</p><h1>A small equipment catalog.</h1><p>Find a kit, select available items, and review the local selection.</p></header><div class="pure-g"><aside class="pure-u-1 pure-u-md-1-4"><div class="sidebar"><h2>Refine the list</h2><form class="pure-form pure-form-stacked" id="filters"><label for="query">Equipment name</label><input id="query" type="search" placeholder="Camera, recorder…"><label for="kind">Category</label><select id="kind"><option value="all">All categories</option><option>Camera</option><option>Audio</option><option>Lighting</option></select><label class="pure-checkbox"><input id="available" type="checkbox"> Available only</label><button class="pure-button" type="reset">Clear filters</button></form><div class="selection"><strong id="selected-count">0 items selected</strong><p>Selection is kept when a filter hides a row.</p><button id="clear-selection" class="pure-button" disabled>Clear selection</button></div></div></aside><section class="pure-u-1 pure-u-md-3-4"><div class="results"><p id="count" role="status"></p><div class="table-scroll" tabindex="0" role="region" aria-label="Equipment table, scroll horizontally on narrow screens"><table class="pure-table pure-table-horizontal"><caption>Studio lending kits — local sample records</caption><thead><tr><th scope="col">Select</th><th scope="col" aria-sort="ascending"><button id="sort" class="sort">Equipment ↑</button></th><th scope="col">Category</th><th scope="col">Availability</th></tr></thead><tbody id="rows"></tbody></table></div><p id="empty" hidden>No matching equipment. Clear the filters to see all six kits.</p><section class="summary" aria-labelledby="selection-title"><h2 id="selection-title">Selected for review</h2><ul id="selection-list"><li>No equipment selected.</li></ul><p>This is a browsing example. Selecting a kit does not reserve it.</p></section></div></section></div></main>
</body></html>

Una instrucción para tu proyecto

Instrucción para el agente
Crea la implementación a partir del catálogo de equipos Pure CSS 3.1.0 suministrado y carga tanto pure-min.css como grids-responsive-min.css. Conserva las unidades responsive de cuadrícula de un cuarto y tres cuartos, los filtros etiquetados, una tabla semántica ordenable y su región de desplazamiento horizontal contenida. Combina los filtros de búsqueda, categoría y disponibilidad sin borrar los IDs seleccionados. Mantén deshabilitadas las casillas de los artículos prestados, actualiza aria-sort al invertir el orden de la columna Equipo y conserva los artículos seleccionados en la lista de revisión cuando los filtros los oculten. La selección es local y no debe presentarse como una reserva.
05

Fuentes y alcance del sistema de diseño Pure CSS

Pure CSS 3.1.0. Los valores de los selectores son valores oficiales del paquete; la tipografía, los colores, el espaciado y el comportamiento de la aplicación del catálogo son originales. No se realizan reservas.