StylifyCSS.com - Escribe CSS más rápido
Escribe CSS más rápido
Stylify utiliza selectores similares a CSS color:blue, max-width:640px, margen:0_auto junto con variables, componentes, selectores personalizados para generar CSS optimizado dinámicamente en función de lo que escribas.
- Curva de aprendizaje cero. No pierdas tiempo estudiando CSS framework
- Menos cambios entre archivos HTML/CSS
- Automagic y Optimización de CSS extremadamente ajustada
- Simple CSS División de paquetes para diseños/páginas
- Fácilmente Configurable y extensible
- Seamless Instalación
- Guías de migración de otros frameworks y librerías
- Preparado, Copiar&Pegar, Componentes sin cabeza
<!--
Edit Me 😎!
Write selectors as CSS property:value
Use _ for a space and ^ for a quote
-->
<img src="/images/p1.jpg" class="
height:120px
width:auto
border-radius:4px
transition:.3s
hover:scale:1.1
">
<!-- Edit Me 😎! Write selectors as CSS property:value Use _ for a space and ^ for a quote --> <img src="/images/p1.jpg" class=" height:120px width:auto border-radius:4px transition:.3s hover:scale:1.1 ">
.border-radius\:4px{ border-radius: 4px } .height\:120px{ height: 120px } .hover\:scale\:1\.1:hover{ scale: 1.1 } .transition\:\.3s{ transition: .3s } .width\:auto{ width: auto }
.z{ border-radius: 4px } .zp{ height: 120px } .zo:hover{ scale: 1.1 } .dr{ transition: .3s } .cw{ width: auto }
<!-- Edit Me 😎! Write selectors as CSS property:value Use _ for a space and ^ for a quote --> <img src="/images/p1.jpg" class=" zp cw z dr zo ">
<!--
stylify-components
'image': `
height:100px
width:auto
border-radius:4px
transition:.3s
margin:0_8px
hover:scale:1.1
`
/stylify-components
-->
<img src="/images/p1.jpg" class="image">
<img src="/images/p2.jpg" class="image">
<!-- stylify-components 'image': ` height:100px width:auto border-radius:4px transition:.3s margin:0_8px hover:scale:1.1 ` /stylify-components --> <img src="/images/p1.jpg" class="image"> <img src="/images/p2.jpg" class="image">
.image{ border-radius: 4px } .image{ height: 100px } .image{ margin: 0 8px } .image:hover{ scale: 1.1 } .image{ transition: .3s } .image{ width: auto }
.zq{ border-radius: 4px } .zq{ height: 100px } .zq{ margin: 0 8px } .zq:hover{ scale: 1.1 } .zq{ transition: .3s } .zq{ width: auto }
<!-- stylify-components 'image': ` height:100px width:auto border-radius:4px transition:.3s margin:0_8px hover:scale:1.1 ` /stylify-components --> <img src="/images/p1.jpg" class="zq"> <img src="/images/p2.jpg" class="zq">
<!--
stylify-customSelectors
img: `
height:100px
width:auto
border-radius:4px
transition:.3s
hover:scale:1.1
`
/stylify-customSelectors
-->
<img src="/images/p3.jpg" class="[&+img]{margin-left:8px}">
<img src="/images/p4.jpg">
<!-- stylify-customSelectors img: ` height:100px width:auto border-radius:4px transition:.3s hover:scale:1.1 ` /stylify-customSelectors --> <img src="/images/p3.jpg" class="[&+img]{margin-left:8px}"> <img src="/images/p4.jpg">
img{ border-radius: 4px } img{ height: 100px } .\[\&\+img\]\{margin-left\:8px\}+img{ margin-left: 8px } img:hover{ scale: 1.1 } img{ transition: .3s } img{ width: auto }
img{ border-radius: 4px } img{ height: 100px } .zs+img{ margin-left: 8px } img:hover{ scale: 1.1 } img{ transition: .3s } img{ width: auto }
<!-- stylify-customSelectors img: ` height:100px width:auto border-radius:4px transition:.3s hover:scale:1.1 ` /stylify-customSelectors --> <img src="/images/p3.jpg" class="zs"> <img src="/images/p4.jpg">
<!--
stylify-variables
height: '120px',
radius: '4px',
scale: '1.1'
/stylify-variables
-->
<img src="/images/p3.jpg" class="
width:auto
transition:.3s
height:$height
border-radius:$radius
hover:scale:$scale
">
<!-- stylify-variables height: '120px', radius: '4px', scale: '1.1' /stylify-variables --> <img src="/images/p3.jpg" class=" width:auto transition:.3s height:$height border-radius:$radius hover:scale:$scale ">
:root { --height: 120px; --radius: 4px; --scale: 1.1; } .border-radius\:\$radius{ border-radius: var(--radius) } .height\:\$height{ height: var(--height) } .hover\:scale\:\$scale:hover{ scale: var(--scale) } .transition\:\.3s{ transition: .3s } .width\:auto{ width: auto }
:root { --height: 120px; --radius: 4px; --scale: 1.1; } .zv{ border-radius: var(--radius) } .zu{ height: var(--height) } .zt:hover{ scale: var(--scale) } .dr{ transition: .3s } .cw{ width: auto }
<!-- stylify-variables height: '120px', radius: '4px', scale: '1.1' /stylify-variables --> <img src="/images/p3.jpg" class=" cw dr zu zv zt ">
<!--
Screens can be static: sm, lg, md
Dynamic: miw640px, rng400px-800px
Combined using logical operands
- lg&&landscape
- sm||lg
-->
<img src="/images/p2.jpg" width="120" height="120" class="
object-fit:cover
border-radius:4px
sm:border-radius:12px
minw600px:border-radius:24px
lg||landscape:border-radius:120px
">
<!-- Screens can be static: sm, lg, md Dynamic: miw640px, rng400px-800px Combined using logical operands - lg&&landscape - sm||lg --> <img src="/images/p2.jpg" width="120" height="120" class=" object-fit:cover border-radius:4px sm:border-radius:12px minw600px:border-radius:24px lg||landscape:border-radius:120px ">
.border-radius\:4px{ border-radius: 4px } .object-fit\:cover{ object-fit: cover } @media (min-width: 600px) { .minw600px\:border-radius\:24px{ border-radius: 24px } } @media (min-width: 640px) { .sm\:border-radius\:12px{ border-radius: 12px } } @media (min-width: 1024px), (orientation: landscape) { .lg\|\|landscape\:border-radius\:120px{ border-radius: 120px } }
.z{ border-radius: 4px } .ch{ object-fit: cover } @media (min-width: 600px) { .zx{ border-radius: 24px } } @media (min-width: 640px) { .zw{ border-radius: 12px } } @media (min-width: 1024px), (orientation: landscape) { .zy{ border-radius: 120px } }
<!-- Screens can be static: sm, lg, md Dynamic: miw640px, rng400px-800px Combined using logical operands - lg&&landscape - sm||lg --> <img src="/images/p2.jpg" width="120" height="120" class=" ch z zw zx zy ">
/*
https://stylifycss.com/en/docs/stylify/compiler#helpers
Helpers can be used within selectors or macros.
For example color:lighten(#000,10) is helper
for lightening color.
You can define your own easily within helpers option.
*/
new Compiler({
helpers: {
textPropertyType(value) {
if (value === 'bold') {
return 'font-weight';
} else if (value === 'italic') {
return 'font-style'
} else if (value.includes('$')) {
return 'color';
}
},
},
macros: {
'text:(\\S+)'(match) {
const property = this.helpers.textPropertyType(
match.getCapture(0)
);
return {[property]: match.getCapture(0)}
}
}
});
Componentes sin cabeza preparados
Curva de aprendizaje cero y codificación más rápida
En lugar de escribir CSS y cambiar entre archivos HTML y CSS utiliza selectores similares a CSS. La sintaxis es similar a CSS. Utilice _
en lugar de espacio y ^
para las comillas.
<h1 class="font-size:24px color:blue hover:color:lightblue lg:font-size:32px">
Hello World!🎉
</h1>
Optimización CSS y HTML automática y extremadamente afinada
CSS es generado dinámicamente en archivos CSS, es optimizado y HTML es manipulado. No se genera CSS no utilizado. No es necesario purgar CSS. No es necesario crear archivos CSS. Gracias al algoritmo interno para unir selectores, casi no se generan duplicados.
<!-- Production HTML -->
<h1 class="a b c d">
Hello World!🎉
</h1>
/* Production CSS */
.a {font-size:24px}
.b {color:blue}
.c:hover {color:lightblue}
@media (min-width: 1024px) {
.d{ font-size: 32px }
}
División de paquetes CSS simples
Los paquetes CSS se pueden dividir en varios archivos. Es más eficiente que combinar CSS manualmente y también hace que la salida CSS sea más pequeña.
const bundles = [
// Use Glob syntax to map files
{ files: [ 'templates/**/*.html' ], outputFile: 'global.css },
// Split CSS for layouts
{ files: [ 'layout.html' ], outputFile: 'layout.css' },
// And for pages
{ files: [ 'index.html' ], outputFile: 'index.css' }
];
Configuración intuitiva
Define variables, componentes y selectores personalizados para simplificar el desarrollo. Los valores de las variables pueden ser diferentes para cada pantalla. Esto te permite cambiarlo para modo oscuro/modo claro y escritorio/móvil.
const config = {
variables: {
primary: '#01befe',
titleFontSize: '24px',
// Variables based on color scheme dark/light
dark: {
primary: '#fff'
},
// Variables based on screen size
'minw640px': {
titleFontSize: 38px
}
},
components: {
'section': 'max-width:1240px margin:0_auto_24px_auto',
// Dynamic components
'title(?:--(\\S+))?': ({ matches, variables, helpers, dev }) => {
const color = matches[1] ?? '#000';
return `font-size:24px${color ? ` color:${color}` : ''}`;
},
},
customSelectors: {
'*': 'box-sizing:border-box',
'h1,h2': 'margin-top:0 margin-bottom:12px md:margin-bottom:24px'
},
macros: {
'ml:(\S+?)': (match) => {
// ml:24px => will create => margin-left: 24px
return {'margin-left': match.getCapture(0)}
}
},
}
Configura Variables, Componentes y Selectores Globales en archivos, donde se utilizan
Componentes, Variables y Selectores Globales pueden ser definidos dentro de un archivo, donde son usados. Esto encapsula los componentes CSS y HTML en un archivo
<!--
stylify-variables
blue: '#01befe'
/stylify-variables
stylify-components
subtitle: 'font-size:24px margin-bottom:12px color:$blue'
/stylify-components
-->
<h2 class="subtitle">Subtitle 1</h2>
<h2 class="subtitle">Subtitle 2</h2>
Extender funcionalidad con ganchos
Los ganchos se pueden utilizar para extender la funcionalidad y modificar la salida durante la compilación. Hay ganchos para Compilador, Bundler y en navegador para Runtime.
// This hook example converts px font size
// to REM and automatically calculates line height.
import {hooks} from '@stylify/stylify';
hooks.addListener('compiler:newMacroMatch', ({selectorProperties}) => {
const pixelUnit = selectorProperties['font-size'];
if (typeof pixelUnit === 'undefined' || !pixelUnit.endsWith('px')) {
return;
}
const pixelFontSize = Number(pixelUnit.slice(0,-2));
const remFontSize = pixelFontSize / 10;
selectorProperties['font-size'] = `${remFontSize}rem`;
selectorProperties['line-height'] = `${remFontSize * (pixelFontSize >= 28 ? 1.2 : 1.7)}rem`;
});
Hablaron de Stylify CSS
Fair enough, I'm intrigued.
Escaparate
No estudies frameworks. Céntrate en programar
Como desarrollador, quieres codificar tu sitio web de forma fácil, rápida y sin pasar demasiado tiempo en docs. Los frameworks, las librerías CSS-in-JS, y los preprocesadores tienen muchas grandes características, pero también hacen el desarrollo más complejo, forzándote a estudiar sintaxis, selectores con nombres aleatorios, y cómo usar diferentes características (que puedes olvidar después de una semana de vacaciones 🍹).
Stylify se centra en la simplicidad y utiliza selectores similares a CSS que ya conoces. Es como escribir CSS puro directamente en el marcado sin necesidad de cambiar entre archivos y averiguar los nombres de los selectores. Si sabes CSS, sabes cómo usar Stylify. Probando Stylify, descubrirás que los preprocesadores y los selectores cortos son innecesarios.
Guía de integración de Material Theme Builder
Últimas entradas del blog
Codificación de apps React más rápida: Cómo migrar de Emotion CSS-in-JS a Stylify Utility-First CSS
¿Quieres dar estilo a tu aplicación React más rápido? Aprende cómo migrar fácilmente de Emotion CSS-in-JS a Stylify utility-first CSS para un mejor desarrollo de React.
Cómo migrar sin esfuerzo de Styled Components CSS-in-JS a Stylify Utility-First CSS para un mejor desarrollo en React.
Aprende a migrar fácilmente a Stylify CSS para un mejor desarrollo de React
Prácticas recomendadas para Utility-First CSS de utilidad primero
Aprenda a usar Utility-First CSS de manera efectiva para diseñar su sitio web y evitar las plantillas infladas y las dificultades de mantenimiento.