ຮູບແບບສີສັນ

ອົງປະກອບ Lily ມີ class hook ທີ່ໝັ້ນຄົງແລະ CSS ສູນ — ສະນັ້ນຮູບແບບສີສັນກໍພຽງແຕ່ເປັນ stylesheet. ບົດສອນນີ້ໄປຈາກ “ເຊື່ອມຕໍ່ໜຶ່ງໄຟລ໌” ເຖິງ “ໃຫ້ຜູ້ໃຊ້ສະຫຼັບຮູບແບບສີສັນຕອນແລ່ນ, ເກັບໄວ້”.

ສິ່ງທີ່ທ່ານຈະສ້າງ

ແອັບທີ່ຜູ້ໃຊ້ປ່ຽນລັກສະນະທັງໝົດໄດ້ — ເລີ່ມດ້ວຍ stylesheet ທີ່ເຊື່ອມຕໍ່ໜຶ່ງອັນ, ຈົບດ້ວຍຕົວສະຫຼັບຮູບແບບສີສັນຕອນແລ່ນທີ່ຄົງຢູ່ — ໃນປະມານ 15 ນາທີ.

ກ່ອນທ່ານເລີ່ມ

ເຮັດໃຫ້ສຳເລັດ ບົດສອນເຟຣມເວີກ ກ່ອນສຳລັບສະແຕັກຂອງທ່ານ, ເພື່ອໃຫ້ທ່ານມີແບບຟອມ Lily ນ້ອຍໆສຳລັບໃສ່ຮູບແບບສີສັນ. ທຸກຢ່າງທີ່ນີ້ເຮັດວຽກໃນທັງເຈັດເຟຣມເວີກ; ຕົວຢ່າງໂຄດສະແດງ Svelte ແລະ HTML ທຳມະດາ.

ຂັ້ນຕອນ 1 — ເຊື່ອມຕໍ່ຮູບແບບສີສັນສຳເລັດຮູບ

themes/ ໄດເຣັກທໍຣີມີ stylesheet ເອກະລາດ 45 ອັນ. ສຳເນົາພວກມັນເຂົ້າຊັບສິນຄົງທີ່ຂອງແອັບຂອງທ່ານ ແລະເຊື່ອມຕໍ່ໜຶ່ງອັນ:

<link rel="stylesheet" href="/assets/themes/united-kingdom-national-health-service-england-for-patients.css" />

ຈຸດເດັ່ນຂອງຊຸດ:

  • ພາກລັດ — NHS England / Scotland / Wales, ແຕ່ລະອັນມີສະບັບສຳລັບຜູ້ປ່ວຍ ແລະຜູ້ປະຕິບັດ; GOV.UK (united-kingdom-government-digital-service); USWDS (united-states-web-design-system).
  • ໄດ້ແຮງບັນດານໃຈຈາກຜູ້ຂາຍ — adobe-spectrum, mozilla-protocol.
  • ວັດຖຸປະສົງທົ່ວໄປ — light, dark, nord, dracula, wireframe, corporate, synthwave, ແລະອີກຫຼາຍອັນ.

ກວດງານຂອງທ່ານ: ໂຫຼດໜ້າຄືນ. Markup ດຽວກັນທີ່ທ່ານສ້າງໃນບົດສອນເຟຣມເວີກຕອນນີ້ມີຮູບແບບຄົບ — ປຸ່ມ, ຊ່ອງປ້ອນ, ປ້າຍ, ວົງແຫວນຈຸດສຸມ. HTML ແຖວດຽວເຮັດມັນ — ທຸກອົງປະກອບຢູ່ຄືເກົ່າ.

ຂັ້ນຕອນ 2 — ແທນທີ່ສິ່ງໃດກໍໄດ້

ຕົວເລືອກຮູບແບບສີສັນຖືກຫໍ່ໃນ :where(...)ເຊິ່ງມີຄວາມສະເພາະສູນ — ສະນັ້ນກົດໃດກໍຕາມທີ່ທ່ານຂຽນຊະນະ, ງ່າຍໆ:

/* After the theme link: your brand button, everything else themed */
.button {
  background: #7c3aed;
  border-radius: 9999px;
}

ຂັ້ນຕອນ 3 — ການສະຫຼັບຕອນແລ່ນດ້ວຍ theme-picker

theme-picker ຕົວຊ່ວຍແມ່ນປຸ່ມໄອຄອນ + listbox ແບບບໍ່ມີຫົວທີ່ເປັນເຈົ້າຂອງວົງຈອນຊີວິດຮູບແບບສີສັນທັງໝົດ: ມັນໂຫຼດ stylesheet ທີ່ເລືອກໂດຍການສະຫຼັບ <link> ທີ່ຖືກຈັດການໜຶ່ງອັນ (ມີແຕ່ຮູບແບບສີສັນທີ່ເຄື່ອນໄຫວເທົ່ານັ້ນທີ່ຖືກດຶງ), ຕັ້ງ data-theme="{slug}" ໃນເອກະສານ, ແລະເກັບໄວ້ໃນ localStorageຕາມທາງເລືອກ. Svelte ສະແດງທີ່ນີ້; ພອດ React, Vue, Angular, HTML, Nunjucks ແລະ Blazor ກົງກັນສັນຍາຕໍ່ສັນຍາ:

<script>
  import ThemePicker from "@lilydesignsystem/svelte-theme-picker";
</script>

<ThemePicker
  label="Theme"
  themesUrl="/assets/themes/"
  themes={["light", "dark", "nord", "wireframe"]}
  storageKey="my-app-theme"
/>

ນັ້ນແມ່ນການເຊື່ອມໂຍງທັງໝົດ. ພຶດຕິກຳແປ້ນພິມຕາມຮູບແບບ WAI-ARIA APG listbox; ການຄວບຄຸມເອງເປັນແບບບໍ່ມີຫົວ (class hook .theme-picker), ສະນັ້ນມັນຮັບຮູບແບບສີສັນໃດກໍຕາມທີ່ເຄື່ອນໄຫວ.

ກວດສອບແລ້ວ 2026-08-29: ສ່ວນທີ່ແນ່ນອນນີ້ຖືກຄອມໄພລ໌ຕໍ່ແພັກເກັດທີ່ເຜີຍແຜ່ 0.1.1 ຜ່ານ svelte/server.

ຂັ້ນຕອນ 4 — ຕອບສະໜອງຕໍ່ຮູບແບບສີສັນໃນ CSS ຂອງທ່ານເອງ

ເນື່ອງຈາກຕົວຊ່ວຍຕັ້ງ data-theme ທີ່ຮາກເອກະສານ, ຮູບແບບຂອງທ່ານເອງສາມາດແຕກກິ່ງຕາມມັນ:

[data-theme="dark"] .site-logo { filter: invert(1); }

ໝາຍເຫດສຳລັບການສະແດງຜົນຢູ່ເຊີບເວີ

ຕົວຊ່ວຍເຮັດການຂຽນ DOM ທັງໝົດພາຍໃນວົງຈອນຊີວິດ mount/effect ຂອງເຟຣມເວີກ, ສະນັ້ນມັນປອດໄພສຳລັບ SSR ໂດຍການອອກແບບ. ເພື່ອຫຼີກການກະພິບໃນການທາສີຄັ້ງທຳອິດ, ສະແດງ <link> ແລະ data-theme ຂອງຮູບແບບສີສັນເລີ່ມຕົ້ນຢູ່ເຊີບເວີ (ຕົວຢ່າງຈາກ cookie) — ຄັງຕົວຊ່ວຍ Svelte ສົ່ງຕົວຢ່າງ cookie SvelteKit ທີ່ແລ່ນໄດ້, ແລະແຄັດຕາລັອກອື່ນບັນທຶກຮູບແບບດຽວກັນສຳລັບສະແຕັກຂອງພວກມັນ.

ຂັ້ນຕອນຕໍ່ໄປ

  • ຕົວຊ່ວຍການຕັ້ງຄ່າ — ຮູບແບບດຽວກັນສຳລັບພາສາ, ຂະໜາດຕົວອັກສອນ, ການແບ່ງປັນ ແລະການປ້ອນວັນທີ/ເວລາ.
  • ປະກອບສ່ວນຮູບແບບສີສັນ — ແຕ່ລະອັນແມ່ນ stylesheet ເອກະລາດໜຶ່ງອັນທີ່ຕັ້ງເປົ້າໝາຍ class hook; ເບິ່ງ ການປະກອບສ່ວນ.

ມີຄຳຖາມລະຫວ່າງທາງບໍ? ໜ້າຊ່ວຍເຫຼືອ ເຕັມໄປດ້ວຍຄຳຕອບ — ແລະຖ້າຂັ້ນຕອນໃດຊັດເຈນຂຶ້ນໄດ້, ບອກພວກເຮົາ ແລະພວກເຮົາຍິນດີປັບປຸງບົດສອນ.