CSS Academy · Lektion

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.

Lektion 1 av 413 steg

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&hellip;</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&hellip;</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&hellip;</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&hellip;</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&hellip;</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-uttryck
  • CSSColorValue: 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.

Gratis att börja

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

  1. CSS Typed Object Model (OM)
  2. API:t CSS Properties and Values (@property)
  3. CSS Paint API: worklets
  4. CSS Layout API och dess omfattning
← Tillbaka till CSS Academy