Maison  >  Article  >  interface Web  >  Comment échanger dynamiquement des fichiers CSS sans recharger la page ?

Comment échanger dynamiquement des fichiers CSS sans recharger la page ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-02 08:08:021002parcourir

How to Dynamically Swap CSS Files Without Reloading the Page?

Échange de fichiers CSS dynamique pour la modification du style de page

Problème :

Vous avez une page Web avec un fichier CSS statique (light.css) lié dans l'en-tête. Vous avez besoin d'un mécanisme transparent pour basculer le style de la page vers un autre fichier CSS (dark.css), en remplaçant les styles existants.

Solution :

Pour échanger les fichiers CSS de manière dynamique et appliquez le nouveau style sans recharger la page, vous pouvez utiliser l'une des approches suivantes :

1. Activer l'attribut 'rel=alternate' :

<code class="html"><link rel="stylesheet" href="main.css">
<link rel="stylesheet alternate" href="light.css" id="light" title="Light">
<link rel="stylesheet alternate" href="dark.css" id="dark" title="Dark"></code>
<code class="javascript">function enableStylesheet(node) {
  node.rel = 'stylesheet';
}

function disableStylesheet(node) {
  node.rel = 'alternate stylesheet';
}</code>

2. Définir et activer la propriété « désactivée » :

<code class="html"><link rel="stylesheet" href="main.css">
<link rel="stylesheet" href="light.css" id="light" class="alternate">
<link rel="stylesheet" href="dark.css" id="dark" class="alternate"></code>
<code class="javascript">function enableStylesheet(node) {
  node.disabled = false;
}

function disableStylesheet(node) {
  node.disabled = true;
}

document
  .querySelectorAll('link[rel=stylesheet].alternate')
  .forEach(disableStylesheet);</code>

3. Activer/désactiver l'attribut 'media=none' :

<code class="html"><link rel="stylesheet" href="main.css">
<link rel="stylesheet" href="light.css" media="none" id="light">
<link rel="stylesheet" href="dark.css" media="none" id="dark"></code>
<code class="javascript">function enableStylesheet(node) {
  node.media = '';
}

function disableStylesheet(node) {
  node.media = 'none';
}</code>

Remarque :

  • Vous pouvez cibler des fichiers CSS spécifiques à l'aide de getElementById, querySelector , ou d'autres sélecteurs.
  • Évitez l'attribut de lien non standard désactivé. La définition de HTMLLinkElement#disabled est toujours acceptable.
  • Ces méthodes permettent un échange de style fluide sans affecter les éléments de page qui peuvent être stylisés dynamiquement par JavaScript.

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