cari
Rumahhujung hadapan webtutorial jsMenggunakan pembolehubah CSS untuk mencipta tema dinamik dalam Puck

Puck ialah editor visual sumber terbuka untuk React, memperkasakan generasi pembina halaman dan produk tanpa kod generasi seterusnya. Beri kami bintang di GitHub! ⭐️


Apabila menyepadukan Puck ke dalam produk pembinaan halaman anda, keperluan biasa ialah membenarkan pengguna anda mengurus tema halaman secara berpusat tanpa perlu membuat pelarasan pada setiap komponen.

Contohnya: pengguna memerlukan cara untuk mengurus gaya fon secara global—walaupun untuk komponen yang telah ditambahkan pada halaman. Begini bagaimana ia boleh kelihatan dalam tindakan:

Using CSS variables to create dynamic themes in Puck

Memandangkan Puck hanyalah komponen React, terdapat banyak cara untuk menyelesaikan masalah ini (serta menguruskan keadaan lain yang lebih kompleks). Untuk artikel ini, saya akan menumpukan pada salah satu pendekatan yang paling mudah lagi berkuasa—sifat CSS. Mari selami!

Using CSS variables to create dynamic themes in Puck

Untuk tutorial ini, saya akan menganggap anda mempunyai pemahaman asas tentang Puck dan fungsinya. Jika anda baru menggunakan Puck, jangan risau—anda masih dialu-alukan untuk mengikuti! Walau bagaimanapun, saya syorkan anda menyemak panduan permulaan untuk membiasakan diri anda dengan asasnya.

Persediaan Projek menggunakan Vite

Saya akan mulakan dengan menyediakan projek menggunakan skrip perancah Vite. Anda dialu-alukan untuk mengikuti atau melangkau bahagian ini jika anda sudah mempunyai projek dengan Puck.

Jika anda menggunakan Next.js atau Remix anda juga boleh menggunakan salah satu resipi Puck rasmi untuk menyediakan projek anda.

Mencipta Projek

Untuk bermula, buka terminal anda dan jalankan arahan berikut untuk mencipta projek Vite baharu:

npm create vite@latest puck-global-themes -- --template react
cd puck-global-themes
npm install

Memasang Puck

Seterusnya, pasang pakej Puck:

npm i @measured/puck --save

Memadamkan gaya bercanggah

Apabila anda memulakan projek baharu dengan Vite, ia akan disertakan dengan beberapa gaya lalai yang akan bertembung dengan Puck's. Untuk membetulkannya, padamkan src/index.css dan src/App.css, kemudian alih keluar importnya daripada src/main.jsx dan src/App.jsx:

// main.jsx
import "./index.css"; // Remove this line
// App.jsx
import "./App.css"; // Remove this line

Memaparkan editor Puck

Dengan struktur projek asas sedia, pergi ke fail src/App.jsx anda dan gantikan kandungannya dengan kod di bawah. Ini akan menyediakan Puck dengan konfigurasi asas untuk menyeret dan menjatuhkan komponen Tajuk dan Perenggan:

Perhatikan bahawa, demi kesederhanaan saya menggunakan penggayaan sebaris dalam contoh ini

// App.jsx
import { Puck } from "@measured/puck";
import "@measured/puck/puck.css";

// The configs for each of your draggable components
// Ideally you would pull each of these to their own files

const headingConfig = {
  defaultProps: {
    title: "Title",
  },
  fields: {
    title: {
      type: "text",
    },
  },
  render: ({ title }) => {
    return (
      <div>
        <h1 id="title">{title}</h1>
      </div>
    );
  },
};

const paragraphConfig = {
  defaultProps: {
    content: "This is a paragraph...",
  },
  fields: {
    content: {
      type: "textarea",
    },
  },
  render: ({ content }) => {
    return (
      <div>
        <p>{content}</p>
      </div>
    );
  },
};

// The Puck configuration object
const config = {
  components: {
    Heading: headingConfig,
    Paragraph: paragraphConfig,
  },
  root: {
    render: ({ children }) => {
      return (
        <main>



<p>Finally, run the application in development mode, navigate to http://localhost:5173, and check that everything is working as expected:<br>
</p>

<pre class="brush:php;toolbar:false">npm run dev

Using CSS variables to create dynamic themes in Puck

Hebat! Memandangkan anda mempunyai asas untuk dibina, mari tambahkan tema untuk pengguna anda.

Menambah tema

Seperti yang saya nyatakan sebelum ini, sifat tersuai CSS ialah pilihan terbaik untuk menambahkan tema interaktif pada editor anda. Mengapa ini pendekatan yang hebat? Kerana ia ringan, tidak memerlukan kebergantungan luaran dan (sebahagian besarnya) dikendalikan secara asli oleh penyemak imbas.

Persediaan

Untuk menambah tema dinamik dengan sifat CSS, anda perlu menentukan pembolehubah tema anda sebagai sifat pada beberapa induk komponen yang memerlukannya. Ini boleh jadi komponen akar Puck atau mana-mana komponen induk lain dalam hierarki editor anda, tidak mengapa asalkan anda mentakrifkannya dan kemudian membacanya di tempat yang anda perlukan menggunakan fungsi var CSS.

Untuk tutorial ini, saya akan menumpukan pada menggunakan komponen akar Puck supaya pengguna dapat menetapkan saiz fon dan warna untuk tajuk dan perenggan di satu tempat di peringkat atas editor:

Using CSS variables to create dynamic themes in Puck

Langkah 1: Tentukan Pembolehubah

Mulakan dengan mentakrifkan objek untuk memusatkan semua nama pembolehubah CSS. Ini akan meningkatkan ketekalan dan menyelamatkan anda daripada masalah penyahpepijatan yang disebabkan oleh nama harta yang salah taip dalam CSS.

Petua Pro: Jika anda menggunakan TypeScript anda boleh menggunakan enum dan bukannya objek untuk mendapatkan keselamatan jenis tambahan

npm create vite@latest puck-global-themes -- --template react
cd puck-global-themes
npm install

Langkah 2: Tambahkan Pembolehubah pada Komponen Induk

Seterusnya, kemas kini konfigurasi akar untuk memasukkan prop dan medan untuk pembolehubah tema. Ini akan membolehkan pengguna mengemas kini sifat tersuai secara langsung dari dalam medan akar editor.

Untuk melakukan ini, anda perlu menentukan medan untuk prop akar baharu dan nilai lalainya:

npm i @measured/puck --save

Selepas itu, dalam fungsi pemaparan akar, baca sifat tersuai daripada prop dan hantarkannya kepada elemen akar sebagai pembolehubah CSS.

// Objek konfigurasi Puck
konfigurasi const = {
  komponen: {
    //... komponen sedia ada
  },
  akar: {
    //... konfigurasi medan akar

    render: ({ children, fontColor, headingFontSize, paragraphFontSize}) => {
      kembali (
        <utama>



<p>Jika anda kini pergi ke editor, anda seharusnya melihat medan baharu pada peringkat akar untuk setiap satu prop. Belum ada maklum balas visual lagi, tetapi jika anda memeriksa gaya akar editor, anda akan melihat pembolehubah ditetapkan dengan setiap perubahan yang anda buat pada medan.</p>

<p><img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/000/000/173634396450671.jpg?x-oss-process=image/resize,p_40" class="lazy" alt="Using CSS variables to create dynamic themes in Puck"></p>
<h3>
  
  
  Langkah 3: Akses Pembolehubah Dikongsi dalam Komponen Kanak-kanak
</h3>

<p>Akhir sekali, akses pembolehubah tema dalam komponen yang anda perlukan dengan menggunakan fungsi var CSS dalam gaya anda.</p>

<p>Dalam contoh kami, anda akan menambahkannya dalam headingConfig dan paragraphConfig:<br>
</p>

<pre class="brush:php;toolbar:false">const headingConfig = {
  //... Konfigurasi medan tajuk

  render: ({ tajuk }) => {
    kembali (
      <div>
        <h1>



</h1>
<p>Jika anda kembali ke editor, seret dan lepaskan beberapa tajuk dan perenggan, kemudian ubah suai medan pada peringkat akar, anda akan perasan bahawa semua tajuk dan perenggan dikemas kini untuk mencerminkan perubahan tersebut:</p>

<p><img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/000/000/173634396650466.jpg?x-oss-process=image/resize,p_40" class="lazy" alt="Using CSS variables to create dynamic themes in Puck"></p>

<p>? Dan itu sahaja! Pengguna anda kini boleh mentakrifkan tema yang digunakan dengan lancar merentas komponen berbeza dalam halaman mereka.</p>

<h3>
  
  
  Kebaikan & Keburukan menggunakan sifat CSS
</h3>

<p>✅ Kelebihan:</p>

<ul>
<li>Persediaan yang mudah dan intuitif</li>
<li>Fungsi lata dan timpa terbina dalam dalam hierarki halaman, membolehkan pengurusan mudah gaya dikongsi dan keupayaan untuk menyesuaikan komponen individu</li>
<li>Sifar kebergantungan luaran dan jejak ringan—sifat tersuai CSS disokong secara asli oleh penyemak imbas</li>
<li>Kurang plat dandang dan kerumitan penyelenggaraan berbanding pilihan lain</li>
</ul>

<p>❌ Keburukan:</p>

<ul>
<li>Hanya sesuai untuk penggayaan ringkas—tidak boleh mengendalikan data atau logik yang kompleks</li>
<li>Penyahpepijatan boleh menjadi sukar apabila menyusun berbilang peringkat penggantian sifat CSS</li>
</ul>

<h2>
  
  
  Membawanya lebih jauh
</h2>

<p>Bergantung pada kes penggunaan khusus anda, terdapat banyak cara untuk membawa tema editor anda lebih jauh:</p>
<ul>
<li>
<strong>Gunakan tema pratakrif</strong> - Dalam sesetengah aplikasi, anda mungkin perlu menyediakan pilihan tema lalai—seperti Gelap, Terang atau Minimum. Untuk ini, anda boleh menggunakan medan pilihan dengan berbilang objek tema. 
Objek ini boleh mengumpulkan semua sifat CSS sebagai satu unit, membolehkan pengguna bertukar-tukar dengan mudah antara tema yang berbeza untuk halaman mereka tanpa perlu mengisi satu medan.</li>
<li>
<strong>Sepadukan perpustakaan penggayaan</strong> – Untuk editor yang lebih besar, mungkin lebih baik menggunakan perpustakaan penggayaan untuk memanfaatkan gaya pra-bina, memperkemas takrifan anda dan mengurangkan boilerplate. Perpustakaan seperti Tailwind atau Emotion boleh disepadukan dengan mudah dengan Puck, memberikan anda fleksibiliti dan kecekapan sambil mengekalkan rupa yang digilap. Malah, Puck juga menawarkan pemalam Emosi yang memudahkan proses penyepaduan untuk anda!</li>
<li>
<strong>Tambah penggantian tema peringkat komponen</strong> – Kadangkala pengguna mungkin perlu menyesuaikan komponen individu dalam halaman mereka supaya mereka menonjol daripada tema yang lain. Memandangkan kami menggunakan sifat CSS, ini boleh dicapai dengan mudah dengan mengatasi pembolehubah tema peringkat induk pada peringkat komponen. Sebagai contoh, anda boleh menambah medan warna fon pilihan dalam komponen Tajuk anda yang, jika disediakan, akan mentakrifkan semula sifat CSS khusus untuk elemen h1 tersebut.</li>
</ul>

<h2>
  
  
  Kekal Berhubung dan Teruskan Membina?
</h2>

<p>Saya harap tutorial ini telah memperkasakan anda untuk memanfaatkan pembolehubah CSS untuk tema dinamik dalam pembina halaman berkuasa Puck. Komuniti pembangun sumber terbuka adalah nadi kepada evolusi Puck dan saya tidak sabar untuk melihat apl inovatif yang anda cipta!</p>

<p>Kami berdedikasi untuk meningkatkan lagi keupayaan Puck, dengan aliran berterusan ciri baharu, termasuk enjin drag-and-drop revolusioner untuk grid kompleks dan reka letak yang dilancarkan tidak lama lagi, dan set pemalam baharu di kaki langit.</p>

<p>Jadi, jika Puck telah memberi inspirasi kepada anda atau jika anda ingin mengikuti perkembangan terkini dengan ciri terkini, berikut ialah cara anda boleh terlibat:</p>

<ul>
<li>
<strong>⭐ Bintangi kami di GitHub</strong> untuk menyokong projek dan memberi inspirasi kepada orang lain untuk meneroka potensinya.</li>
<li>
<strong>? Sertai komuniti Discord kami</strong> untuk berkongsi projek anda, bertanya soalan dan bekerjasama.</li>
<li>
<strong>? Ikuti kami di X dan Bluesky</strong> untuk mendapatkan kemas kini terbaharu, intipan dan pengumuman ciri.</li>
<li>
<strong>? Selami dengan lebih mendalam dokumentasi rasmi</strong> untuk mendapatkan teknik dan cerapan lanjutan yang boleh membawa aliran kerja tanpa kod anda ke peringkat seterusnya.</li>
</ul>


          </div>

            
        

Atas ialah kandungan terperinci Menggunakan pembolehubah CSS untuk mencipta tema dinamik dalam Puck. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel Berkaitan
Ganti aksara rentetan dalam javascriptGanti aksara rentetan dalam javascriptMar 11, 2025 am 12:07 AM

Penjelasan terperinci mengenai kaedah penggantian rentetan javascript dan Soalan Lazim Artikel ini akan meneroka dua cara untuk menggantikan watak rentetan dalam JavaScript: Kod JavaScript dalaman dan HTML dalaman untuk laman web. Ganti rentetan di dalam kod JavaScript Cara yang paling langsung ialah menggunakan kaedah pengganti (): str = str.replace ("cari", "ganti"); Kaedah ini hanya menggantikan perlawanan pertama. Untuk menggantikan semua perlawanan, gunakan ungkapan biasa dan tambahkan bendera global g: str = str.replace (/fi

8 plugin susun atur halaman jquery yang menakjubkan8 plugin susun atur halaman jquery yang menakjubkanMar 06, 2025 am 12:48 AM

Leverage JQuery untuk Layouts Laman Web yang mudah: 8 Plugin Essential JQuery memudahkan susun atur laman web dengan ketara. Artikel ini menyoroti lapan plugin jQuery yang kuat yang menyelaraskan proses, terutamanya berguna untuk penciptaan laman web manual

Bina Aplikasi Web Ajax anda sendiriBina Aplikasi Web Ajax anda sendiriMar 09, 2025 am 12:11 AM

Jadi di sini anda, bersedia untuk mempelajari semua perkara ini yang dipanggil Ajax. Tetapi, apa sebenarnya? Istilah Ajax merujuk kepada kumpulan teknologi longgar yang digunakan untuk membuat kandungan web yang dinamik dan interaktif. Istilah Ajax, yang asalnya dicipta oleh Jesse J

10 helaian cheat mudah alih untuk pembangunan mudah alih10 helaian cheat mudah alih untuk pembangunan mudah alihMar 05, 2025 am 12:43 AM

Siaran ini menyusun helaian cheat berguna, panduan rujukan, resipi cepat, dan coretan kod untuk perkembangan aplikasi Android, BlackBerry, dan iPhone. Tiada pemaju harus tanpa mereka! Panduan Rujukan Gesture Touch (PDF) Sumber yang berharga untuk desig

Tingkatkan pengetahuan jQuery anda dengan penonton sumberTingkatkan pengetahuan jQuery anda dengan penonton sumberMar 05, 2025 am 12:54 AM

JQuery adalah rangka kerja JavaScript yang hebat. Walau bagaimanapun, seperti mana -mana perpustakaan, kadang -kadang perlu untuk mendapatkan di bawah tudung untuk mengetahui apa yang sedang berlaku. Mungkin kerana anda mengesan bug atau hanya ingin tahu tentang bagaimana jQuery mencapai UI tertentu

10 JQuery Fun and Games Plugin10 JQuery Fun and Games PluginMar 08, 2025 am 12:42 AM

10 Plugin Permainan JQuery yang menyeronokkan untuk menjadikan laman web anda lebih menarik dan meningkatkan keletihan pengguna! Walaupun Flash masih merupakan perisian terbaik untuk membangunkan permainan web kasual, jQuery juga boleh menghasilkan kesan yang mengejutkan, dan walaupun tidak setanding dengan permainan flash aksi tulen, dalam beberapa kes, anda juga boleh bersenang -senang di penyemak imbas anda. permainan jquery tic toe "Hello World" pengaturcaraan permainan kini mempunyai versi jQuery. Kod sumber JQuery Game Composition Crazy Word Ini adalah permainan mengisi kosong, dan ia dapat menghasilkan beberapa hasil yang pelik kerana tidak mengetahui konteks perkataan. Kod sumber JQuery Mine Sweeping Game

Bagaimana saya membuat dan menerbitkan perpustakaan JavaScript saya sendiri?Bagaimana saya membuat dan menerbitkan perpustakaan JavaScript saya sendiri?Mar 18, 2025 pm 03:12 PM

Artikel membincangkan membuat, menerbitkan, dan mengekalkan perpustakaan JavaScript, memberi tumpuan kepada perancangan, pembangunan, ujian, dokumentasi, dan strategi promosi.

JQuery Parallax Tutorial - Latar Belakang Header AnimasiJQuery Parallax Tutorial - Latar Belakang Header AnimasiMar 08, 2025 am 12:39 AM

Tutorial ini menunjukkan cara membuat kesan latar belakang paralaks yang menawan menggunakan jQuery. Kami akan membina sepanduk header dengan imej berlapis yang mewujudkan kedalaman visual yang menakjubkan. Plugin yang dikemas kini berfungsi dengan JQuery 1.6.4 dan kemudian. Muat turun

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

MantisBT

MantisBT

Mantis ialah alat pengesan kecacatan berasaskan web yang mudah digunakan yang direka untuk membantu dalam pengesanan kecacatan produk. Ia memerlukan PHP, MySQL dan pelayan web. Lihat perkhidmatan demo dan pengehosan kami.

DVWA

DVWA

Damn Vulnerable Web App (DVWA) ialah aplikasi web PHP/MySQL yang sangat terdedah. Matlamat utamanya adalah untuk menjadi bantuan bagi profesional keselamatan untuk menguji kemahiran dan alatan mereka dalam persekitaran undang-undang, untuk membantu pembangun web lebih memahami proses mengamankan aplikasi web, dan untuk membantu guru/pelajar mengajar/belajar dalam persekitaran bilik darjah Aplikasi web keselamatan. Matlamat DVWA adalah untuk mempraktikkan beberapa kelemahan web yang paling biasa melalui antara muka yang mudah dan mudah, dengan pelbagai tahap kesukaran. Sila ambil perhatian bahawa perisian ini

EditPlus versi Cina retak

EditPlus versi Cina retak

Saiz kecil, penyerlahan sintaks, tidak menyokong fungsi gesaan kod

SublimeText3 Linux versi baharu

SublimeText3 Linux versi baharu

SublimeText3 Linux versi terkini