• +34 685 967 885
  • +34 695 898 191
  • antgarprats@gmail.com
  • Antonio García Prats

Creando un portfolio con Bootstrap 5.3

Creando un portfolio para nuestra página web

Aquí os comparto una interfaz en el que estaremos creando un portfolio para nuestra página web, utilizando Bootstrap 5.3, HTML5, CSS3, Flexbox, jQuery y JavaScript. Os proporcionaré el código separado en los archivos correspondientes: HTML, CSS y JavaScript.

<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Portafolio de Proyectos Web</title>
    <!-- Bootstrap CSS -->
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha3/dist/css/bootstrap.min.css" rel="stylesheet">
    <link rel="stylesheet" href="style.css">
</head>
<body>

    <!-- Barra de navegación -->
    <nav class="navbar navbar-expand-lg navbar-dark bg-dark">
        <div class="container-fluid">
            <a class="navbar-brand" href="#">Mis Proyectos</a>
            <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
                <span class="navbar-toggler-icon"></span>
            </button>
            <div class="collapse navbar-collapse" id="navbarNav">
                <ul class="navbar-nav">
                    <li class="nav-item">
                        <button class="btn nav-link active" data-category="todos">Todos</button>
                    </li>
                    <li class="nav-item">
                        <button class="btn nav-link" data-category="ecommerce">E-commerce</button>
                    </li>
                    <li class="nav-item">
                        <button class="btn nav-link" data-category="corporativo">Corporativos</button>
                    </li>
                    <li class="nav-item">
                        <button class="btn nav-link" data-category="personal">Personales</button>
                    </li>
                </ul>
            </div>
        </div>
    </nav>

    <!-- Contenedor de los trabajos -->
    <div class="container my-5">
        <div class="row" id="projects-container">
            <!-- Tarjeta de Proyecto 1 -->
            <div class="col-md-4 project-card" data-category="ecommerce">
                <div class="card mb-4">
                    <img src="img1.jpg" class="card-img-top" alt="Proyecto 1">
                    <div class="card-body">
                        <h5 class="card-title">Tienda en Línea XYZ</h5>
                        <p class="card-text">Cliente: XYZ Store</p>
                        <p class="card-text">Dirección: www.xyzstore.com</p>
                        <p class="card-text">Descripción: Plataforma de comercio electrónico con integración de pasarela de pagos.</p>
                    </div>
                </div>
            </div>

            <!-- Tarjeta de Proyecto 1-2 -->
            <div class="col-md-4 project-card" data-category="ecommerce">
                <div class="card mb-4">
                    <img src="img4.jpg" class="card-img-top" alt="Proyecto 1">
                    <div class="card-body">
                        <h5 class="card-title">Tienda en Línea XYZ</h5>
                        <p class="card-text">Cliente: XYZ Store</p>
                        <p class="card-text">Dirección: www.xyzstore.com</p>
                        <p class="card-text">Descripción: Plataforma de comercio electrónico con integración de pasarela de pagos.</p>
                    </div>
                </div>
            </div>

            <!-- Tarjeta de Proyecto 2 -->
            <div class="col-md-4 project-card" data-category="corporativo">
                <div class="card mb-4">
                    <img src="img2.jpg" class="card-img-top" alt="Proyecto 2">
                    <div class="card-body">
                        <h5 class="card-title">Corporativo ABC</h5>
                        <p class="card-text">Cliente: ABC Company</p>
                        <p class="card-text">Dirección: www.abccorp.com</p>
                        <p class="card-text">Descripción: Sitio web corporativo con sección de noticias y portafolio de servicios.</p>
                    </div>
                </div>
            </div>

            <!-- Tarjeta de Proyecto 3 -->
            <div class="col-md-4 project-card" data-category="personal">
                <div class="card mb-4">
                    <img src="img3.jpg" class="card-img-top" alt="Proyecto 3">
                    <div class="card-body">
                        <h5 class="card-title">Blog Personal de Juan Pérez</h5>
                        <p class="card-text">Cliente: Juan Pérez</p>
                        <p class="card-text">Dirección: www.juanperez.com</p>
                        <p class="card-text">Descripción: Blog personal enfocado en tecnología y viajes.</p>
                    </div>
                </div>
            </div>
        </div>
    </div>

    <!-- Bootstrap JS and Dependencies -->
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha3/dist/js/bootstrap.bundle.min.js"></script>
    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
    <script src="script.js"></script>
</body>
</html>
/* Estilo para la barra de navegación */
.navbar {
    margin-bottom: 30px;
}

.nav-link {
    color: white !important;
    font-size: 1.1rem;
    margin-right: 10px;
}

.nav-link.active {
    font-weight: bold;
}

/* Estilo para las tarjetas */
.project-card .card {
    transition: transform 0.3s ease;
}

.project-card .card:hover {
    transform: scale(1.05);
}

/* Personalización del cuerpo */
body {
    background-color: #f8f9fa;
}

/* Margen inferior para cada tarjeta */
.project-card {
    margin-bottom: 20px;
}

/* Estilos adicionales para la tarjeta */
.card-img-top {
    height: 200px;
    object-fit: cover;
}
$(document).ready(function() {
    // Manejo de filtrado por categoría
    $('.nav-link').click(function() {
        var category = $(this).data('category');

        // Marcar como activo el botón seleccionado
        $('.nav-link').removeClass('active');
        $(this).addClass('active');

        // Mostrar/ocultar proyectos según la categoría
        if (category === 'todos') {
            $('.project-card').show();
        } else {
            $('.project-card').each(function() {
                if ($(this).data('category') === category) {
                    $(this).show();
                } else {
                    $(this).hide();
                }
            });
        }
    });
});

Si necesitas más consejos de programación, no dudes en seguirme en mi página web profesional o en mi newsletter en Linkedin. Y, si te gusta el contenido, me ayudarás compartiéndolo en tus redes sociales.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *