Bonjour a tous,

je rencontre un problème lorsque je reproduis le tutoriel css de creation de card UI.
la pastille "photo" ne suit pas la boite de texte lors de l'animation. j'ai essaye plusieurs choses mais rien ne fonctionne, je vous montre mon code HTML et CSS.
(désolé pour les accents j'écris sur un clavier qwerty japonais).

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="styles.css" rel="stylesheet">
    <title>Document</title>
    <Link rel="icon" href="favicon.ico">
    <title>Card UI</title>
    </head>

    <body>
    <article class="card">
    <div class="card-picture">
    <img src="image-product-mobile.jpg">
    </div>
    <div class="card-date">
    <span class="card-date-day">12</span>
    <span class="card-date-month">Mai</span>
    </div>
     <div class="card-body"></div>
     <div class="category"><a href="#">photos</a></div>
     <div class="card-title">title-titre</div>
     <div class="card-sub">subtitle</div>
     <p class="card-description">Lorem ipsum dolor, sit amet consectetur adipisicing elit. Iste quas illum accusantium deserunt ex, earum dolor quisquam beatae atque minus fugiat officiis veritatis magnam voluptates architecto, esse nisi consequuntur quae!
     Molestiae doloribus nostrum voluptas exercitationem minus dolorum sapiente voluptate nisi, eos nobis magni, laborum nemo aut deleniti natus! Voluptatem amet corporis, nihil id aliquid molestiae at est provident. Optio, adipisci.
     Eos iste assumenda veritatis atque, consequuntur excepturi corrupti quod optio animi soluta magnam cumque modi. Nulla consectetur accusamus aliquam fugiat et. Ea totam ipsum fugit consectetur dolorum id deserunt labore.
    </p>
    <footer class="card-footer">
        <span class="icon-time">6min</span>
        <span class="icon-comment"><a href="#">30 comments</a></span>

    </footer>
</article>

</body>
</html>

Pour le CSS

* {
    box-sizing: border-box;
}

body {
    font-family: 'Franklin Gothic Medium', Arial, sans-serif;
    font-size: 16px;
    background-color: rgb(213, 240, 255);
    line-height: 1.4;
}

.card {
    /* positionne la card au milieu de l'ecran*/
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translateX(-50%) translateY(-50%) translateZ(0px);
   /*le fait de mettre le background d'une autre couleur 
   permet de faire resortir la card*/
    background-color: rgb(233, 255, 255);
    box-shadow: 0px 0px 30px rgba(0, 0, 0, 0.4);
    /*on va donner une transition a notre box-shadow */
    transition: box-shadow 0.3s;

    /*on veut cacher ce qui resort de la carte*/
    overflow: hidden;
}

a {
    color: inherit;
    text-decoration: none;
}
/*je vais donner un effet d'ccentuation de l'ombre quand je vais passer dessus */
.card:hover {
    box-shadow: 0px 0px 60px rgba(0, 0, 0, 0.7);
}

/*on va positionner la date dans une pastille en haut a droite de la carte*/

.card-date {
    position: absolute;
    top: 20px;
    right: 20px;

    width: 45px;
    height: 45px;

/*pour creer la pastille il faut mettre un background color*/
    background-color: rgb(10, 219, 219);
    border-radius: 50%;

    text-align: center;
    color: rgb(60, 18, 18);
    line-height: 13px;
    font-weight: bold;

    /*on remarque que le texte est trop haut, on joue avec le padding*/

    padding-top: 10px;
}
.card-date-day {
    /*on va s'assurer que day et month soit toujours empiler l'un sur l'autre en utilisant 
    un display: block pour chacune des selecteurs (day et month)*/
    display: block;
    font-size: 14px;

}

.card-date-month {
    display: block;
    /* pour les tailles de polices on tatonne en fonction du modele si on a pas le psd (figma form)*/
    font-size: 10px;
    /*on va forcer le mode majuscule*/
    text-transform: uppercase;

}

.card-picture {
    /*on va preparer une transition pour que le text passe sur l'image
    au moment ou l'on passe dessus*/
   /* height: 235px;  cette ligne pose probleme, le texte est sur l'image*/
    /*on met le fond en noir car ca s'obscurci lorsque l'on passe dessus*/
    background-color: black;
    transition: height 0.3s;
    overflow: hidden;
   height: 235px;
}

.card-picture img {
    width: 100%; /* Assure que l'image prend toute la largeur */
    height: 100%; /* S'assure qu'elle prend toute la hauteur */
    object-fit: cover; /* Évite les déformations */
}

img {
    /*on securise l'allignement de l'image*/
    display: block;
    opacity: 1;
    /*le transform va permettre de donner un effet
     aussi bien au texte qu'a l'image*/
    transition: opacity 0.3s transform 0.3s;
    transform: scale(1)
}

.card:hover .card-picture img {
    opacity: 0.6;
}

/*on veut que le texte glisse sur l'image vers le haut*/

.card:hover img {
    opacity: 0.6;
    /*on va donner un leger effet de zoom a l'image
     lorsque l'on passe dessus*/
    transform: scale(1.2);
}

.card:hover {

   height: auto;
}

.card:hover .card-picture {
    height: 90px; /* Diminue la hauteur pour laisser la place au texte */
}

/*pour le body on veux faire resortir "photo"
 comme si c'etait un post it en decalage avec le reste*/
.card-body {
    position: relative;
    padding: 20px;

}

.category {
    /*il s'agit d'un petit bloc donc on le place en absolute*/
    position: absolute;

    /*on positionne le texte*/
    left: 0;
    top: 210px;
    /*on ne met pas de largeur car elle dependra du texte*/
    height: 25px;
    padding: 0 15px;
    background-color: rgb(10, 219, 219);
    /*on stilyse le texte*/
    color: rgb(64, 2, 2);
    /*on va centrer le texte verticalement*/
    line-height: 25px;
    text-transform: uppercase;
    transition: top 0.3s ease;
}

.card-title {
    margin: 0;
    padding: 0 0 10px 0px;

    font-size: 22px;
    color: black;
    font-weight: bold;

}

.card-sub {
    margin: 0;
    padding: 0 0 10px 0;
    color: rgb(10, 219, 219);
    font-size: 19px;
}

.card-description {
    color:grey;
    font-size:14px;
    line-height: 27px;
    /*on va camoufler le texte pour 
    qu'il ne soit visible que lorsque la card est ferme */

}

.card-footer {
    /*on le colle en bas avec la position absolute, 
    sauf que le footer est ecrase dans le texte donc on 
    passe sur position relative */
    position: relative;
    bottom: 20px;
    left: 20px;
    right: 20px;
    font-size: 11px;
    color: rgb(66, 78, 78);
    /*on fait respirer le texte*/
    margin-top: 20px;
}

.icon{
    display: inline-block;
    vertical-align: middle;
}

.icon-comment {
   /* background: url(j'en ai pas c'est pas grave);*/
   width: 14px;
   height: 14px;
   margin-top: -2px;
   margin-left: 12px;
}

.icon-time {
    /* background: url(j'en ai pas c'est pas grave);*/
    width: 10px;
    height: 17px;
    margin-top: -3px;
 }

Vous remerciant par avance.

1 réponse


Je vous remercie de votre reponse, je vais essayer de le refaire en tenant compte de votre correction.