Kako dodati tamne teme u Vue aplikacije s CSS varijablama

Kako dodati tamne teme u Vue aplikacije s CSS varijablama
Čitatelji poput vas podržavaju MUO. Kada kupite putem poveznica na našoj stranici, možemo zaraditi partnersku proviziju. Čitaj više.

Implementacija tamnih tema u našim web aplikacijama iz luksuza je postala nužnost. Korisnici uređaja sada žele prijeći sa svijetlih na tamne teme i obrnuto zbog estetskih preferencija i praktičnih razloga.





MUO Video dana POMICI SE ZA NASTAVAK SA SADRŽAJEM

Tamne teme nude tamniju paletu boja za korisnička sučelja, čineći sučelje lakim za oči u okruženjima sa slabim osvjetljenjem. Tamne teme također pomažu u očuvanju trajanja baterije na uređajima s OLED ili AMOLED ekranima.





Ove prednosti i još mnogo toga čine razumnijim davanje korisnicima izbora za prebacivanje na tamne teme.





Postavljanje testne aplikacije

Da biste bolje razumjeli kako dodati tamne teme u Vue, morat ćete izraditi jednostavnu Vue aplikaciju za testiranje vašeg razvoja.

kako natjerati laptop da ne spava kada je zatvoren

Da biste pokrenuli novu aplikaciju Vue, pokrenite sljedeću naredbu sa svog terminala:



 npm init vue@latest 

Ova naredba će instalirati najnoviju verziju stvoriti-vue paket, paket za pokretanje novih Vue aplikacija. Također će od vas tražiti da odaberete određeni skup značajki. Ne morate odabrati nijedan jer nije potreban za opseg ovog vodiča.

Dodajte sljedeći predložak u app.vue datoteku u vašoj aplikaciji src imenik:





 <!-- App.vue --> 
<template>
  <div>
    <h1 class="header">Welcome to My Vue App</h1>
    <p>This is a simple Vue app with some text and styles.</p>
    
    <div class="styled-box">
      <p class="styled-text">Styled Text</p>
    </div>

    <button class="toggle-button">Toggle Dark Mode</button>
  </div>
</template>

Gornji blok koda opisuje cijelu aplikaciju u običnom HTML-u, bez blokova skripte ili stila. Koristit ćete klase u gornjem predlošku za stilske svrhe. Dok implementirate tamnu temu, struktura aplikacije će se promijeniti.

Oblikovanje testne aplikacije s CSS varijablama

CSS varijable ili CSS prilagođena svojstva , dinamičke su vrijednosti koje možete definirati u svojim listovima stilova. CSS varijable pružaju izvrstan alat za tematiziranje jer vam omogućuju definiranje i upravljanje vrijednostima kao što su boje i veličine fonta na jednom mjestu.





Koristit ćete CSS varijable i selektore CSS pseudo-klasa za dodavanje obične i mračne teme za vašu Vue aplikaciju. u src/imovina imenik, stvorite a stilovi.css datoteka.

Dodajte sljedeće stilove ovoj datoteci styles.css:

 /* styles.css */ 
:root {
  --background-color: #ffffff; /* White */
  --text-color: #333333; /* Dark Gray */
  --box-background: #007bff; /* Royal Blue */
  --box-text-color: #ffffff; /* White */
  --toggle-button: #007bff; /* Royal Blue */
}
  
[data-theme='true'] {
  --background-color: #333333; /* Dark Gray */
  --text-color: #ffffff; /* White */
  --box-background: #000000; /* Black */
  --box-text-color: #ffffff; /* White */
  --toggle-button: #000000; /* Black */
}

Ove deklaracije sadrže poseban selektor pseudo-klase ( :korijen ) i selektor atributa ( [ data-theme='true'] ). Stilovi koje uključite u korijenski selektor ciljaju na najviši nadređeni element. Djeluje kao zadani stil za web stranicu.

Birač teme podataka cilja HTML elemente s tim atributom postavljenim na true. U ovom selektoru atributa možete definirati stilove za temu tamnog načina rada kako biste nadjačali zadanu svijetlu temu.

Ove deklaracije definiraju CSS varijable pomoću -- prefiks. Oni pohranjuju vrijednosti boja koje zatim možete koristiti za stiliziranje aplikacije za svijetle i tamne teme.

Uredite src/main.js datoteku i uvezite datoteku styles.css:

 // main.js 
import './assets/styles.css'
import { createApp } from 'vue'
import App from './App.vue'

createApp(App).mount('#app')

Sada dodajte još nekoliko stilova stilovi.css , ispod data-tema selektor. Neke od ovih definicija upućivat će na varijable boje pomoću bio je ključna riječ. To vam omogućuje promjenu boja koje se koriste jednostavnom promjenom vrijednosti svake varijable, kao što to čine početni stilovi.

 * { 
    background-color: var(--background-color);
    text-align: center;
    color: var(--text-color);
    padding: 20px;
    font-family: Arial, sans-serif;
    transition: background-color 0.3s, color 0.3s;
}
  
.header {
    font-size: 24px;
    margin-bottom: 20px;
}
  
.styled-box {
    background-color: var(--box-background);
    color: var(--box-text-color);
    padding: 10px;
    border-radius: 5px;
    margin: 20px 0;
}
  
.styled-text {
    font-size: 18px;
    font-weight: bold;
}
  
.toggle-button {
    background-color: var(--toggle-button);
    color: #fff;
    border: none;
    border-radius: 3px;
    cursor: pointer;
    padding: 5px 10px;
}

Svojstvo prijelaza možete postaviti na sve elemente pomoću univerzalnog CSS selektora ( * ) za stvaranje glatke animacije prilikom promjene načina rada:

 * { 
  /* Add more transitions as needed */
  transition: background-color 0.3s, color 0.3s;
}

Ovi prijelazi stvaraju postupnu promjenu boje pozadine i boje teksta kada se uključi tamni način rada, dajući ugodan učinak.

Implementacija logike mračnog načina rada

Da biste implementirali način tamne teme, trebat će vam JavaScript logika za prebacivanje između svijetle i tamne teme. U vašem app.vue datoteku, zalijepite sljedeći blok skripte ispod bloka predloška napisanog u Vue's Composition API :

 <!-- App.vue --> 
<script setup>
import { ref } from 'vue';

// Function to get the initial dark mode preference from local storage
const getInitialDarkMode = () => {
  const userPreference = localStorage.getItem('darkMode');
  return userPreference === 'true' ? true : false;
};

// Define the ref for darkMode and initialize it with the user preference
// or false
const darkMode = ref(getInitialDarkMode());

// Function to save the dark mode preference to local storage
const saveDarkModePreference = (isDarkMode) => {
  localStorage.setItem('darkMode', isDarkMode);
};

// Function to toggle dark mode and update the local storage preference
const toggleDarkMode = () => {
  darkMode.value = !darkMode.value;
  saveDarkModePreference(darkMode.value);
};
</script>

Gornja skripta uključuje svu JavaScript logiku za prebacivanje između svijetlog i tamnog načina rada u vašoj web-aplikaciji. Scenarij počinje s uvoz naredbu za uvoz funkcije ref za rukovanje reaktivnim podacima (dinamičkim podacima) u Vue.

Dalje, definira a getInitialDarkMode funkcija koja dohvaća korisničke postavke tamnog načina rada iz preglednika LocalStorage . Izjavljuje tamni način rada ref, inicijalizirajući ga korisničkim postavkama koje je dohvatila funkcija getInitialDarkMode.

The spremiDarkModePreference funkcija ažurira korisničke postavke tamnog načina rada u LocalStorageu preglednika s setItem metoda. Konačno, prebaciDarkMode omogućit će korisnicima prebacivanje tamnog načina rada i ažuriranje LocalStorage vrijednosti preglednika za tamni način rada.

Primjena teme Dark Mode i testiranje aplikacije

Sada, u vašem bloku predložaka app.vue datoteku, dodajte selektor atributa teme podataka korijenskom elementu za uvjetnu primjenu teme tamnog načina rada na temelju vaše logike:

 <!-- App.vue --> 
<template>
  <!-- added the data theme attribute selector to apply the dark theme
       conditionally -->
  <div :data-theme="darkMode">
    <h1 class="header">Welcome to My Vue App</h1>
    <p>This is a simple Vue app with some text and styles.</p>
    
    <div class="styled-box">
      <p class="styled-text">Styled Text</p>
    </div>

    <!--added the dark mode switch button-->
    <button @click="toggleDarkMode" class="toggle-button">
      Toggle Dark Mode
    </button>
  </div>
</template>

Ovdje vežete selektor teme podataka za darkMode ref. Ovo osigurava da kada tamni način rada istina, tamna tema će stupiti na snagu. Slušatelj događaja klika na gumbu izmjenjuje svijetli i tamni način rada.

Pokrenite sljedeću naredbu na svom terminalu za pregled aplikacije:

 npm run dev 

Trebali biste vidjeti ovakav zaslon:

  Prikaz stvorene aplikacije Vue

Kada kliknete gumb, aplikacija bi se trebala prebacivati ​​između svijetle i tamne teme:

  Prikaz aplikacije Vue postavljen na tamnu temu

Naučite integrirati druge pakete u svoje Vue aplikacije

CSS varijable i LocalStorage API olakšavaju dodavanje tamne teme vašoj aplikaciji Vue.

Postoje mnoge biblioteke trećih strana i ugrađeni Vue dodaci koji vam omogućuju da prilagodite svoje web aplikacije i koristite dodatne značajke.