Comment mettre un couleur sur un élément actif

Résolu/Fermé
flexi2202 Messages postés 3795 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 21 avril 2024 - Modifié le 11 déc. 2021 à 11:45
flexi2202 Messages postés 3795 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 21 avril 2024 - 11 déc. 2021 à 13:54
bonjour a tous

j'ai une pagination mais je souhaiterais pouvoir ajouter quelques effets visuel comme par exemple donner une couleur lorsque le numéro de page est actif , j'ai trouve pour le passage de la souris mais impossible pour active

voici tout d abord le code de la pagination

  <nav>
  <ul class="pagination">
    <!-- Lien vers la page précédente (désactivé si on se trouve sur la 1ère page) -->
    <?php
    //première page 
      if($currentPage >2 ){
        echo getNavLink($currentPage,1 );
      }
    
      //page actuelle moins 1
      if($currentPage >1 ){
        echo  getNavLink($currentPage,$currentPage -1);
      }
     
      //page actuelle 
      echo getNavLink($currentPage,$currentPage  )     ;
      
        //page actuelle plus 1
      if($currentPage < $pages  ){
        echo getNavLink($currentPage,$currentPage +1);
      }
      
      //Dernière page
      if($currentPage < $pages - 1 ){
        echo getNavLink($currentPage,$currentPage +2);
      }
      
    ?>
  </ul>
</nav>


et voici la ligne sur laquelle je dois effectuer cet effet

     //page actuelle 
      echo getNavLink($currentPage,$currentPage  )     ;


lorsque j applique ce code en css lors du survol de la souris la couleur du numéro de page change

.page-link:hover {
 
    color: red;
    
}


par contre avec ce code rien ne passe lorsque la page est active

.page-link:active {
 
    color: #ffff;
    
}

4 réponses

Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
11 déc. 2021 à 12:20
Bonjour,

La pseudo classe css ":active" permet de cibler un élément lorsque celui-ci est activé par l'utilisateur (par exemple lorsqu'il clique sur le lien de pagination).

Si tu veux cibler le lien de pagination correspondant à la page courante pour le styliser sans action utilisateur, il faut utiliser une classe css normale. On peut nommer cette classe css "active" mais il ne faut pas la confondre avec la peudo-classe ":active".

Dans la fonction getNavLink(), il faut donc ajouter une classe css sur le lien de pagination qui correspond à la page courante.
Quel est le code de cette fonction ?
0
flexi2202 Messages postés 3795 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 21 avril 2024 187
11 déc. 2021 à 12:27
bonjour Pitet

Merci pour l explication c est super gentil
mais je me suis dit que puisque le survol fonctionne
cela pourrait fonctionner de la même manière pour active

ensuite j'ai aussi essaye d indiquer une class sur la page active mais la aussi sans succes

voici la function



function getNavLink($currentPage=1,$numPage=1){
  $disabled = $currentPage == $numPage ? "disabled" : "" ;
  return  '<li class="page-item "'.$disabled.'" >
        <a href="?page='.$numPage.'" class="page-link ">'.$numPage.'</a>
    </li>';
}
0
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
Modifié le 11 déc. 2021 à 13:22
Il ne faut pas confondre l'état actif de l'élément html (pseudo-classe ":active") avec le style que l'on souhaite appliquer sur le lien correspondant à la page courante (classe "active", qu'on pourrait renommer en "current" pour éviter la confusion).

Pour bien comprendre la différence entre ":hover", ":active" et une classe normale nommée "active" ou "current", tu peux essayer de survoler et cliquer sur les liens de cet exemple : https://jsfiddle.net/h9scp6ez/
Tu pourras constater que le style appliqué via ":active" n'est appliqué que lorsqu'on clique sur le lien (donc que le lien est "actif" pour le navigateur).
A ne pas confondre avec le style appliqué sur le lien correspondant à la page courante via la classe "current", sur lequel on peut également appliquer un style lorsque ce lien est "actif" pour le navigateur.


L'attribut html "disabled" ne peut pas être appliqué sur une balise <li>. En modifiant un peu le code de la fonction getNavLink(), tu peux remplacer l'ajout de cet attribut par l'ajout d'une classe sur la balise <li> qui contient le lien correspondant à la page courante :
function getNavLink($currentPage=1,$numPage=1){
  $class = $currentPage == $numPage ? " current" : "";
  return  '<li class="page-item' . $class . '">
        <a href="?page=' . $numPage . '" class="page-link">' . $numPage . '</a>
    </li>';
}


Tu devrais alors pouvoir styliser le lien de pagination courant en le ciblant avec le sélecteur css suivant :
.page-item.current .page-link {
    color: #fff;
}
0
flexi2202 Messages postés 3795 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 21 avril 2024 187
11 déc. 2021 à 13:54
un tout grand merci Pitet
pour le ficher et la démonstration de la (pseudo-classe ":active") et de la (classe "active", )

en effet j avais bien compris la différence mais avec ton exemple cela est bien plus clair
encore merci

pour le code cela fonctionne nickel
j'avais bidouiller un petit truc dans la function aussi avant de demander de l aide mais sans succès

encore merci pour cette aide et les explications

bon week end
0