Maison >Tutoriel CMS >WordPresse >Obtenir des en-têtes collants et le WP Admin Bar pour se comporter

Obtenir des en-têtes collants et le WP Admin Bar pour se comporter

尊渡假赌尊渡假赌尊渡假赌
尊渡假赌尊渡假赌尊渡假赌original
2025-02-17 11:48:15776parcourir

Résolvez le problème de la tête et de la barre de gestion collantes qui se chevauchent

Dans les thèmes WordPress, la tête collante (ou tête de position fixe) chevauche la barre d'administration. Les deux utilisent position: fixed; top: 0;, entraînant des conflits visuels. Étant donné que la barre d'administration a un indice z de 99999, il couvre généralement la tête collante du sujet (et vice versa). Cet article expliquera comment résoudre ce problème à l'aide de CSS (et SASS).

Getting Sticky Headers and the WP Admin Bar to Behave

(Remarque: Certains sujets utilisent JavaScript pour localiser des éléments collants. Si JavaScript continue de mettre à jour les propriétés en ligne top, la méthode suivante est invalide.)

Utilisez CSS pour ajuster la position de la tête

Pour plus de simplicité, nous utilisons la classe .sticky-header pour représenter des éléments épinglés en haut de la page. Vous devriez trouver le bon sélecteur en fonction de votre sujet. Nous supposons que sa valeur de position top est 0. Si la valeur top a été compensée, les mesures suivantes doivent être ajustées.

Lorsque la barre d'administration est visible à l'extrémité avant, WordPress attache la classe .admin-bar à l'élément de la page. (Ceci est généralement géré par la fonction header.php dans body_class();.) Cette classe nous permet d'ajuster la position top de la tête collante.

<code class="language-css">/* 原有CSS... */
.sticky-header {
  position: fixed;
  top: 0;
}
/* 新增CSS... */
.admin-bar .sticky-header {
  top: 32px;
}</code>

La hauteur de la barre de gestion est de 32px, nous avons juste besoin de déplacer la tête collante vers le bas. Mais le problème est que la hauteur de la barre d'administration n'est pas toujours 32px.

CSS pour les petits écrans

Sur les écrans avec des largeurs inférieurs à 783px, la hauteur de la barre de gestion est de 46px. Nous devons modifier le code pour compenser:

<code class="language-css">.admin-bar .sticky-header {
  top: 32px;
}
@media screen and (max-width: 782px) {
  .admin-bar .sticky-header {
    top: 46px;
  }
}</code>

Si vous préférez CSS mobile-premier, utilisez le code suivant:

<code class="language-css">.admin-bar .sticky-header {
  top: 46px;
}
@media screen and (min-width: 783px) {
  .admin-bar .sticky-header {
    top: 32px;
  }
}</code>

Créer un mélange réutilisable avec Sass

Si vous construisez un thème avec SASS, nous pouvons le résumer dans un mélange réutilisable:

<code class="language-scss">@mixin admin-sticky-fix( $offset: 0 ) {
  $narrow-offset: 46px;
  $wide-offset: 32px;
  @if $offset != 0 and type-of($offset) == 'number' {
    $narrow-offset: $narrow-offset + $offset;
    $wide-offset: $wide-offset + $offset;
  }
  .admin-bar & {
    top: $narrow-offset;
    @media screen and (min-width: 783px) {
      top: $wide-offset;
    }
  }
}</code>

Ce mélange accepte un paramètre facultatif $offset qui permet la valeur top de l'élément spécifié (non 0). Si aucun décalage n'est spécifié, Mixin supposera être 0. Si vous spécifiez manuellement $offset, la condition @if modifiera la valeur de hauteur de la colonne de gestion par défaut.

comment utiliser:

<code class="language-scss">.sticky-header {
  position: fixed;
  top: 0;
  @include admin-sticky-fix;
}

.sticky-header-offset {
  position: fixed;
  top: 20px;
  @include admin-sticky-fix(20);
}</code>

Conclusion

À travers l'extrait de code ci-dessus, le conflit entre la tête collante et la barre de gestion WordPress peut être facilement résolu. Sass Mixin améliore la réutilisabilité du code.

FAQS (FAQ)

(La partie FAQ est omise ici car l'article est trop long et ne correspond pas à l'objectif pseudo-original. La partie FAQ peut être ajoutée ou modifiée selon les besoins.)

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn