CSS Typed Object Model (OM)
Arbeta med CSS-värden som typade JavaScript-objekt i stället för strängar med API:t CSS Typed OM.
CSS Typed Object Model (OM) är en gratis lektion i CSS Academy på CoddyKit. Detta är lektion 1 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för CSS Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i CSS Academy innehåller totalt 4 lektioner.
Vad är CSS Typed OM?
CSS Typed Object Model (Typed OM) är en del av CSS Houdini-projektet. Det exponerar CSS-värden som typade JavaScript-objekt i stället för vanliga strängar, vilket möjliggör snabbare manipulation, mer avancerade beräkningar och typsäkerhet.
Gammalt jämfört med nytt
Traditionell CSSOM returnerar strängar, medan Typed OM returnerar objekt med typinformation:
<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()
Åtkomst till beräknade, typade värden för valfritt element:
<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 för infogade stilar
Hämta och ange typade värden för infogade stilar via 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>
Fabriksmetoder för numeriska CSS-värden
CSS-namnområdet tillhandahåller fabriksmetoder för att skapa typade värden:
<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>
Aritmetik med typade värden
CSSMathValue möjliggör matematiska CSS-operationer i JavaScript utan att strängar sammanfogas:
<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>
Prestandafördelar
Typed OM är avsevärt snabbare än strängbaserad CSSOM vid frekventa ändringar (till exempel under animeringsbilder). Värdena behöver inte tolkas från strängar vid varje åtkomst – de är redan strukturerade objekt.
CSSStyleValue-typer
Värdetyper i Typed OM omfattar:
CSSUnitValue: tal + enhet (100px)CSSKeywordValue: nyckelord (auto, none)CSSImageValue: bild (url())CSSMathValue: calc-uttryckCSSColorValue: färgvärden (experimentellt)
Typed OM i animeringar
I Web Animations API använder du typade värden för mer exakt kontroll över animeringar:
<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>
Webbläsarstöd
CSS Typed OM (Level 1) stöds i Chrome 66+ och Edge 79+. Stödet i Firefox och Safari är delvis eller kräver aktivering bakom flaggor. Kontrollera caniuse.com innan du använder det i produktion. API:ets omfattning fortsätter att utökas.
När ska Typed OM användas?
Använd Typed OM när du:
- bygger CSS Paint- eller Layout Worklets (krävs)
- animerar många element per bildruta i JavaScript
- bygger CSS-verktyg eller förprocessorer
- behöver typkontrollerad manipulation av CSS-värden
Snabbkontroll
Vad returnerar element.computedStyleMap().get("width") jämfört med getComputedStyle(element).width?
Sammanfattning
CSS Typed OM ersätter strängbaserad CSSOM med typade JavaScript-objekt. Använd computedStyleMap() för läsåtkomst och attributeStyleMap för att skriva infogade stilar. CSS-fabriksmetoder (CSS.px(), CSS.percent()) skapar typade värden. API:et är snabbare än strängbaserad manipulation och krävs för Paint- och Layout Worklets.
Lär dig CSS med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 40
- Lektioner
- 159
Vanliga frågor
Är lektionen ”CSS Typed Object Model (OM)” gratis?
Ja – hela texten till ”CSS Typed Object Model (OM)” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i CSS Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i CSS Academy innehåller totalt 4 lektioner.
Vad lär jag mig i ”CSS Typed Object Model (OM)”?
Arbeta med CSS-värden som typade JavaScript-objekt i stället för strängar med API:t CSS Typed OM. Ni övar på CSS Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig CSS Academy?
Du behöver inga förkunskaper. Utbildningen i CSS Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 1 av 4.
Hur lång tid tar lektionen ”CSS Typed Object Model (OM)”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här CSS Academy-lektionen?
Ja. Varje CSS Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- CSS Typed Object Model (OM)
- API:t CSS Properties and Values (@property)
- CSS Paint API: worklets
- CSS Layout API och dess omfattning