Introducción
En este proyecto paso a paso, crearemos una aplicación web de división de gastos moderna y visualmente atractiva utilizando HTML, CSS y JavaScript. Esta aplicación te permitirá dividir los gastos entre un grupo de personas y calcular quién debe qué a quién. Empezaremos desde cero y cubriremos cada paso para construir el proyecto progresivamente.
👀 Vista previa

🎯 Tareas
En este proyecto, aprenderás:
- Cómo crear un diseño de página web responsivo utilizando HTML y CSS
- Cómo implementar características interactivas con JavaScript para calcular gastos y saldos
- Cómo dar estilo a la página web para que tenga un diseño moderno y visualmente atractivo
- Cómo manejar las entradas del usuario para agregar gastos y mostrar los resultados dinámicamente
- Cómo implementar la gestión de errores para garantizar la precisión de los datos y prevenir problemas
🏆 Logros
Después de completar este proyecto, podrás:
- Crear archivos de proyecto y configurar la estructura básica de una aplicación web
- Construir la estructura HTML para una aplicación de división de gastos, incluyendo campos de entrada y marcadores de posición
- Dar estilo a una aplicación web utilizando CSS para lograr un diseño moderno y colorido
- Implementar la funcionalidad de JavaScript para manejar la adición de gastos, actualizar la lista de gastos y calcular el resumen de gastos
- Agregar oyentes de eventos para hacer que la aplicación sea interactiva
- Crear funciones en JavaScript para realizar tareas específicas, como agregar gastos y actualizar el resumen
Crea la estructura HTML
Requisitos:
Dentro del
<body>de index.html, crea la estructura HTML para tu aplicación.Incluye marcadores de posición para agregar gastos, mostrar la lista de gastos y mostrar el resumen de gastos.
Funcionalidad:
- Crea una estructura visual para la aplicación con campos de entrada y botones.
Pasos:
Abre index.html y actualiza la estructura HTML de la siguiente manera:
<!-- Dentro de la etiqueta <body> -->
<div class="container">
<h1>Expense Splitter</h1>
<div class="input-card">
<h2>Agrega un gasto</h2>
<div class="input-group">
<label for="name">Nombre:</label>
<input type="text" id="name" placeholder="Ingresa el nombre" />
</div>
<div class="input-group">
<label for="expense">Gasto:</label>
<input type="number" id="expense" placeholder="Ingresa el gasto" />
</div>
<button id="addExpense">Agregar gasto</button>
</div>
<div class="expense-card">
<h2>Gastos:</h2>
<ul id="expenses"></ul>
</div>
<div class="summary-card">
<h2>Resumen de gastos:</h2>
<ul id="summary"></ul>
</div>
</div>
Dale estilo a la aplicación con CSS
Requisitos:
- En
styles.css, agrega reglas CSS para dar estilo a la aplicación. - Crea un diseño moderno y colorido con CSS.
Funcionalidad:
Aplica estilos CSS para que la aplicación sea visualmente atractiva.
Pasos:
Abre styles.css y agrega el siguiente código CSS:
body {
font-family: Arial, sans-serif;
background: linear-gradient(135deg, #ff7f50, #ff3399);
margin: 0;
padding: 0;
color: #333;
}
.container {
display: flex;
flex-direction: column;
align-items: center;
min-height: 100vh;
padding: 20px;
}
h1 {
font-size: 2rem;
margin: 20px 0;
color: #fff;
text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.2);
}
.input-card,
.expense-card,
.summary-card {
background: rgba(255, 255, 255, 0.9);
box-shadow: 0px 0px 20px rgba(0, 0, 0, 0.2);
border-radius: 10px;
padding: 20px;
margin: 20px 0;
width: 100%;
max-width: 400px;
text-align: left;
}
.input-card h2,
.expense-card h2,
.summary-card h2 {
color: #007bff;
font-size: 1.5rem;
margin-bottom: 15px;
}
.input-group {
margin-bottom: 15px;
}
label {
display: block;
margin-bottom: 5px;
font-weight: bold;
}
input[type="text"],
input[type="number"] {
width: 100%;
padding: 10px;
border: 1px solid #ccc;
border-radius: 5px;
}
button {
background: linear-gradient(135deg, #ff3399, #ff7f50);
color: #fff;
padding: 10px 20px;
border: none;
border-radius: 5px;
cursor: pointer;
font-weight: bold;
transition: background 0.3s ease;
}
button:hover {
background: linear-gradient(135deg, #ff7f50, #ff3399);
}
ul {
list-style: none;
padding: 0;
margin: 0;
}
li {
margin-bottom: 10px;
}
/* Animación para las tarjetas */
@keyframes fade-in {
from {
opacity: 0;
transform: translateY(-10px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
.input-card,
.expense-card,
.summary-card {
animation: fade-in 0.5s ease;
}
Agrega oyentes de eventos
Ahora, es hora de agregar funcionalidad a nuestra aplicación de división de gastos utilizando JavaScript. Manejaremos la adición de gastos, la actualización de la lista de gastos y el cálculo del resumen de gastos.
Requisitos:
- Agrega oyentes de eventos a los botones en tu HTML.
- Asegúrate de que los oyentes de eventos desencadenen las acciones adecuadas cuando los usuarios interactúan con la aplicación.
Funcionalidad:
- Haz que la aplicación sea interactiva escuchando los clics en los botones.
Pasos:
Abre script.js y agrega el siguiente código para manejar los clics en los botones:
// Oyente de evento para el botón "Agregar gasto"
document.getElementById("addExpense").addEventListener("click", addExpense);
Implementa la función addExpense
Requisitos:
- Crea una función de JavaScript llamada addExpense en
script.js. - Esta función debe extraer valores de los campos de entrada, validarlos y agregar los gastos a una matriz.
Funcionalidad:
Permite a los usuarios agregar gastos a la aplicación.
Pasos:
Abre script.js y agrega el siguiente código:
const expenses = [];
// Implementa la función addExpense
function addExpense() {
const name = document.getElementById("name").value;
const amount = parseFloat(document.getElementById("expense").value);
if (name && amount) {
// Agrega el gasto a la matriz de gastos
expenses.push({ name, amount });
// Actualiza la lista de gastos y el resumen
updateExpenseList();
document.getElementById("name").value = "";
document.getElementById("expense").value = "";
}
}
Implementa la función updateExpenseList
Requisitos:
- Crea una función de JavaScript llamada updateExpenseList en
script.js. - Esta función debe actualizar la lista de gastos que se muestra en la página web.
Funcionalidad:
Muestra la lista de gastos en la página web a medida que los usuarios los agregan.
Pasos:
Abre script.js y agrega el siguiente código:
// Implementa la función updateExpenseList
function updateExpenseList() {
const expensesList = document.getElementById("expenses");
expensesList.innerHTML = "";
for (const expense of expenses) {
const li = document.createElement("li");
li.textContent = `${expense.name}: $${expense.amount.toFixed(2)}`;
expensesList.appendChild(li);
}
// Llama a la función updateSummary
updateSummary();
}
Implementa la función updateSummary
Requisitos:
- Crea una función de JavaScript llamada updateSummary en
script.js. - Esta función debe calcular y mostrar el resumen de gastos, incluyendo quién debe qué a quién.
Funcionalidad:
- Proporciona a los usuarios una visión general del resumen de gastos.
Pasos:
Abre script.js y agrega el siguiente código:
// Implementa la función updateSummary
function updateSummary() {
const summaryList = document.getElementById("summary");
summaryList.innerHTML = "";
const totalExpense = expenses.reduce(
(total, expense) => total + expense.amount,
0
);
const averageExpense = totalExpense / expenses.length;
for (const expense of expenses) {
const balance = expense.amount - averageExpense;
const li = document.createElement("li");
if (balance > 0) {
li.textContent = `${expense.name} debe $${balance.toFixed(
2
)} a los demás.`;
} else if (balance < 0) {
li.textContent = `${expense.name} le deben $${(-balance).toFixed(
2
)} a los demás.`;
} else {
li.textContent = `${expense.name} está saldado.`;
}
summaryList.appendChild(li);
}
}
Implementa la función updateSummary
- Abre
index.htmlen un navegador web.
- Prueba la aplicación agregando gastos y verificando que la lista de gastos y el resumen se actualicen correctamente.
- El efecto de la página es el siguiente:

Resumen
En este proyecto, hemos construido paso a paso una moderna aplicación web de división de gastos. Creamos los archivos del proyecto, configuramos la estructura HTML, agregamos estilos CSS e implementamos la funcionalidad de JavaScript. La aplicación ahora te permite agregar gastos, ver la lista de gastos y ver el resumen de gastos. Puedes personalizar aún más los estilos y agregar más funciones para mejorar la funcionalidad y apariencia de la aplicación.



