Tarjetas CSS modernas

Una tarjeta es una caja flexible que contiene algo de relleno alrededor del contenido. Incluye la animación que muestra solo la información útil para el usuario. Reemplaza el uso de paneles, pozos y miniaturas. Se puede usar en un solo contenedor llamado tarjeta. Para hacer tarjetas CSS modernas animadas, también debe tener un poco de conocimiento de HTML y CSS, ya que sería útil para crearlo.

Ejemplo:

HTML

<!DOCTYPE html>
<html>
  
<head>
    <title>CSS Cards</title>
    <link rel="stylesheet" href='./index.css' />
</head>
  
<body>
    <div class="container">
        <div class="card">
            <div class="content">
                <h2 class="title">Data Structures</h2>
                <p class="data">
                    A data structure is a particular way 
                    of organizing data in a computer so 
                    that it can be used effectively.
                </p>
            </div>
        </div>
  
        <div class="card">
            <div class="content">
                <h2 class="title">Algorithms</h2>
                <p class="data"> 
                    Algorithm refers to a set of 
                    rules/instructions that step-by
                    -step define how a work is to be
                    executed upon in order to get the 
                    expected results.
                </p>
            </div>
        </div>
  
        <div class="card">
            <div class="content">
                <h2 class="title">Python</h2>
                <p class="data">
                    Python is a high-level, general-
                    purpose and a very popular 
                    programming language.
                </p>
            </div>
        </div>
  
        <div class="card">
            <div class="content">
                <h2 class="title">Java</h2>
                <p class="data">
                    Java is one of the most popular 
                    and widely used programming language.
                </p>
            </div>
        </div>
    </div>
</body>
  
</html>

index.css: este archivo contiene todas las reglas de estilo CSS para crear la barra lateral animada personalizada.

CSS

* {
    box-sizing: border-box;
}
  
body {
    display: grid;
    place-items: center;
}
  
.container {
    display: grid;
    grid-gap: 1rem;
    padding: 1rem;
    grid-template-columns: repeat(4, 1fr);
}
  
.card {
    position: relative;
    display: flex;
    align-items: flex-end;
    overflow: hidden;
    text-align: center;
    color: white;
    border-radius: 10px;
    box-shadow: 
        0 1px 1px rgba(0, 0, 0, 0.1), 
        0 2px 2px rgba(0, 0, 0, 0.1), 
        0 4px 4px rgba(0, 0, 0, 0.1), 
        0 8px 8px rgba(0, 0, 0, 0.1), 
        0 16px 16px rgba(0, 0, 0, 0.1);
    height: 350px;
}
  
.card:before {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 110%;
    background-size: cover;
    background-position: 0 0;
    transition: transform 
        calc(var(850ms) * 1.5) 
        var(cubic-bezier(0.19, 1, 0.22, 1));
}
  
.card:after {
    content: "";
    display: block;
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 200%;
    background-image: linear-gradient( 
        to bottom, rgba(0, 0, 0, 0) 0%, 
        rgba(0, 0, 0, 0.009) 11.7%, 
        rgba(0, 0, 0, 0.034) 22.1%, 
        rgba(0, 0, 0, 0.072) 31.2%, 
        rgba(0, 0, 0, 0.123) 39.4%, 
        rgba(0, 0, 0, 0.182) 46.6%, 
        rgba(0, 0, 0, 0.249) 53.1%, 
        rgba(0, 0, 0, 0.32) 58.9%, 
        rgba(0, 0, 0, 0.394) 64.3%,
        rgba(0, 0, 0, 0.468) 69.3%, 
        rgba(0, 0, 0, 0.54) 74.1%, 
        rgba(0, 0, 0, 0.607) 78.8%, 
        rgba(0, 0, 0, 0.668) 83.6%, 
        rgba(0, 0, 0, 0.721) 88.7%, 
        rgba(0, 0, 0, 0.762) 94.1%, 
        rgba(0, 0, 0, 0.79) 100%);
    transform: translateY(-50%);
  
    transition: transform calc(var(850ms) * 2) 
        var(cubic-bezier(0.19, 1, 0.22, 1));
}
  
.card:nth-child(1):before {
    background-image: linear-gradient(
        to bottom right, #0F2027, #2C5364);
}
  
.card:nth-child(2):before {
    background-image: linear-gradient(
        to bottom right, #333333, #dd1818);
}
  
.card:nth-child(3):before {
    background-image: linear-gradient(
        to bottom right, #0f0c29, #24243e);
}
  
.card:nth-child(4):before {
    background-image: linear-gradient(
        to bottom right, #000046, #1CB5E0);
}
  
.content {
    position: relative;
    display: flex;
    flex-direction: column;
    align-items: center;
    width: 100%;
    padding: 1rem;
    transition: transform var(850ms) 
        var(cubic-bezier(0.19, 1, 0.22, 1));
    z-index: 1;
}
  
.title {
    font-size: 1.3rem;
    font-weight: bold;
    line-height: 1.2;
}
  
.data {
    margin-top: 1rem;
    font-size: 1.125rem;
    font-style: italic;
    line-height: 1.35;
}
  
.card:after {
    transform: translateY(0);
}
  
.content {
    transform: translateY(calc(100% - 4.5rem));
}
  
.content>*:not(.title) {
    opacity: 0;
    transform: translateY(1rem);
    transition: transform var(850ms) 
        var(cubic-bezier(0.19, 1, 0.22, 1)), 
        opacity var(850ms) 
        var(cubic-bezier(0.19, 1, 0.22, 1));
}
  
.card:hover,
.card:focus-within {
    align-items: center;
}
  
.card:hover:before,
.card:focus-within:before {
    transform: translateY(-4%);
}
  
.card:hover:after,
.card:focus-within:after {
    transform: translateY(-50%);
}
  
.card:hover .content,
.card:focus-within .content {
    transform: translateY(0);
}
  
.card:hover .content>*:not(.title),
.card:focus-within .content>*:not(.title) {
    opacity: 1;
    transform: translateY(0);
    transition-delay: calc(var(850ms) / 8);
}

Producción:

Navegadores compatibles:

  • Google Chrome
  • Borde
  • Mozilla Firefox
  • Ópera
  • Safari

Publicación traducida automáticamente

Artículo escrito por rbbansal y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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