Lietuvių

Atraskite pažangias technikas, naudojant CSS pasirinktines savybes (kintamuosius), kad sukurtumėte dinamines temas, adaptyvų dizainą, sudėtingus skaičiavimus ir pagerintumėte stilių failų priežiūrą.

CSS pasirinktinės savybės: pažangūs naudojimo atvejai dinamiškam stiliui

CSS pasirinktinės savybės, dar žinomos kaip CSS kintamieji, sukėlė revoliuciją stilių kūrimo ir priežiūros procese. Jos siūlo galingą būdą apibrėžti daugkartinio naudojimo reikšmes, kurti dinamines temas ir atlikti sudėtingus skaičiavimus tiesiogiai CSS viduje. Nors pagrindinis naudojimas yra gerai dokumentuotas, šiame vadove gilinamasi į pažangias technikas, kurios gali žymiai pagerinti jūsų front-end kūrimo darbo eigą. Analizuosime realaus pasaulio pavyzdžius ir pateiksime praktinių įžvalgų, kurios padės jums išnaudoti visą CSS pasirinktinių savybių potencialą.

CSS pasirinktinių savybių supratimas

Prieš pradedant nagrinėti pažangius naudojimo atvejus, trumpai apžvelkime pagrindus:

Pažangūs naudojimo atvejai

1. Dinaminės temos

Vienas iš įspūdingiausių CSS pasirinktinių savybių naudojimo atvejų yra dinamiškų temų kūrimas. Vietoj to, kad tvarkytumėte kelis stilių failus skirtingoms temoms (pvz., šviesiai ir tamsiai), galite apibrėžti temai būdingas reikšmes kaip pasirinktines savybes ir perjungti jas naudojant JavaScript arba CSS medijos užklausas.

Pavyzdys: šviesios ir tamsios temos perjungiklis

Štai supaprastintas pavyzdys, kaip įgyvendinti šviesios ir tamsios temos perjungiklį naudojant CSS pasirinktines savybes ir JavaScript:

CSS:


:root {
  --bg-color: #ffffff;
  --text-color: #000000;
  --link-color: #007bff;
}

[data-theme="dark"] {
  --bg-color: #333333;
  --text-color: #ffffff;
  --link-color: #66b3ff;
}

body {
  background-color: var(--bg-color);
  color: var(--text-color);
}

a {
  color: var(--link-color);
}

HTML:


<button id="theme-toggle">Perjungti temą</button>
<div class="content">
  <h1>Mano svetainė</h1>
  <p>Čia yra kažkoks turinys.</p>
  <a href="#">Nuoroda</a>
</div>

JavaScript:


const themeToggle = document.getElementById('theme-toggle');
const body = document.body;

themeToggle.addEventListener('click', () => {
  if (body.dataset.theme === 'dark') {
    body.dataset.theme = 'light';
  } else {
    body.dataset.theme = 'dark';
  }
});

Šiame pavyzdyje apibrėžiame numatytąsias fono spalvos, teksto spalvos ir nuorodos spalvos reikšmes :root pseudoklasėje. Kai body elemento data-theme atributas nustatomas į "dark", pritaikomos atitinkamos pasirinktinių savybių reikšmės, efektyviai perjungiant į tamsią temą.

Šis metodas yra labai lengvai prižiūrimas, nes norint pakeisti temos išvaizdą, tereikia atnaujinti pasirinktinių savybių reikšmes. Tai taip pat leidžia kurti sudėtingesnius temų scenarijus, pavyzdžiui, palaikyti kelias spalvų schemas ar vartotojo apibrėžtas temas.

Globalūs aspektai kuriant temas

Kuriant temas pasaulinei auditorijai, atsižvelkite į:

2. Adaptyvus dizainas su pasirinktinėmis savybėmis

CSS pasirinktinės savybės gali supaprastinti adaptyvų dizainą, leisdamos apibrėžti skirtingas reikšmes įvairiems ekrano dydžiams. Užuot kartoję medijos užklausas visame stilių faile, galite atnaujinti kelias pasirinktines savybes pagrindiniame lygmenyje, ir pakeitimai kaskadiškai nusileis iki visų elementų, kurie naudoja šias savybes.

Pavyzdys: adaptyvūs šrifto dydžiai

Štai kaip galite įgyvendinti adaptyvius šrifto dydžius naudodami CSS pasirinktines savybes:


:root {
  --base-font-size: 16px;
}

h1 {
  font-size: calc(var(--base-font-size) * 2);
}

p {
  font-size: var(--base-font-size);
}

@media (max-width: 768px) {
  :root {
    --base-font-size: 14px;
  }
}

@media (max-width: 480px) {
  :root {
    --base-font-size: 12px;
  }
}

Šiame pavyzdyje apibrėžiame --base-font-size pasirinktinę savybę ir naudojame ją skirtingų elementų šrifto dydžiams apskaičiuoti. Kai ekrano plotis yra mažesnis nei 768 pikseliai, --base-font-size atnaujinamas į 14 pikselių, o visų nuo jo priklausančių elementų šrifto dydžiai automatiškai pakoreguojami. Panašiai, ekranams, mažesniems nei 480 pikselių, --base-font-size dar labiau sumažinamas iki 12 pikselių.

Šis metodas leidžia lengvai išlaikyti nuoseklią tipografiją skirtinguose ekrano dydžiuose. Galite lengvai reguliuoti bazinį šrifto dydį, ir visi išvestiniai šrifto dydžiai bus atnaujinti automatiškai.

Globalūs aspektai kuriant adaptyvų dizainą

Kuriant adaptyvias svetaines pasaulinei auditorijai, nepamirškite:

3. Sudėtingi skaičiavimai su calc()

CSS pasirinktines savybes galima derinti su calc() funkcija, kad būtų galima atlikti sudėtingus skaičiavimus tiesiogiai CSS viduje. Tai gali būti naudinga kuriant dinamiškus maketus, koreguojant elementų dydžius pagal ekrano matmenis ar generuojant sudėtingas animacijas.

Pavyzdys: dinamiškas tinklelio maketas

Štai kaip galite sukurti dinamišką tinklelio maketą, kuriame stulpelių skaičių lemia pasirinktinė savybė:


:root {
  --num-columns: 3;
  --grid-gap: 10px;
}

.grid-container {
  display: grid;
  grid-template-columns: repeat(var(--num-columns), minmax(100px, 1fr));
  grid-gap: var(--grid-gap);
}

.grid-item {
  padding: 20px;
  background-color: #f0f0f0;
}

Šiame pavyzdyje --num-columns pasirinktinė savybė nustato stulpelių skaičių tinklelio makete. grid-template-columns savybė naudoja repeat() funkciją, kad sukurtų nurodytą stulpelių skaičių, kurių kiekvieno minimalus plotis yra 100 pikselių, o maksimalus – 1fr (proporcinis vienetas). --grid-gap pasirinktinė savybė apibrėžia tarpą tarp tinklelio elementų.

Galite lengvai pakeisti stulpelių skaičių atnaujindami --num-columns pasirinktinę savybę, ir tinklelio maketas automatiškai prisitaikys. Taip pat galite naudoti medijos užklausas, kad pakeistumėte stulpelių skaičių pagal ekrano dydį, sukurdami adaptyvų tinklelio maketą.

Pavyzdys: procentais pagrįstas permatomumas

Taip pat galite naudoti pasirinktines savybes permatomumui valdyti pagal procentinę reikšmę:


:root {
    --opacity-percentage: 50;
}

.element {
    opacity: calc(var(--opacity-percentage) / 100);
}

Tai leidžia reguliuoti permatomumą vienu kintamuoju, kuris atspindi procentą, taip pagerinant skaitomumą ir priežiūrą.

4. Komponentų stiliaus gerinimas

Pasirinktinės savybės yra neįkainojamos kuriant daugkartinio naudojimo ir konfigūruojamus vartotojo sąsajos komponentus. Apibrėždami pasirinktines savybes įvairiems komponento išvaizdos aspektams, galite lengvai pritaikyti jo stilių nekeisdami pagrindinio komponento CSS.

Pavyzdys: mygtuko komponentas

Štai pavyzdys, kaip sukurti konfigūruojamą mygtuko komponentą naudojant CSS pasirinktines savybes:


.button {
  --button-bg-color: #007bff;
  --button-text-color: #ffffff;
  --button-padding: 10px 20px;
  --button-border-radius: 5px;

  background-color: var(--button-bg-color);
  color: var(--button-text-color);
  padding: var(--button-padding);
  border-radius: var(--button-border-radius);
  border: none;
  cursor: pointer;
}

.button:hover {
  --button-bg-color: #0056b3;
}

.button.primary {
  --button-bg-color: #28a745;
}

Šiame pavyzdyje apibrėžiame pasirinktines savybes mygtuko fono spalvai, teksto spalvai, atstumams (padding) ir kraštinių apvalumui (border-radius). Šias savybes galima perrašyti, norint pritaikyti mygtuko išvaizdą. Pavyzdžiui, .button.primary klasė perrašo --button-bg-color savybę, kad sukurtų pagrindinį mygtuką su kitokia fono spalva.

Šis metodas leidžia jums sukurti daugkartinio naudojimo vartotojo sąsajos komponentų biblioteką, kurią galima lengvai pritaikyti prie bendro jūsų svetainės ar programos dizaino.

5. Pažangi CSS-in-JS integracija

Nors CSS pasirinktinės savybės yra natūrali CSS dalis, jas taip pat galima sklandžiai integruoti su CSS-in-JS bibliotekomis, tokiomis kaip „Styled Components“ ar „Emotion“. Tai leidžia jums naudoti JavaScript dinamiškai generuoti pasirinktinių savybių reikšmes, atsižvelgiant į programos būseną ar vartotojo nuostatas.

Pavyzdys: dinaminė tema „React“ su „Styled Components“


import styled from 'styled-components';

const theme = {
  light: {
    backgroundColor: '#ffffff',
    textColor: '#000000',
  },
  dark: {
    backgroundColor: '#333333',
    textColor: '#ffffff',
  },
};

const Button = styled.button`
  background-color: ${props => props.theme.backgroundColor};
  color: ${props => props.theme.textColor};
  padding: 10px 20px;
  border: none;
  cursor: pointer;
`;

function App() {
  const [currentTheme, setCurrentTheme] = React.useState('light');

  const toggleTheme = () => {
    setCurrentTheme(currentTheme === 'light' ? 'dark' : 'light');
  };

  return (
    <div>
      <Button theme={theme[currentTheme]}>Spausk mane</Button>
      <button onClick={toggleTheme}>Perjungti temą</button>
    </div>
  );
}

export default App;

Šiame pavyzdyje apibrėžiame theme objektą, kuriame yra skirtingos temos konfigūracijos. Button komponentas naudoja „Styled Components“, kad pasiektų temos reikšmes ir pritaikytų jas mygtuko stiliams. toggleTheme funkcija atnaujina dabartinę temą, todėl mygtuko išvaizda atitinkamai pasikeičia.

Šis metodas leidžia jums sukurti labai dinamiškus ir pritaikomus vartotojo sąsajos komponentus, kurie reaguoja į programos būsenos ar vartotojo nuostatų pokyčius.

6. Animacijų valdymas su CSS pasirinktinėmis savybėmis

CSS pasirinktines savybes galima naudoti animacijos parametrams, tokiems kaip trukmė, delsa ir lėtėjimo funkcijos, valdyti. Tai leidžia kurti lankstesnes ir dinamiškesnes animacijas, kurias galima lengvai koreguoti nekeičiant pagrindinio animacijos CSS.

Pavyzdys: dinaminė animacijos trukmė


:root {
  --animation-duration: 1s;
}

.element {
  animation: fadeIn var(--animation-duration) ease-in-out;
}

@keyframes fadeIn {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}

Šiame pavyzdyje --animation-duration pasirinktinė savybė valdo fadeIn animacijos trukmę. Galite lengvai pakeisti animacijos trukmę atnaujindami pasirinktinės savybės reikšmę, ir animacija automatiškai prisitaikys.

Pavyzdys: pakopinės animacijos

Norėdami pažangesnio animacijų valdymo, apsvarstykite galimybę naudoti pasirinktines savybes su `animation-delay`, kad sukurtumėte pakopines animacijas, kurios dažnai matomos įkėlimo sekose ar naujų vartotojų supažindinimo procesuose.


.staggered-item:nth-child(1) {
  animation-delay: calc(var(--stagger-delay) * 0);
}

.staggered-item:nth-child(2) {
  animation-delay: calc(var(--stagger-delay) * 1);
}

.staggered-item:nth-child(3) {
  animation-delay: calc(var(--stagger-delay) * 2);
}

Čia `--stagger-delay` nustato laiko poslinkį tarp kiekvieno elemento animacijos pradžios, sukuriant kaskadinį efektą.

7. Derinimas su pasirinktinėmis savybėmis

Pasirinktinės savybės taip pat gali padėti derinant kodą. Priskyrus pasirinktinę savybę ir pakeitus jos reikšmę, gaunamas aiškus vizualinis indikatorius. Pavyzdžiui, laikinai pakeitus fono spalvos savybę galima greitai paryškinti sritį, kurią veikia tam tikra stiliaus taisyklė.

Pavyzdys: maketo problemų paryškinimas


.problematic-area {
   --debug-color: red; /* Pridėkite tai laikinai */
   background-color: var(--debug-color, transparent); /* Atsarginė reikšmė – permatoma, jei --debug-color nėra apibrėžta */
}

var(--debug-color, transparent) sintaksė suteikia atsarginę reikšmę. Jei --debug-color yra apibrėžta, ji bus naudojama; kitu atveju bus pritaikyta transparent. Tai apsaugo nuo klaidų, jei pasirinktinė savybė būtų netyčia pašalinta.

Geriausios praktikos naudojant CSS pasirinktines savybes

Kad užtikrintumėte, jog CSS pasirinktines savybes naudojate efektyviai, atsižvelkite į šias geriausias praktikas:

Našumo aspektai

Nors CSS pasirinktinės savybės siūlo daugybę privalumų, svarbu žinoti apie galimą jų poveikį našumui. Apskritai, pasirinktinių savybių naudojimas turi minimalų poveikį atvaizdavimo našumui. Tačiau per didelis sudėtingų skaičiavimų naudojimas ar dažnas pasirinktinių savybių reikšmių atnaujinimas gali sukelti našumo problemų.

Norėdami optimizuoti našumą, atsižvelkite į šiuos dalykus:

Palyginimas su CSS preprocesoriais

CSS pasirinktinės savybės dažnai lyginamos su kintamaisiais CSS preprocesoriuose, tokiuose kaip „Sass“ ar „Less“. Nors abu siūlo panašų funkcionalumą, yra keletas esminių skirtumų:

Apskritai, CSS pasirinktinės savybės yra lankstesnis ir galingesnis sprendimas dinamiškam stiliui, o CSS preprocesoriai labiau tinka kodo organizavimui ir statiniam stiliui.

Išvada

CSS pasirinktinės savybės yra galingas įrankis kuriant dinamiškus, lengvai prižiūrimus ir adaptyvius stilių failus. Išnaudodami pažangias technikas, tokias kaip dinaminės temos, adaptyvus dizainas, sudėtingi skaičiavimai ir komponentų stilius, galite žymiai pagerinti savo front-end kūrimo darbo eigą. Nepamirškite laikytis geriausių praktikų ir atsižvelgti į našumo aspektus, kad užtikrintumėte efektyvų CSS pasirinktinių savybių naudojimą. Kadangi naršyklių palaikymas nuolat gerėja, CSS pasirinktinės savybės taps dar svarbesne kiekvieno front-end kūrėjo įrankių rinkinio dalimi.

Šis vadovas pateikė išsamią pažangaus CSS pasirinktinių savybių naudojimo apžvalgą. Eksperimentuokite su šiomis technikomis, tyrinėkite tolesnę dokumentaciją ir pritaikykite jas savo projektuose. Sėkmingo programavimo!