Konverter CSS ke JavaScript Gratis

Konversi properti CSS ke objek gaya JavaScript. Ubah properti kebab-case menjadi camelCase. Sempurna untuk React dan styled-components.

Format output:
Contoh: background-color: #007bff;
padding: 10px 20px;
border-radius: 4px;
Berkonversi menjadi: { backgroundColor: '#007bff', padding: '10px 20px', borderRadius: '4px' }

Cara penggunaan

Alat ini menguraikan properti CSS dan mengonversinya menjadi sintaks objek JavaScript. Nama properti dalam kebab-case (seperti background-color) secara otomatis diubah menjadi camelCase (backgroundColor). Nilai CSS dipertahankan sebagaimana adanya. Anda dapat memasukkan properti individual atau aturan CSS lengkap dengan selektor.

Gerakan CSS-in-JS, Secara Singkat

Mengapa masalah konversi ini ada sama sekali? Karena pada 2014 segenerasi pengembang frontend memutuskan bahwa CSS dalam stylesheet terpisah telah gagal pada skala. Momen pendiri adalah talk Christopher "Vjeux" Chedeau "CSS in JS" di NationJS pada 15 November 2014: insinyur Facebook yang berargumen bahwa cascade global CSS, kurangnya pelacakan dependensi, dan akumulasi kode-mati membuatnya menjadi bagian terburuk dari aplikasi web besar. Talk itu menyalakan gerakan. JSS (Oleg Slobodskoi) dirilis pada akhir 2014 sebagai pustaka CSS-in-JS general-purpose pertama. CSS Modules tiba pada 2015 sebagai pendekatan waktu-build untuk scoping. styled-components (Glen Maddern + Max Stoiber) dirilis pada Oktober 2016, mempopulerkan API tagged-template-literal di mana Anda menulis CSS di dalam backtick yang dilampirkan ke definisi komponen. Emotion (Kye Hohenberger) dirilis pada 10 Juli 2017 baik dengan API gaya styled-components maupun prop css yang lebih fleksibel yang langsung menerima objek JavaScript: persis format yang dihasilkan alat ini. Stitches (Modulz/Pedro Duarte) dirilis pada 2020 dengan API berbasis-varian tetapi menjadi tidak dipelihara di pertengahan 2023 dan secara resmi diarsipkan pada April 2026.

Pendulum telah berayun kembali. "Why We're Breaking Up with CSS-in-JS" Sam Magura pada 16 Oktober 2022: ditulis oleh seorang pemelihara Emotion: adalah titik infleksi. Kasus teknis: CSS-in-JS waktu-runtime secara terukur memperlambat render React (benchmark Magura sendiri di Spot Member Browser menurunkan waktu render median dari 54,3 md menjadi 27,7 md setelah migrasi dari Emotion, sekitar 2× lebih cepat); ukuran bundel lebih besar; biaya serialisasi terakumulasi. Kasus arsitektural: React Server Components (distabilisasi oleh Next.js 13.4 pada 4 Mei 2023) tidak dapat menggunakan React Context, yang sebagian besar pustaka CSS-in-JS bergantung untuk theming. Gelombang penggantinya: Tailwind CSS (Adam Wathan, peluncuran v4 22 Januari 2025); Vanilla Extract (Mark Dalgleish di Seek, 26 Maret 2021) untuk CSS-in-TypeScript waktu-build; CSS Modules untuk nama kelas scoped tanpa biaya runtime; dan kelompok compile-to-static yang bertahan yang disebutkan dalam pos Magura sendiri: vanilla-extract, Linaria, Compiled, StyleX, dan Pigment CSS. JSS sendiri dideprecate pada 14 Mei 2024; styled-components masuk ke mode pemeliharaan pada 17 Maret 2025. CSS-in-JS waktu-runtime tidak lagi merupakan default untuk proyek React baru pada 2026: tetapi codebase raksasa kode styled-components dan Emotion yang ada bertahan, dan mengonversi CSS ke bentuk objek pustaka tersebut masih merupakan kenyataan harian bagi banyak tim.

Permukaan API Pustaka Utama

Style inline React (prop style) adalah baseline universal: setiap komponen React menerima objek style yang kuncinya adalah properti CSS camelCase. Tidak ada dukungan untuk pseudo-class (:hover), media query, atau !important; ini adalah "inline style" dalam pengertian atribut HTML style="..." lama, hanya dengan objek JavaScript alih-alih string. Output alat ini langsung masuk ke style={...}. styled-components menggunakan tagged template literal yang berisi string CSS nyata: const Button = styled.div`background: red; padding: 10px;`. CSS-nya adalah CSS nyata, kebab-case dan semuanya: Anda biasanya tidak memerlukan konverter ini untuk styled-components kecuali Anda berpindah dari inline style ke styled component. Emotion mendukung kedua API: API styled (template literal seperti styled-components) dan prop css dengan objek JavaScript (camelCase, persis format yang dihasilkan alat ini). Untuk prop css Emotion, output konverter ini langsung dapat digunakan. JSS menggunakan format objek serupa dengan beberapa fitur tambahan (theming, nama kelas yang dihasilkan secara otomatis) tetapi sintaks properti camelCase dasar sama. Style binding Vue (:style="...") menerima sintaks objek camelCase yang sama dengan inline style React. Vanilla Extract menggunakan bentuk objek tipped yang lebih ketat dengan fungsi pembungkus eksplisit style({ ... }); objek camelCase di dalamnya memiliki bentuk yang sama.

Kasus Tepi dan Trik

Kasus Penggunaan Umum

Lingkup Jujur: Apa yang Dilakukan dan Tidak Dilakukan Alat Ini

Alat ini mengonversi deklarasi CSS ke sintaks objek JavaScript dengan kunci camelCase dan nilai string yang dikutip dengan benar. Ia menangani aturan kapitalisasi prefiks-vendor (termasuk pengecualian ms kecil). Ia tidak menerjemahkan ke API pustaka tertentu di luar menghasilkan objek camelCase: Anda masih harus tahu apakah codebase Anda menginginkan objek di dalam styled.div`...`, di dalam panggilan css Emotion, di dalam prop style React, atau di dalam binding :style Vue. Pilihan tergantung pada pustaka Anda, bukan konverter. Alat ini juga tidak menangani aturan bersarang dan pseudo-selektor secara otomatis: sintaks objek bersarang Emotion ('&:hover': {...}) dan penyarangan template-literal styled-components bekerja secara berbeda dan memerlukan strukturisasi manual. Untuk migrasi lengkap dari file CSS ke pustaka CSS-in-JS, harapkan untuk melakukan beberapa restrukturisasi di luar konversi properti-per-properti yang disediakan alat ini.

Privasi: Mengapa Hanya-Browser Penting di Sini

CSS jarang berisi rahasia, tetapi stylesheet proprietary mengungkapkan informasi tentang taksonomi kelas internal situs, token sistem desainnya, dan kadang-kadang hipotesis A/B-test-nya melalui selektor khusus-eksperimen. Alat konversi sisi-server memerlukan upload CSS, yang berada di log mereka. Untuk style produk internal, file kebenaran sumber sistem desain, atau branding work-in-progress, konversi browser-only menjaganya tetap lokal. Alat ini menjalankan seluruh transformasi di browser Anda: verifikasi di tab Network DevTools saat Anda mengklik Konversi, atau bawa halaman offline (mode pesawat) dan konverter masih berfungsi.

Pertanyaan yang Sering Diajukan

Bagaimana properti CSS dikonversi ke camelCase?

Setiap tanda hubung dalam properti CSS kebab-case dihapus dan huruf berikutnya dikapitalisasi: background-colorbackgroundColor, border-radiusborderRadius, margin-topmarginTop. Properti dengan prefiks vendor mengikuti aturan yang sama dengan kapitalisasi: -webkit-transformWebkitTransform (W kapital), -moz-appearanceMozAppearance. Pengecualian terkenal adalah prefiks Microsoft: -ms-flexmsFlex dengan m kecil, karena begitulah React DOM mendefinisikannya.

Apakah ini bekerja untuk media query dan pseudo-class?

Objek style JavaScript biasa (prop style React, :style Vue) tidak mendukung media query atau pseudo-class: itu adalah konsep stylesheet. Pustaka CSS-in-JS yang menerima sintaks objek (prop css Emotion, JSS) mendukungnya melalui objek bersarang: '&:hover': { background: 'red' }, '@media (min-width: 768px)': { padding: '20px' }. Dokumentasi pustaka tujuan akan menunjukkan struktur penyarangan yang tepat. Alat ini menghasilkan objek datar; Anda membungkusnya dalam sintaks penyarangan pustaka secara manual.

Mengapa !important tidak bekerja di style inline React?

Prop style React secara diam-diam mengabaikan anotasi !important: itu bukan bagian dari tata bahasa literal objek JS dan renderer React tidak menerjemahkannya. Jika Anda perlu mengganti aturan dengan spesifisitas yang lebih tinggi, gunakan stylesheet nyata (CSS Modules, Tailwind, styled-components, CSS biasa). Mekanisme inline-style React adalah untuk style satu-kali atau dinamis di mana spesifisitas bukan masalah; !important milik di stylesheet.

Haruskah saya masih menggunakan CSS-in-JS pada 2026?

Untuk proyek React baru, default saat ini adalah "tidak, gunakan Tailwind, CSS Modules, atau Vanilla Extract." Artikel Sam Magura Oktober 2022 dari dalam tim Emotion: dikombinasikan dengan ketidakcocokan Context React Server Components: mendorong ekosistem ke arah solusi waktu-build-saja. styled-components pindah ke mode pemeliharaan pada 17 Maret 2025; JSS dideprecate pada 14 Mei 2024. Untuk codebase yang ada dengan investasi styled-components atau Emotion yang signifikan, tidak ada terburu-buru untuk bermigrasi: kedua pustaka masih berfungsi, dan biaya runtime adalah jenis hal yang Anda optimalkan ketika muncul dalam profiling. Untuk proyek baru di 2026: Tailwind v4 (dirilis 22 Januari 2025) adalah pilihan paling populer; Vanilla Extract untuk proyek yang menginginkan typing TypeScript ketat pada style; CSS Modules untuk proyek yang menginginkan abstraksi minimal.

Bisakah saya mengonversi token sistem desain dengan cara ini?

Untuk snippet satu-kali, ya. Untuk seluruh sistem desain: biasanya puluhan atau ratusan token yang diorganisir berdasarkan warna, jarak, tipografi, motion: gunakan alat khusus seperti Style Dictionary atau Theo, keduanya mengambil satu sumber kebenaran (JSON, YAML, atau JS) dan menghasilkan output ke beberapa tujuan (properti custom CSS, konstanta JS, iOS Asset Catalogs, XML Android, dll.). Keuntungan dari alat token desain nyata adalah konsistensi di seluruh platform; konverter ini adalah untuk kasus di mana Anda memiliki snippet CSS di tangan dan menginginkan bentuk JS sekarang.

Apakah CSS saya dikirim ke mana pun?

Tidak. Konversi berjalan sepenuhnya di browser Anda melalui JavaScript. CSS yang Anda tempel tidak pernah melintasi jaringan: verifikasi di tab Network DevTools saat Anda mengklik Konversi, atau bawa halaman offline setelah dimuat dan konfirmasi alat masih berfungsi. Aman untuk stylesheet proprietary, file kebenaran sumber sistem desain, atau CSS apa pun yang mengungkapkan taksonomi kelas internal yang tidak ingin Anda salin ke hard drive orang asing.

Alat terkait