CSS Typed Object Model (OM)
Gunakan nilai CSS sebagai objek JavaScript bertipe, bukan string, dengan API CSS Typed OM.
CSS Typed Object Model (OM) adalah pelajaran CSS Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar CSS Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus CSS Academy mencakup 4 pelajaran total.
Apa itu CSS Typed OM?
CSS Typed Object Model (Typed OM) merupakan bagian dari proyek CSS Houdini. Teknologi ini mengekspos nilai CSS sebagai objek JavaScript bertipe, bukan teks biasa, sehingga memungkinkan manipulasi yang lebih cepat, operasi aritmetika yang lebih kaya, dan keamanan tipe.
Lama vs Baru
CSSOM tradisional mengembalikan teks; Typed OM mengembalikan objek dengan informasi tipe:
<p id="demo" style="opacity: 0.5;">Typed OM demo element</p>
<p id="output">Reading style values…</p>
<script>
const demo = document.getElementById('demo');
const output = document.getElementById('output');
// Old CSSOM (string)
const oldValue = demo.style.opacity; // '0.5'
// CSS Typed OM (typed object)
const typed = demo.computedStyleMap().get('opacity');
// CSSUnitValue { value: 0.5, unit: 'number' }
output.textContent = 'old (string): "' + oldValue + '" | typed OM: value=' + typed.value + ', unit=' + typed.unit;
</script>
computedStyleMap()
Akses nilai bertipe terkomputasi untuk elemen apa pun:
<div id="box">400px wide box</div>
<p id="output">Reading computed width…</p>
<script>
const box = document.getElementById('box');
const output = document.getElementById('output');
const styles = box.computedStyleMap();
const width = styles.get('width');
console.log(width.value); // 400
console.log(width.unit); // 'px'
output.textContent = 'width.value = ' + width.value + ', width.unit = "' + width.unit + '"';
</script>
attributeStyleMap untuk Gaya Sebaris
Tetapkan dan ambil nilai gaya sebaris bertipe melalui element.attributeStyleMap:
<div id="box">Inline-styled box</div>
<p id="output">Setting styles via attributeStyleMap…</p>
<script>
const box = document.getElementById('box');
const output = document.getElementById('output');
box.attributeStyleMap.set('opacity', CSS.number(0.5));
box.attributeStyleMap.set('margin-top', CSS.px(16));
const opacity = box.attributeStyleMap.get('opacity');
output.textContent = 'opacity.value = ' + opacity.value;
</script>
Metode Pabrik Numerik CSS
Ruang nama CSS menyediakan metode pabrik untuk membuat nilai bertipe:
<div id="box">Factory methods demo</div>
<p id="output">Computing…</p>
<script>
const output = document.getElementById('output');
const px = CSS.px(100); // CSSUnitValue(100, 'px')
const percent = CSS.percent(50); // CSSUnitValue(50, 'percent')
const em = CSS.em(1.5); // CSSUnitValue(1.5, 'em')
const number = CSS.number(0.5); // CSSUnitValue(0.5, 'number')
const deg = CSS.deg(180); // CSSUnitValue(180, 'deg')
output.textContent = [px, percent, em, number, deg]
.map(v => v.value + v.unit).join(', ');
</script>
Aritmetika pada Nilai Bertipe
CSSMathValue memungkinkan operasi matematika CSS dalam JavaScript tanpa penggabungan teks:
<div id="box">Math on typed values</div>
<p id="output">Calculating…</p>
<script>
const output = document.getElementById('output');
const width = CSS.px(100).add(CSS.percent(10));
// Equivalent to calc(100px + 10%)
const margin = CSS.px(16).mul(2);
// 32px
output.textContent = 'width = ' + width.toString() + ' | margin = ' + margin.value + margin.unit;
</script>
Manfaat Kinerja
Typed OM jauh lebih cepat daripada CSSOM berbasis teks untuk manipulasi yang sering dilakukan (misalnya, setiap bingkai animasi). Nilai tidak perlu diuraikan dari teks setiap kali diakses — nilai tersebut sudah berupa objek terstruktur.
Tipe CSSStyleValue
Tipe nilai Typed OM meliputi:
CSSUnitValue: angka + satuan (100px)CSSKeywordValue: kata kunci (auto, none)CSSImageValue: gambar (url())CSSMathValue: ekspresi calcCSSColorValue: nilai warna (eksperimental)
Typed OM dalam Animasi
Dalam Web Animations API, gunakan nilai bertipe untuk kontrol animasi yang lebih presisi:
<div id="box">Animated via Typed OM</div>
<script>
const box = document.getElementById('box');
box.animate(
[{ opacity: CSS.number(0) }, { opacity: CSS.number(1) }],
{ duration: 300, fill: 'forwards' }
);
</script>
Dukungan Peramban
CSS Typed OM (Level 1) didukung di Chrome 66+ dan Edge 79+. Dukungan Firefox dan Safari sebagian atau masih memerlukan pengaktifan fitur. Periksa caniuse.com sebelum menggunakannya dalam produksi. Cakupan API terus berkembang.
Kapan Menggunakan Typed OM
Gunakan Typed OM ketika:
- Membangun Worklet Paint atau Tata Letak CSS (diperlukan)
- Menganimasikan banyak elemen setiap bingkai dalam JavaScript
- Membangun perkakas atau praprosesor CSS
- Anda memerlukan manipulasi nilai CSS yang diperiksa tipenya
Pemeriksaan Singkat
Apa yang dikembalikan oleh element.computedStyleMap().get("width") dibandingkan dengan getComputedStyle(element).width?
Ringkasan
CSS Typed OM menggantikan CSSOM berbasis teks dengan objek JavaScript bertipe. Gunakan computedStyleMap() untuk akses baca dan attributeStyleMap untuk penulisan gaya sebaris. Metode pabrik CSS (CSS.px(), CSS.percent()) membuat nilai bertipe. API ini lebih cepat daripada manipulasi berbasis teks dan diperlukan untuk Worklet Paint dan Tata Letak.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “CSS Typed Object Model (OM)” gratis?
Ya — teks lengkap “CSS Typed Object Model (OM)” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus CSS Academy, upgrade ke CoddyKit PRO. Kursus CSS Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “CSS Typed Object Model (OM)”?
Gunakan nilai CSS sebagai objek JavaScript bertipe, bukan string, dengan API CSS Typed OM. Kamu berlatih CSS Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai CSS Academy?
Tidak diperlukan pengalaman sebelumnya. CSS Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.
Berapa lama pelajaran “CSS Typed Object Model (OM)” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran CSS Academy ini?
Ya. Setiap pelajaran CSS Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- CSS Typed Object Model (OM)
- API Properti dan Nilai CSS (@property)
- API Paint CSS: Worklet
- API Tata Letak CSS dan Cakupan