Introducción
En este tema, aprenderemos cómo utilizar CSS y SCSS para estilizar nuestras aplicaciones Ionic. CSS (Cascading Style Sheets) es un lenguaje de diseño que se utiliza para describir la presentación de un documento escrito en HTML o XML. SCSS (Sassy CSS) es una extensión de CSS que permite el uso de variables, anidación, y otras características que hacen que la escritura de CSS sea más eficiente y manejable.
Contenidos
- Introducción a CSS y SCSS
- Configuración de SCSS en Ionic
- Variables y Mixins en SCSS
- Anidación y Herencia en SCSS
- Ejemplo Práctico
- Ejercicio Práctico
- Introducción a CSS y SCSS
CSS
CSS es el lenguaje utilizado para describir la presentación de un documento HTML. Permite aplicar estilos como colores, fuentes, espaciados, y más.
/* Ejemplo de CSS */ body { background-color: #f0f0f0; font-family: Arial, sans-serif; } h1 { color: #333; }
SCSS
SCSS es una extensión de CSS que añade características como variables, anidación, y mixins, lo que facilita la escritura y el mantenimiento del código CSS.
/* Ejemplo de SCSS */ $primary-color: #333; body { background-color: #f0f0f0; font-family: Arial, sans-serif; h1 { color: $primary-color; } }
- Configuración de SCSS en Ionic
Ionic soporta SCSS de manera nativa, por lo que no es necesario realizar configuraciones adicionales. Simplemente puedes empezar a escribir tus estilos en archivos .scss
.
Estructura de Archivos
En un proyecto Ionic, los archivos SCSS se encuentran generalmente en la carpeta src/theme/
y src/pages/
.
- Variables y Mixins en SCSS
Variables
Las variables en SCSS permiten almacenar valores que pueden ser reutilizados en todo el archivo.
$primary-color: #3498db; $secondary-color: #2ecc71; body { background-color: $primary-color; color: $secondary-color; }
Mixins
Los mixins son bloques de código que pueden ser reutilizados en diferentes partes del archivo SCSS.
@mixin border-radius($radius) { -webkit-border-radius: $radius; -moz-border-radius: $radius; border-radius: $radius; } .button { @include border-radius(10px); background-color: $primary-color; color: white; }
- Anidación y Herencia en SCSS
Anidación
La anidación permite escribir CSS de manera más estructurada y legible.
nav { ul { margin: 0; padding: 0; list-style: none; li { display: inline-block; margin-right: 10px; a { text-decoration: none; color: $primary-color; } } } }
Herencia
La herencia permite que un selector herede las propiedades de otro selector.
%message-shared { border: 1px solid #ccc; padding: 10px; color: #333; } .message { @extend %message-shared; } .success { @extend %message-shared; border-color: $secondary-color; }
- Ejemplo Práctico
Vamos a crear un ejemplo práctico donde aplicaremos lo aprendido.
HTML
<ion-header> <ion-toolbar> <ion-title> Estilizando con SCSS </ion-title> </ion-toolbar> </ion-header> <ion-content> <div class="container"> <h1>Bienvenido a Ionic</h1> <button class="button">Haz clic aquí</button> </div> </ion-content>
SCSS
$primary-color: #3498db; $secondary-color: #2ecc71; .container { text-align: center; padding: 20px; h1 { color: $primary-color; } .button { @include border-radius(5px); background-color: $secondary-color; color: white; padding: 10px 20px; border: none; cursor: pointer; &:hover { background-color: darken($secondary-color, 10%); } } } @mixin border-radius($radius) { -webkit-border-radius: $radius; -moz-border-radius: $radius; border-radius: $radius; }
- Ejercicio Práctico
Ejercicio
Crea una página en tu aplicación Ionic que tenga un formulario de contacto. Estiliza el formulario utilizando SCSS, aplicando variables, mixins, anidación y herencia.
Requisitos
- El formulario debe tener campos para nombre, correo electrónico y mensaje.
- Los campos deben tener un borde redondeado y un color de fondo claro.
- El botón de envío debe cambiar de color al pasar el cursor sobre él.
Solución
HTML
<ion-header> <ion-toolbar> <ion-title> Formulario de Contacto </ion-title> </ion-toolbar> </ion-header> <ion-content> <div class="contact-form"> <form> <ion-item> <ion-label position="floating">Nombre</ion-label> <ion-input type="text"></ion-input> </ion-item> <ion-item> <ion-label position="floating">Correo Electrónico</ion-label> <ion-input type="email"></ion-input> </ion-item> <ion-item> <ion-label position="floating">Mensaje</ion-label> <ion-textarea></ion-textarea> </ion-item> <ion-button expand="full" class="submit-button">Enviar</ion-button> </form> </div> </ion-content>
SCSS
$input-bg-color: #f9f9f9; $button-bg-color: #3498db; $button-hover-color: darken($button-bg-color, 10%); .contact-form { padding: 20px; ion-item { margin-bottom: 15px; ion-input, ion-textarea { background-color: $input-bg-color; @include border-radius(5px); padding: 10px; } } .submit-button { background-color: $button-bg-color; color: white; @include border-radius(5px); &:hover { background-color: $button-hover-color; } } } @mixin border-radius($radius) { -webkit-border-radius: $radius; -moz-border-radius: $radius; border-radius: $radius; }
Conclusión
En este tema, hemos aprendido cómo utilizar CSS y SCSS para estilizar nuestras aplicaciones Ionic. Hemos cubierto conceptos básicos como variables, mixins, anidación y herencia en SCSS, y hemos aplicado estos conceptos en ejemplos prácticos. Con esta base, estarás preparado para crear aplicaciones Ionic visualmente atractivas y bien estructuradas.
En el próximo tema, exploraremos cómo tematizar tu aplicación Ionic para personalizar aún más su apariencia.
Curso de Desarrollo con Ionic
Módulo 1: Introducción a Ionic
- ¿Qué es Ionic?
- Configuración del Entorno de Desarrollo
- Creando Tu Primera Aplicación Ionic
- Entendiendo la Estructura del Proyecto
- Ejecutando y Depurando Tu Aplicación
Módulo 2: Componentes Básicos y Navegación
- Visión General de los Componentes de Ionic
- Usando Botones e Iconos de Ionic
- Creando y Usando Páginas
- Navegación y Enrutamiento
- Pestañas y Menús Laterales
Módulo 3: Estilización y Tematización
- Introducción a la Estilización en Ionic
- Usando CSS y SCSS en Ionic
- Tematizando Tu Aplicación Ionic
- Diseño Responsivo en Ionic
- Personalizando Componentes de Ionic
Módulo 4: Trabajando con Datos
- Introducción a la Vinculación de Datos
- Usando Servicios de Angular
- Solicitudes HTTP y APIs
- Almacenando Datos Localmente
- Usando Ionic Storage
Módulo 5: Componentes y Funcionalidades Avanzadas
- Usando Formularios de Ionic
- Validación y Manejo de Errores
- Usando Plugins Nativos de Ionic y Cordova
- Accediendo a Funcionalidades del Dispositivo
- Notificaciones Push
Módulo 6: Pruebas y Despliegue
- Pruebas Unitarias en Ionic
- Pruebas de Extremo a Extremo
- Construyendo para Producción
- Desplegando en Tiendas de Aplicaciones
- Integración y Entrega Continua