CSS Academy · leksjon

CSS Typed Object Model (OM)

Arbeid med CSS-verdier som typede JavaScript-objekter i stedet for strenger ved hjelp av API-et CSS Typed OM.

Leksjon 1 av 413 trinn

CSS Typed Object Model (OM) er en gratis leksjon i CSS Academy på CoddyKit. Dette er leksjon 1 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i CSS Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i CSS Academy inneholder totalt 4 leksjoner.

Hva er CSS Typed OM?

CSS Typed Object Model (Typed OM) er en del av CSS Houdini-prosjektet. Det eksponerer CSS-verdier som typede JavaScript-objekter i stedet for vanlige strenger, noe som muliggjør raskere manipulering, mer avansert aritmetikk og typesikkerhet.

Gammelt kontra nytt

Tradisjonell CSSOM returnerer strenger, mens Typed OM returnerer objekter med typeinformasjon:

<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()

Hent beregnede, typede verdier for et hvilket som helst 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 for innebygde stiler

Angi og hent typede verdier for innebygde stiler 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>

Fabrikkmetoder for CSS-tall

CSS-navnerommet tilbyr fabrikkmetoder for å opprette typede verdier:

<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>

Aritmetikk på typede verdier

CSSMathValue gjør det mulig å utføre CSS-matematiske operasjoner i JavaScript uten å sette sammen strenger:

<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>

Ytelsesfordeler

Typed OM er betydelig raskere enn strengbasert CSSOM ved hyppige manipuleringer (for eksempel i animasjonsbilder). Verdiene må ikke analyseres fra strenger ved hver tilgang – de er allerede strukturerte objekter.

CSSStyleValue-typer

Typede OM-verdityper omfatter:

  • CSSUnitValue: tall + enhet (100px)
  • CSSKeywordValue: nøkkelord (auto, none)
  • CSSImageValue: bilde (url())
  • CSSMathValue: calc-uttrykk
  • CSSColorValue: fargeverdier (eksperimentell)

Typed OM i animasjoner

I Web Animations API kan du bruke typede verdier for mer presis kontroll over animasjoner:

<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>

Nettleserstøtte

CSS Typed OM (Level 1) støttes i Chrome 66+ og Edge 79+. Firefox og Safari har delvis støtte eller støtte bak funksjonsflagg. Sjekk caniuse.com før du bruker dette i produksjon. API-et fortsetter å utvides.

Når bør du bruke Typed OM?

Bruk Typed OM når du:

  • bygger CSS Paint- eller Layout Worklets (påkrevd)
  • animerer mange elementer per bilde i JavaScript
  • bygger CSS-verktøy eller forhåndsprosessorer
  • trenger typesjekket manipulering av CSS-verdier

Hurtigsjekk

Hva returnerer element.computedStyleMap().get("width") sammenlignet med getComputedStyle(element).width?

Oppsummering

CSS Typed OM erstatter strengbasert CSSOM med typede JavaScript-objekter. Bruk computedStyleMap() for lesetilgang og attributeStyleMap for å skrive innebygde stiler. CSS-fabrikkmetoder (CSS.px(), CSS.percent()) oppretter typede verdier. API-et er raskere enn strengbasert manipulering og er nødvendig for Paint- og Layout Worklets.

Gratis å komme i gang

Lær deg CSS med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
40
Leksjoner
159

Ofte stilte spørsmål

Er leksjonen «CSS Typed Object Model (OM)» gratis?

Ja – hele teksten i «CSS Typed Object Model (OM)» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av CSS Academy-kurset, kan du oppgradere til CoddyKit PRO. Kurset i CSS Academy inneholder totalt 4 leksjoner.

Hva lærer jeg i «CSS Typed Object Model (OM)»?

Arbeid med CSS-verdier som typede JavaScript-objekter i stedet for strenger ved hjelp av API-et CSS Typed OM. Du øver på CSS Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med CSS Academy?

Ingen tidligere erfaring er nødvendig. CSS Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 1 av 4.

Hvor lang tid tar leksjonen «CSS Typed Object Model (OM)»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne CSS Academy-leksjonen?

Ja. Alle CSS Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. CSS Typed Object Model (OM)
  2. API-et CSS Properties and Values (@property)
  3. CSS Paint API: Worklets
  4. CSS Layout API og omfang
← Tilbake til CSS Academy