Changes between Initial Version and Version 1 of Nb:Help/Styles/MapCSSImplementation


Ignore:
Timestamp:
2025-03-15T10:12:36+01:00 (10 months ago)
Author:
paleid
Comment:

Nb added

Legend:

Unmodified
Added
Removed
Modified
  • Nb:Help/Styles/MapCSSImplementation

    v1 v1  
     1[[TranslatedPages(revision=268)]]
     2[[PageOutline(2-10,Innholdsfortegnelse)]]
     3= MapCSS Implementering =
     4JOSMs implementering av [osmwiki:MapCSS/0.2 MapCSS] brukes for følgende funksjoner:
     5
     6* [wikitr:/Styles Kartmalingsstiler]
     7* [wikitr:/Rules Valideringsregler], se [wikitr:/Help/Validator/MapCSSTagChecker MapCSS tagg-sjekker] for den spesielle delen som kun gjelder regler.
     8* [wikitr:/Help/Action/Search Søkedialog]
     9
     10Vurder å installere [https://marketplace.visualstudio.com/items?itemName=whammo.mapcss-syntax MapCSS Syntax Highlighter] i VS Code for å legge til visuell fremheving for MapCSS malings- og valideringssyntaks.
     11
     12== Generell Struktur ==
     13Et MapCSS stilark har regler på formen:
     14#!mapcss
     15selector {
     16    prop: verdi;
     17    /* ... */
     18    prop: verdi;
     19    /* og/eller */
     20    set: klasse;
     21    set: .klasse;
     22    /* merk at valideringsregler ikke bruker kolon etter set */
     23}
     24
     25Algoritmen for å finne stilene for et gitt objekt er som følger:
     26 - for hver regel:
     27     hvis selektoren gjelder, sett egenskapene fra { }-blokken
     28 - analyser den endelige listen over egenskaper og generer stiler fra den
     29
     30MapCSS bruker CSS-kommentarformatet (`/* ... */`). Merk at når du kommenterer ut store deler av en MapCSS-fil, kan noen konstruksjoner føre til en uventet avslutning av kommentaren, for eksempel:
     31#!mapcss
     32/*
     33*[highway][name =~ /^R(\.|:)? .*/] { /* slutten av det regulære uttrykket definerer den uventede slutten av kommentaren */
     34        throwWarning: tr("foo");
     35}
     36*/
     37
     38== Selektorer == #Selektorer
     39''Selektorer'' angir filteruttrykkene for en MapCSS-regel. Regelen brukes kun på et kartobjekt hvis selektorene samsvarer med objektet.
     40
     41Selektorer i MapCSS er forskjellige fra standard CSS for web. MapCSS støtter kun en delmengde av standard CSS-selektorer, men utvider dem med tilleggsselektorer som kreves for OSM-data.
     42
     43Noen grunnleggende eksempler:
     44#!mapcss
     45/* brukes på veier med en tag highway=residential */
     46way[highway=residential] {  /* stilene */ }
     47
     48/* brukes på nye, lukkede veier på lag 1, forutsatt at de har taggen amenity=parking og access=customers, og forutsatt at zoomnivået er mellom 11 og 14 */
     49way|z11-14[amenity=parking][access=customers]:closed:new::layer_1 {...}
     50
     51area[amenity=parking][access=customers], area[amenity=parking][!access] {...}
     52relation[type=route][route=foot] > way::relation_underlay {..}
     53
     54=== Type-selektor ===
     55#!th valign=top
     56'''Selektor'''
     57#!th valign=top
     58'''Beskrivelse'''
     59|-------------------------------------------------------------------------------
     60#!td align=center  valign=top
     61*
     62#!td align=left  valign=top   
     63Samtlige objekter
     64|-------------------------------------------------------------------------------
     65#!td align=center  valign=top
     66`node`, `way`, `relation`
     67#!td align=left  valign=top   
     68Samtlige OSM-objekter av den angitte typen.
     69|-------------------------------------------------------------------------------
     70#!td align=center  valign=top
     71`area`
     72#!td align=left  valign=top   
     73Samtlige områder, uavhengig av om områdegrensen kun er modellert med en enkelt vei eller med et sett av veier limt sammen med en relasjon.
     74#!mapcss
     75area[natural=beach] {...}
     76/* ... er lik ... */
     77way[natural=beach], relation[type=multipolygon][natural=beach] {...}
     78Merk at `area` velger også ulukkede veier, så det kan være nyttig å legge til `:closed` pseudo-klassen. JOSM-valideringen vil gi en advarsel for ulukkede veier som har en områdestil.
     79|-------------------------------------------------------------------------------
     80#!td align=center  valign=top
     81`meta`
     82#!td align=left  valign=top   
     83`meta`-selektoren starter en spesiell regel som bør stå i begynnelsen av filen. Den gir generell informasjon om stilarket. All programvare som støtter MapCSS bør kunne parse denne delen uten feil, så ikke bruk eksotisk syntaks i denne delen.
     84#!mapcss
     85meta {
     86    title: "Parkering felt";   /* tittel vist i menyen */
     87    icon: "logo_16x16x8.png"; /* lite ikon vist i menyen ved siden av tittelen */
     88    version: "1.2";           /* versjonen av stilen */
     89    description: "...";       /* en eller to setninger som beskriver stilen */
     90    author: "...";            /* forfatteren(e) av stilen */
     91    link: "https://...";      /* URL til stilens nettside */
     92    min-josm-version: 6789;   /* minimum JOSM-versjon der denne stilen fungerer */
     93}
     94|-------------------------------------------------------------------------------
     95#!td align=center  valign=top
     96`canvas`
     97#!td align=left  valign=top   
     98Noen stilinformasjon som ikke er spesifikk for noder, veier eller relasjoner.
     99#!mapcss
     100canvas {
     101    fill-color: #ffffea; /* den tidligere background-color er utdatert siden r7110 */
     102    default-points: false;
     103    default-lines: false;
     104}
     105#!th
     106'''Nøkkel'''
     107#!th
     108'''Beskrivelse'''
     109#!th
     110'''Verdiformat'''
     111#!th
     112'''Standardverdi'''
     113|-
     114#!td align=center
     115`fill-color`
     116#!td
     117Angir fyll-/bakgrunnsfargen (`background-color` er utdatert siden r7110).
     118#!td align=center
     119''Farge''
     120#!td align=center
     121`black`
     122|-
     123#!td align=center
     124`default-points`
     125#!td
     126Om standard punktstil skal legges til noder der ingen stil gjelder.
     127#!td align=center
     128''Boolean''
     129#!td align=center
     130`true`
     131|-
     132#!td align=center
     133`default-lines`
     134#!td
     135Om standard linjestil skal legges til veier der ingen stil gjelder.
     136#!td align=center
     137''Boolean''
     138#!td align=center
     139`true`
     140
     141=== Barneselektor ===
     142Hvis en node er en del av en vei, sier vi at den er et ''barn'' av denne veien. På samme måte, hvis en node, en vei eller en relasjon er et medlem av en relasjon, sier vi at den er et ''barn'' av denne relasjonen.
     143
     144I MapCSS kan du bruke en '''barneselektor''' som kun samsvarer hvis både foreldre- og barneobjektet samsvarer.
     145
     146Eksempel:
     147#!mapcss
     148/*
     149 * samsvarer kun med en vei som er et barn av en relasjon med tagger
     150 * type=route og route=foot
     151 */
     152relation[type=route][route=foot] > way {...}
     153
     154Merk:
     155* Zoom-selektor og lag-identifikator er kun relevant for delen til høyre for >-tegnet.
     156* Funksjonene ''prop()'' og ''is_prop_set()'' støttes kun på høyre side av >-tegnet.
     157* Funksjonene ''parent_tag'' og ''parent_tags'' (se nedenfor) kan brukes for å få tilgang til tagger fra foreldreobjekt(er).
     158* For kompatibilitet med MapCSS 0.2-standarden støttes også `relation[type=route][route=foot] way {/*...*/}`, uten større-enn-tegnet `>`. Imidlertid kan ingen [#LinkSelector Lenkeselektor] spesifiseres i dette tilfellet.
     159
     160=== Foreldreselektor ===
     161I tillegg til barneselektorer støtter JOSM begrepet en '''foreldreselektor'''. Merk at foreldreselektorer er en JOSM-spesifikk utvidelse av MapCSS som ikke finnes i andre MapCSS-implementeringer.
     162
     163I likhet med en barneselektor samsvarer en foreldreselektor kun hvis både foreldre- og barneobjektet samsvarer. I motsetning til barneselektoren brukes tegnet <.
     164
     165I motsetning til barneselektoren vil foreldreobjektet bli "valgt". Med andre ord gjelder egenskapene i `{{{...}}}`-deklarasjonsblokken for objektet på høyre side av "<"-tegnet.
     166
     167Eksempel:
     168#!mapcss
     169/*
     170 * samsvarer med en vei som har minst én node merket som traffic_calming=*
     171 */
     172node[traffic_calming] < way[highway] {...}
     173
     174=== Tilstandselektor ===
     175Selektorer kan inkludere et sett med tilstander. Hvis noen av disse tilstandene evalueres til false, samsvarer ikke selektoren, og stilregelen brukes ikke.
     176
     177En '''attributttilstand''' angir en tilstand for en tagg på et OSM-objekt.
     178
     179[=#condition_selector_operators]
     180#!th valign=top
     181'''Operator'''
     182#!th valign=top
     183'''Beskrivelse'''
     184#!th valign=top
     185'''Eksempel'''
     186|-------------------------------------------------------------------------------
     187#!td align=center valign=top
     188`=`
     189#!td align=left valign=top
     190Eksakt samsvar med verdien.
     191#!td align=left valign=top
     192#!mapcss
     193way[highway=residential]                    /* er case-sensitiv, dvs. samsvarer IKKE f.eks. highway=Residential eller Highway=residential   */
     194node[name="Mitt navn"]                        /* bruk anførselstegn hvis nøkkel eller verdi inkluderer mellomrom                                               */
     195node["name:pl"="Królewiec"]                 /* bruk anførselstegn hvis nøkkel eller verdi inkluderer spesialtegn som kolon eller unicode-tegn */
     196|-------------------------------------------------------------------------------
     197#!td align=center valign=top
     198`!=`
     199#!td align=left valign=top
     200Verdi er ikke lik
     201#!td align=left valign=top
     202#!mapcss
     203way[highway!=residential]
     204node[name!="Mitt navn"]
     205node["name:pl"!="Królewiec"]
     206|-------------------------------------------------------------------------------
     207#!td align=center valign=top
     208`<`, `>`, `<=`, `>=`
     209#!td align=left valign=top
     210Sammenligning for numeriske verdier.
     211#!td align=left valign=top
     212#!mapcss
     213node[population >= 50000]                   /* befolkning større enn eller lik 50000 */
     214node[ele = 3000]                            /* høyde med nøyaktig 3000 meter        */
     215|-------------------------------------------------------------------------------
     216#!td align=center valign=top
     217`^=`
     218#!td align=left valign=top
     219Prefiks-samsvar
     220#!td align=left valign=top
     221#!mapcss
     222node[name ^= "mittprefiks"]                    /* verdi starter med 'mittprefiks' */
     223|-------------------------------------------------------------------------------
     224#!td align=center valign=top
     225`$=`
     226#!td align=left valign=top
     227Suffiks-samsvar
     228#!td align=left valign=top
     229#!mapcss
     230node[name $= "mittsuffiks"]                   /* verdi slutter med 'mittsuffiks' */
     231|-----------------------------------------------
     232#!td align=center valign=top
     233`*=`
     234#!td align=left valign=top
     235Delstreng-samsvar
     236#!td align=left valign=top
     237#!mapcss
     238node[name *= "min delstreng"]                 /* verdi inneholder delstrengen 'min delstreng' */
     239|-------------------------------------------------------------------------------
     240#!td align=center valign=top
     241`~=`
     242#!td align=left valign=top
     243Listemedlemskap
     244#!td align=left valign=top
     245#!mapcss
     246*[vending~=stamps]                          /* taggverdien for taggen 'vending' består av en liste med ;-separerte verdier */
     247                                            /* og en av disse verdiene er 'stamps'                                          */
     248|-------------------------------------------------------------------------------
     249#!td align=center valign=top
     250`=~`
     251#!td align=left valign=top
     252[https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/regex/Pattern.html#sum Regulært uttrykk]-samsvar
     253#!td align=left valign=top
     254#!mapcss
     255*[name=~/^Mitt_mønster.*/]                    /* verdien av taggen 'name' samsvarer med det regulære uttrykket '^Mitt_mønster.*' */
     256                                            /* Merk at regulære uttrykk må omsluttes med /.../                     */
     257Case-insensitive matching kan aktiveres via det innebygde flagguttrykket `(?i)` (se [https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/regex/Pattern.html#CASE_INSENSITIVE Pattern.CASE_INSENSITIVE]).
     258#!mapcss
     259*[name =~ /^(?i)(parkering)$/]                 /* samsvarer med parkering, Parking, PARKING, PaRkInG,...      */
     260*[name =~ /^(?U)(\p{Lower})+$/]              /* name består kun av små bokstaver i unicode */
     261|-------------------------------------------------------------------------------
     262#!td align=center valign=top
     263`!~` (siden r6455)
     264#!td align=left valign=top
     265negert [https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/regex/Pattern.html#sum Regulært uttrykk]-samsvar
     266#!td align=left valign=top
     267#!mapcss
     268*[surface!~/asfaltert|uasfaltert/]
     269|-------------------------------------------------------------------------------
     270#!td align=center valign=top
     271`∈` ([https://www.fileformat.info/info/unicode/char/2208/index.htm U+2208], siden r6609)
     272#!td align=left valign=top
     273element av
     274
     275Samsvarer når et objekt som samsvarer med høyre selektor(er) inneholder minst ett element som samsvarer med venstre selektor(er).
     276#!td align=left valign=top
     277#!mapcss
     278*[amenity=parking] ∈ area[amenity=parking] {
     279  throwWarning: tr("{0} innenfor {1}", "amenity=parking", "amenity=parking");
     280}
     281Finner områder med `amenity=parking` som inneholder minst én node eller område med `amenity=parking`. Siden r15064 produserer denne regelen én advarsel for hvert element på venstre side når det er flere treff.
     282|-------------------------------------------------------------------------------
     283#!td align=center valign=top
     284`⊆` ([https://www.fileformat.info/info/unicode/char/2286/index.htm U+2286], siden r15102)
     285#!td align=left valign=top
     286Delmengde av eller lik
     287
     288Synonym for `∈`.
     289#!td align=left valign=top
     290#!mapcss
     291*[amenity=parking] ⊆ area[amenity=parking] {
     292  throwWarning: tr("{0} innenfor {1}", "amenity=parking", "amenity=parking");
     293}
     294|-------------------------------------------------------------------------------
     295#!td align=center valign=top
     296`⊇` ([https://www.fileformat.info/info/unicode/char/2287/index.htm U+2287], siden r15102)
     297#!td align=left valign=top
     298Overmengde av eller lik
     299
     300Samsvarer når et objekt som samsvarer med høyre selektor(er) er inneholdt i ett eller flere elementer som samsvarer med venstre selektor(er).
     301#!td align=left valign=top
     302#!mapcss
     303area[amenity=parking] ⊇ *[amenity=parking]
     304Finner noder eller områder med `amenity=parking` innenfor områder med `amenity=parking`. Tregere enn `⊆` og derfor ikke nyttig i valideringsregler, men kan være nyttig i søkedialogen.
     305|-------------------------------------------------------------------------------
     306#!td align=center valign=top
     307`⊈` ([https://www.fileformat.info/info/unicode/char/2288/index.htm U+2288], siden r15102)
     308#!td align=left valign=top
     309Verken en delmengde av eller lik
     310
     311Samsvarer når et objekt som samsvarer med høyre selektor(er) ikke inneholder noe element som samsvarer med venstre selektor(er).
     312#!td align=left valign=top
     313#!mapcss
     314*[highway=street_lamp] ⊈ area:closed2[amenity=parking][lit=yes]
     315Finner områder med `amenity=parking` som har `lit=yes` men ikke inneholder en lampe. Legg alltid til `:closed2` for å unngå falske positive, da ulukkede områder aldri inneholder noe.
     316|-------------------------------------------------------------------------------
     317#!td align=center valign=top
     318`⊉` ([https://www.fileformat.info/info/unicode/char/2289/index.htm U+2289], siden r15102)
     319#!td align=left valign=top
     320Verken en overmengde av eller lik
     321
     322Samsvarer når et objekt som samsvarer med høyre selektor(er) ikke er inneholdt i noe område som samsvarer med venstre selektor(er).
     323#!td align=left valign=top
     324#!mapcss
     325area[landuse=residential] ⊉ *[building]
     326Finner bygninger som ikke er innenfor noe område med `landuse=residential`. Merk at denne operatoren sannsynligvis vil produsere falske positive når du har `landuse=residential`-områder som ikke samsvarer med `:closed2`.
     327|-------------------------------------------------------------------------------
     328#!td align=center valign=top
     329`⧉` ([https://www.fileformat.info/info/unicode/char/29c9/index.htm U+29C9], siden r6613)
     330#!td align=left valign=top
     331kryssing
     332#!td align=left valign=top
     333#!mapcss
     334area:closed:areaStyle ⧉ area:closed:areaStyle {
     335  throwOther: tr("Overlappende områder");
     336}
     337Tar hensyn til `layer`-taggen hvis den er satt (siden r12986)
     338
     339=== Territoriumselektor === #Territoriumselektor
     340Du kan teste om et objekt ligger innenfor eller utenfor et spesifikt territorium. JOSM har en intern database for dette. [source:/trunk/resources/data/boundaries.osm Territoriumsfilen] kan lastes ned og åpnes i JOSM for å undersøke den [attachment:boundaries.png (skjermbildeforhåndsvisning)]. Den inneholder grenser for alle land i verden. På grunn av ytelseshensyn er grensene forenklet. De kan raffinieres for spesielle tilfeller på forespørsel. Territoriene er "tagget" med sine [https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2 ISO_3166-1_alpha-2-koder]. USA, Canada, Kina, India og Australia har tilleggsgrenser for sine underavdelinger. Se følgende eksempler på hvordan du bruker territoriumselektorene. Territoriumselektorer er mindre nyttige i malingsstiler og kan være svært ressurskrevende der. Imidlertid er de mye mer nyttige for [wikitr:/Help/Validator/MapCSSTagChecker mapcss-baserte valideringsregler]. For å velge territorier med venstre- eller høyrekjøring, finnes det en enklere måte, se [#PseudoClasses Pseudo-klasser]. Se #10387 for hovedimplementeringen av denne funksjonen.
     341
     342#!mapcss
     343                                      /* samsvarer med enhver node som ligger …                             */
     344node[inside("NO")]                    /* … innenfor Norge (inkluderer oversjøiske territorier) */
     345node[inside("EU")]                    /* … innenfor Den europeiske union                         */
     346node[inside("NO,SE")]                 /* … innenfor Norge __ELLER__ innenfor Sverige            */
     347node[inside("US-CA")]                 /* … innenfor den amerikanske delstaten California         */
     348
     349node[outside("NO")]                   /* … utenfor Norge                                    */
     350node[outside("NO,SE")]                /* … utenfor Norge __OG__ utenfor Sverige         */
     351node[inside("US")][outside("US-CA")]  /* … innenfor USA unntatt delstaten California           */
     352
     353=== Lenkeselektor ===#Lenkeselektor
     354I en barneselektor kan du formulere betingelser på lenken mellom et foreldre- og et barneobjekt.
     355
     356Hvis forelderen er en relasjon, kan du formulere betingelser for ''rollen'' et medlemsobjekt har i denne relasjonen.
     357#!mapcss
     358relation[type=route] >[role="link"] way {  /* samsvarer med enhver vei som er et medlem av en ruterelasjon med rollen 'link' */
     359   color: blue;
     360}
     361
     362#!th valign=top
     363'''Operator'''
     364#!th valign=top
     365'''Beskrivelse'''
     366#!th valign=top
     367'''Eksempel'''
     368|-------------------------------------------------------------------------------
     369#!td align=center  valign=top
     370`=`
     371#!td align=left  valign=top   
     372Eksakt samsvar med rollenavnet. Navnet `role` er obligatorisk i denne sammenhengen.
     373#!td align=left  valign=top   
     374#!mapcss
     375relation >[role=residential] way           
     376relation >[role="Mitt navn"]   way           /* bruk anførselstegn hvis rollen inkluderer mellomrom eller andre spesialtegn */
     377
     378Operatorene `!=`, `^=`, `$=`, `*=` og `~=` støttes også. Se [#condition_selector_operators tilstandsselektoroperatorer] for detaljer.
     379
     380Noder i veier og medlemmer i relasjoner er ordnet. Du kan formulere betingelser på posisjonen til en node i en vei eller et medlemsobjekt i en relasjon. Positive tall teller fra første til siste element, negative tall (siden r8236) teller fra siste til første element.
     381
     382#!mapcss
     383relation[type=route] >[index=1] way {  /* samsvarer med den første veien som er et medlem av ruterelasjonen  */
     384   color: blue;
     385}
     386
     387way >[index=-1] node {  /* samsvarer med den siste noden i en vei  */
     388   symbol-stroke-color: green;
     389}
     390
     391way!:closed >[index=1] node!:connection,
     392way!:closed >[index=-1] node!:connection {  /* samsvarer med alle enkeltvei-sluttnoder */
     393   symbol-stroke-color: green;
     394}
     395
     396=== Zoomselektor ===
     397Du kan dekorere en typeselektor med en '''zoomselektor'''. Zoomselektoren begrenser rekkevidden av zoomnivåer der den respektive MapCSS-regelen brukes.
     398||= '''Eksempel 1''' =||= '''Eksempel 2''' =||= '''Eksempel 3''' =||= '''Beskrivelse''' =||
     399|| `way|z12 {...}` || `node|z12 {...}` || `node|z12[...] {...}` || Ved zoomnivå 12 ||
     400|| `way|z13-15 {...}` || `node|z13-15 {...}` || `way|z13-15[...] {...}` ||Fra 13 til 15 ||
     401|| `way|z16- {...}` || `node|z16- {...}` || `node|z16-[...] {...}` || 16 og høyere ||
     402|| `way|z-12 {...}` || `node|z-12 {...}` || `node|z-12[...] {...}` || 12 og lavere ||
     403|| `way {...}` || `node{...}` || `way[...] {...}` || hvilket som helst zoomnivå ||
     404
     405Den presise definisjonen av skalarekkene for hvert zoomnivå kan endres i fremtiden. Som tommelfingerregel kan du forvente å være omtrent på zoomnivå ''n'' når bilder viser slippymap-brikker av nivå ''n''.
     406
     407=== Pseudo-klasser ===#Pseudo-klasser
     408Se [/doc/org/openstreetmap/josm/gui/mappaint/mapcss/ConditionFactory.PseudoClasses.html Javadoc] for den oppdaterte listen over pseudo-klasser som støttes av JOSMs MapCSS-implementering.
     409
     410||= '''Klasse''' =||= '''Beskrivelse''' =||
     411|| `:closed` || sant for veier der den første noden er den samme som den siste, og for enhver (fullstendig nedlastet) multipolygon-relasjon ||
     412|| `:closed2` || samme som ovenfor, men denne ignorerer om en multipolygon er fullstendig nedlastet (siden r9099) ||
     413|| `:completely_downloaded` || sant for en relasjon hvis medlemmer alle er nedlastet (siden r9099) ||
     414|| `:new` || alle nye objekter ||
     415|| `:connection` || sant for noder som brukes av mer enn én vei ||
     416|| `:unconnected` || sant for noder som ikke brukes av noen vei (siden r6687) ||
     417|| `:tagged` || Hva JOSM anser som tagget, dvs. et objekt med en taggnøkkel annet enn følgende: `source*`, `source_ref`, `note`, `comment`, `converted_by`, `created_by`, `watch*`, `fixme`, `FIXME`, `description`, `attribution` (versjon r4008; i denne listen er `*` en glob)
     418|| `:area-style` || sant hvis objektet har en områdestil ||
     419|| `:righthandtraffic` || sant hvis det er høyrekjøring på gjeldende sted (siden r7193); se [wikitr:/left-right-hand-traffic venstre-høyre-kjøring] for skjermbilde av områder ||
     420|| `:clockwise` || Om veien er lukket og orientert med klokken, eller ikke-lukket og den 1., 2. og siste noden er i klokkeretning. ||
     421|| `:anticlockwise` || Om veien er lukket og orientert mot klokken, eller ikke-lukket og den 1., 2. og siste noden er i motklokkeretning. ||
     422|| `:unclosed_multipolygon` || sant for fullstendig lastede ulukkede multipolygon-relasjoner (siden r8252) ||
     423|| `:open_end` || for å velge sluttnoder av ulukkede multipolygon-relasjoner med `relation:unclosed_multipolygon >:open_end node` (siden r8252) ||
     424|| `:in-downloaded-area` || sant hvis et objekt er innenfor kildeområdet og usant hvis det er i det skraverte området (siden r8495). ||
     425|| `:selected` || sant hvis et objekt er valgt i editoren (siden r9341). ||
     426|| `:highlighted` || sant hvis objektet er fremhevet ||
     427|| `:modified` || endrede og nye objekter (siden r7193). ||
     428
     429Du kan også negere pseudo-klasser. F.eks. `!:new` for alle gamle objekter.
     430
     431=== Lag-identifikator ===
     432Lag kan brukes til å lage mer enn én stil for et enkelt objekt. Her er et eksempel:
     433#!mapcss
     434way[highway=secondary] {
     435    width: 3;
     436    color: yellow;
     437}
     438
     439way[highway=tertiary] {
     440    width: 2;
     441    color: orange;
     442}
     443
     444way[access][access!=yes]::non_public_access_layer {
     445    width: +2;
     446    color:red;
     447    dashes: 2;
     448    object-z-index:-1.0;
     449}
     450
     451way[bridge]::bridge_layer {
     452    width: +3;
     453    color:#000080;
     454    opacity:0.5;
     455    object-z-index:1.0;
     456}
     457Dette tegner alle sekundære og tertiære veier i henholdsvis gul og oransje. Enhver vei med en access-tagg annet enn yes vil få en ekstra linjestil under ('''`object-z-index:-1.0;`''') hovedlinjen. Hvis den delen av veien tilfeldigvis er en bro, vil den også få en halvtransparent blå overlegg. Den relative breddeverdien ('''`width: +2;`''') refererer til bredden på standardlaget (2 eller 3 i dette tilfellet).
     458
     459Navnet på laget kan være hvilken som helst identifikator.
     460
     461Hvis du utelater laget i selektoren, er dette det samme som å bruke `::default`.
     462
     463Et eksempel til:
     464#!mapcss
     465node[amenity=parking] {
     466    icon-image: "presets/vehicle/parking/parking.svg";    /* viser JOSMs interne parkeringsikon på standardlaget */
     467    text: ref;                                            /* viser verdien av nøkkelen ref som tekst på standardlaget */
     468}
     469
     470node[amenity=parking][fee=yes]::fee {
     471    icon-image: "presets/money/exchange.svg";             /* viser JOSMs interne utvekslingsikon på fee-laget */
     472    icon-offset-x: 14;                                    /* flytt ikonet */
     473    icon-offset-y: -12;                                   /* flytt ikonet */
     474    text: charge;                                         /* viser verdien av nøkkelen charge som tekst på fee-laget */
     475    text-offset-x: 16;                                    /* flytt teksten */
     476    text-offset-y: 17;                                    /* flytt teksten */
     477}
     478Resultatet ser slik ut:
     479
     480[[Image(multiple_icons_and_texts.png,link=)]]
     481
     482I tillegg kan du bruke *-laget til å overstyre og initialisere alle lag. \\
     483Det overstyrer alle eksisterende underdeler, så
     484
     485#!mapcss
     486way::A { a; }
     487way::B { b; }
     488way::* { c; }  /* overstyrer alle eksisterende underdeler */
     489er ekvivalent med
     490#!mapcss
     491way::A { a; }
     492way::B { b; }
     493way::A { c; } /* overstyrer a med c alle eksisterende underdeler */
     494way::B { c; } /* overstyrer b med c alle eksisterende underdeler */
     495Og det initialiserer nye underdeler. Med andre ord:
     496#!mapcss
     497way::* { a; }
     498way::A { b; }
     499er ekvivalent med
     500#!mapcss
     501way::A {}
     502way::* { a; }
     503way::A { b; }
     504som igjen er det samme som
     505#!mapcss
     506way::A { a; }
     507way::A { b; }
     508eller
     509#!mapcss
     510way::A { a; b; }
     511
     512=== Gruppering ===
     513Regler med felles deklarationsblokk kan grupperes sammen:
     514#!mapcss
     515area[landuse=forest] { color: green; width: 2; }
     516area[natural=wood] { color: green; width: 2; }
     517er det samme som
     518#!mapcss
     519area[landuse=forest], area[natural=wood] { color: green; width: 2; }
     520
     521=== Klasser ===
     522Du kan tilordne klasser til samsvarende elementer og definere andre selektorer ved hjelp av disse klassene:
     523
     524#!mapcss
     525/* tilordne klasser /
     526selector {
     527set klasse;
     528/ eller tilsvarende */
     529set .klasse;
     530}
     531
     532/* samsvarende klasser /
     533way.klasse, node[foo=bar].klasse {
     534/ ... */
     535}
     536
     537Eksempel på tilordning/samsvar med en klasse kalt path:
     538#!mapcss
     539way[highway=footway] { set path; color: #FF6644; width: 2; }
     540way[highway=path] { set path; color: brown; width: 2; }
     541way.path { text:auto; text-color: green; text-position: line; text-offset: 5; }
     542Du kan også negere klasser. F.eks. way!.path for alle veier som ikke er en del av klassen .path.
     543
     544=== Klasser og lag sammen ===
     545Hvis du ønsker å bruke lag og klasser sammen, merk at du må identifisere klassen via is_prop_set.
     546
     547#!mapcss
     548node[railway=signal] { set sgnl; }
     549
     550/* det fungerer ikke */
     551node.sgnl::layer_signal_icon { z-index: 1000; ... icon: icon/signal-icon.svg; ... }
     552node.sgnl::layer_signal_text { z-index: 1010; ... text: concat("Navn på signal: ", tag("ref")); ..... )
     553
     554/* bruk i stedet: is_prop_set("...", "default") */
     555node[is_prop_set("sgnl", "default")]::layer_signal_icon { z-index: 1000; ... icon: icon/signal-icon.svg; ... }
     556node[is_prop_set("sgnl", "default")]::layer_signal_text { z-index: 1010; ... text: concat("Navn på signal: ", tag("ref")); ..... )
     557
     558
     559=== @supports Betinget Prosessering  ===
     560@supports-regler brukes til å hoppe over en del av stilen under visse betingelser. Typisk vil du bruke en funksjon som er introdusert i en nyere versjon av JOSM, men ha en fallback-stil for brukere av eldre JOSM-klienter. Denne funksjonen kom med r8087. Eksempel:
     561#!mapcss
     562@supports (min-josm-version: 9789) {
     563    way[highway] {
     564        width: 4;
     565        color: orange;
     566    }
     567    /* fancy nye ting */
     568    /* ... */
     569}
     570
     571@supports (max-josm-version: 9788) {
     572    way[highway] {
     573        width: 4;
     574        color: blue;
     575    }
     576    /* fallback-modus, bruker enklere funksjoner */
     577    /* ... */
     578}
     579
     580@supports (icon-offset-x) {
     581    /* kun hvis icon-offset-x-egenskapen støttes */
     582    node[amenity] {
     583        icon-offset-x: 5;
     584    }
     585}
     586
     587Syntaksen følger nøye den offisielle [https://drafts.csswg.org/css-conditional/ css-syntaksen]. Følgende betingelser støttes:
     588
     589#!th
     590'''Betingelse'''
     591#!th
     592'''Beskrivelse'''
     593|-
     594#!td
     595(''<mapcsskey>'')
     596#!td
     597Sjekk om en bestemt mapcss-nøkkel støttes, f.eks. `repeat-image` eller `icon-offset-x`.
     598|-
     599#!td
     600(min-josm-version: ''<number>'')
     601#!td
     602Inkluder kun `@supports`-delen når den nåværende versjonen av JOSM er større enn eller lik det angitte nummeret.
     603|-
     604#!td
     605(max-josm-version: ''<number>'')
     606#!td
     607Inkluder kun `@supports`-delen når den nåværende versjonen av JOSM er lavere enn eller lik det angitte nummeret.
     608|-
     609#!td
     610(user-agent: ''<string>'')
     611#!td
     612Inkluder kun `@supports`-delen når navnet på editoren / rendereren samsvarer med den gitte strengen. I JOSM er den eneste aksepterte verdien `josm`.
     613
     614Betingelser kan kombineres med `and`:
     615
     616#!mapcss
     617@supports (min-josm-version: 8087) and (max-josm-version: 8200) {
     618 /* kun for JOSM-versjoner 8087 til 8200 */
     619}
     620
     621
     622Andre logiske operatorer som or og not kan også brukes. Parenteser er nødvendige hvis du vil kombinere forskjellige logiske operatorer:
     623
     624#!mapcss
     625@supports ((min-josm-version: 8087) and (max-josm-version: 8200)) or (user-agent: myEditor) {
     626/* for JOSM-versjon 8087 til 8200 og for editoren kalt "myEditor" */
     627}
     628
     629Siden @supports-regler kun støttes i JOSM r8087 og senere, bør du også spesifisere dette som minimum JOSM-versjon i meta-selektoren:
     630
     631#!mapcss
     632meta {
     633min-josm-version: "8087"; /* Denne stilen bruker @supports-regler /
     634/ ... */
     635}
     636
     637== Stilinnstillinger ==
     638[wikitr:/Help/Dialog/MapPaint/StyleSettings Stilinnstillinger] brukes til å gi brukeren innstillinger for å tilpasse en malingsstil. Brukeren kan bruke dem i [wikitr:/Help/Dialog/MapPaint MapPaint-dialogen]. Følgende type av innstillinger er tilgjengelige:
     639
     640    boolean (siden r7450)
     641
     642    double (siden r15731, se #10435)
     643
     644    string (siden r15731, se #10435)
     645
     646    color (siden r16843, se #10435)
     647
     648=== Innstillinger av type boolean ===
     649Opprett en innstilling av type boolean:
     650#!mapcss
     651setting::highway_casing {
     652type: boolean;
     653label: tr("Tegn veikant");
     654default: true;
     655}
     656
     657Bruk en innstilling av type boolean:
     658#!mapcss
     659way[highway][setting("highway_casing")] {
     660casing-width: 2;
     661casing-color: white;
     662}
     663
     664=== Innstillinger av type double ===
     665Opprett en innstilling av type double:
     666#!mapcss
     667setting::place_font_size {
     668type: double;
     669label: tr("Sett skriftstørrelse for stedsnavn...");
     670default: 11;
     671}
     672
     673Bruk en innstilling av type double:
     674#!mapcss
     675node.place, way.place, area.place {
     676font-size: setting("place_font_size");
     677}
     678
     679=== Innstillinger av type string ===
     680Opprett en innstilling av type string:
     681#!mapcss
     682setting::textdisplay {
     683type: string;
     684label: tr("nøkkel brukt for visning");
     685default: "name"; /* eksempler på bruk: alt_name, old_name, addr:housename, ref, operator, ... */
     686}
     687
     688Bruk en innstilling av type string:
     689#!mapcss
     690way {
     691text: tag(setting("textdisplay"));
     692}
     693
     694=== Innstillinger av type color ===
     695Opprett en innstilling av type color. default-fargen kan være hvilken som helst farge som forstås under [wikitr:/Help/Styles/MapCSSImplementation#Propertyvaluesexplanations Egenskapsverdiforklaringer]:
     696#!mapcss
     697setting::colordisplay {
     698type: color;
     699label: tr("nøkkel brukt for visning");
     700default: colorDisplayCustomPref#FF00FF;
     701}
     702
     703Bruk en innstilling av type color:
     704#!mapcss
     705way {
     706color: setting("colordisplay");
     707}
     708
     709=== Gruppering av innstillinger ===
     710Lignende innstillinger kan grupperes sammen ved å definere ''innstillingsgrupper'' (siden r15289):
     711
     712#!mapcss
     713settings::my_group {
     714label: tr("min fantastiske gruppe");
     715icon: "mitt_vakre_ikon";
     716}
     717
     718Når en innstillingsgruppe er definert, kan den refereres fra alle innstillinger som tilhører den:
     719
     720#!mapcss
     721setting::hide_icons {
     722type: boolean;
     723label: tr("Skjul ikoner ved lavt zoom");
     724default: true;
     725group: "my_group";
     726}
     727
     728Innstillingsgrupper vises som undermenyer fra stilinnstillingsmenyen. Hvis minst to innstillinger tilhører en gruppe, vil en spesiell "Slå av/på alle innstillinger"-menyelement tillate rask av/på-slåing av alle innstillinger fra denne gruppen. Brukseksempel: [wikitr:/Styles/MapWithAI MapWithAI].
     729
     730== Egenskaper ==#Egenskaper
     731=== Generelle egenskaper ===
     732
     733||= '''Nøkkel''' =||= '''Beskrivelse''' =||= '''Verdiformat''' =||= '''Standardverdi''' =||
     734|| z-index || Angi rekkefølgen objektene tegnes i: Objekter med høyere z-index tegnes på toppen av objekter med lavere z-index || ''Nummer'' (kan være negativt) || 0 ||
     735|| major-z-index || Ligner på z-index, men har høyere prioritet enn z-index. Så hvis ett objekt har en høyere major-z-index enn det andre, tegnes det på toppen. Hvis major-z-index er den samme, bestemmer z-index. || ''Nummer'' (kan være negativt) || Avhenger av stylelement: område: 1, kant: 2, venstre-/høyre-kant: 2.1, linjemønster: 2.9, linje: 3, punkt: 4, standardpunkt: 4.1, linjetekst: 4.9, punkttekst: 5 ||
     736|| object-z-index || Ligner på z-index, men har lavere prioritet. Kontrollerer tegnerekkefølgen for overlappende objekter. F.eks. for to kryssende veier med tekst: Bruk z-index eller major-z-index hvis du først vil tegne de to linjene og deretter de to tekstene. Bruk object-z-index hvis en av veiene skal være helt på toppen av den andre. || ''Nummer'' (kan være negativt) || 0 ||
     737|| modifier || Bedre kontroll over om en standard linje / nodesymbol genereres av JOSM. Dette skjer når det ikke finnes en riktig stil (modifier=false) på noe lag. || false eller true || false for standardlaget og true for alle andre lag ||
     738
     739Merk at på grunn av ytelseshensyn er verdiene for de tre z-indeksene begrenset til 24-bit flyttall med maks. 5 desimaler. For øyeblikket bruker den interne malingsstilen verdier med maks. 2 sifre før og etter desimaltegnet. For å unngå problemer, bruk verdier for z-indekser mellom -99.999 og +99.999. (Se også #14485)
     740
     741=== Ikon- og symbolstiler ===
     742
     743||= '''Nøkkel''' =||= '''Beskrivelse''' =||= '''Verdiformat''' =||= '''Standardverdi''' =||
     744|| icon-image || Ikonet ved nodeposisjonen. Se også [wikitr:/Help/Styles/Images Bilder]. || ''Bilde'' || - ||
     745|| icon-opacity || Gjennomsiktighet av ikonbildet || ''Gjennomsiktighet'' || 1.0 ||
     746|| icon-width || Bredden på ikonet. Hvis bare én av egenskapene icon-width og icon-height er gitt, skal bildet skaleres proporsjonalt. Ikonet vil beholde den opprinnelige størrelsen hvis verken icon-width eller icon-height er satt. || ''Nummer'' || - ||
     747|| icon-height || Høyden på ikonet. (Se icon-width) || ''Nummer'' || - ||
     748|| icon-offset-x || Flytt ikonet horisontalt (positive verdier til høyre) (siden r8085) || ''Nummer'' || 0 ||
     749|| icon-offset-y || Flytt ikonet vertikalt (positive verdier nedover) (siden r8085) || ''Nummer'' || 0 ||
     750|| icon-rotation || Roter ikonet med eller mot klokken (negativ verdi)(siden r8260) || [rad], [rad]rad, [deg]°, [deg]deg, [grad]grad, [turn]turn ([https://developer.mozilla.org/en/docs/Web/CSS/angle definisjon]) \ eller en kardinalretning (f.eks. northeast eller sw); \ eller way for å rotere ikonet i retningen av foreldreveien. \ Se også funksjonene degree_to_radians, cardinal_to_radians. \Siden versjon 18678 er funksjonen parent_way_angle() et alternativ til way: f.eks. {{{ way > node[...]::layer_x { ... icon-rotation: parent_way_angle(); ... } }}} || - ||
     751|| icon-position || Definer posisjonen til ikonet for områder. Samme som text-position (siden r11730). || center, inside, line || center ||
     752|| symbol-shape || Vis et symbol ved nodeposisjonen || square, circle, triangle, pentagon, hexagon, heptagon, octagon, nonagon, decagon || - ||
     753|| symbol-size || Størrelsen på symbolet || ''Nummer'', kan være relativ ("+4") || 10 ||
     754|| symbol-stroke-width || omrisslinjebredde || ''Bredde'' || 1.0 hvis symbol-stroke-color er satt ||
     755|| symbol-stroke-color || linjefarge || ''Farge'' || #FFC800 hvis symbol-stroke-width er satt ||
     756|| symbol-stroke-opacity || linjegjennomsiktighet || ''Gjennomsiktighet'' || 1.0 ||
     757|| symbol-fill-color || fyllfarge for formen || ''Farge'' || blue, med mindre enten symbol-stroke-width eller symbol-stroke-color er satt ||
     758|| symbol-fill-opacity || fyllgjennomsiktighet || ''Gjennomsiktighet'' || 1.0 ||
     759|| text-..., font-... |||||| se generelle '''Tekst- og skriftstiler''' ||
     760
     761Stol ikke på standardverdiene for symbol-...-egenskaper (unntatt for opacity). De er ment for "quick & dirty"-stilark og bør settes til en eksplisitt verdi.
     762
     763=== Linjestiler ===#Linjestiler
     764||= '''Nøkkel''' =||= '''Beskrivelse''' =||= '''Verdiformat''' =||= '''Standardverdi''' =||
     765|| width || Linjebredde || ''Bredde'' || - ||
     766|| color || Linjefarge || ''Farge'' || verdi av fill-color eller\(hvis ikke satt) JOSMs standard \utaggfarge (#808080) ||
     767|| opacity || Hvor gjennomsiktig linjen er. || ''Gjennomsiktighet'' || 1.0 ||
     768|| dashes || En matrise med vekslende på/av-lengder || liste med tall, f.eks. \> 15, 5 \ \kan skrives som uttrykk: \ > list(3, 4, 5, 6) \ \eller nøkkelordet none \for å slå av strekmønster || - ||
     769|| dashes-offset || flytt strekmønsteret med en viss mengde || ''Nummer'' (>= 0) || 0 ||
     770|| dashes-background-color || Fargen som brukes mellom strekmønstrene (valgfri) || ''Farge'' || - ||
     771|| dashes-background-opacity || Gjennomsiktighet for strekmønsterbakgrunnen || ''Gjennomsiktighet'' || verdi av opacity ||
     772|| linecap || Formen på enden av linjen (se [https://www.w3.org/TR/SVG/painting.html#StrokeLinecapProperty her]) || none, round, square || none ||
     773|| linejoin || Formen på linjehjørnene || round, miter, bevel || round ||
     774|| miterlimit || Gjelder for linejoin: miter. \Setter maksimal overskytning når linjesegmenter møtes i en veldig liten vinkel || ''Nummer'' (>= 1.0) || 10.0 ||
     775|| offset || Flytt linjen til venstre eller høyre (når du ser i veiens retning). \Dette kan brukes til å tegne flere felt for én vei eller markere venstre og høyre side av en vei forskjellig. || ''Nummer'' (positiv verdi flytter linjen til venstre,\negativ til høyre) || 0 ||
     776|| text-position || sett til line, hvis tekst skal tegnes langs linjen || line, center || - ||
     777|| text-...,\font-... |||||| se generelle '''Tekst- og skriftstiler''' ||
     778|| repeat-image || gjentatt bilde langs en linje ''(siden r5801)'' || ''Bilde'' || - ||
     779|| repeat-image-width || Bredden på bildet (valgfri, se icon-width) ''(siden r5811)'' || ''Nummer'' || - ||
     780|| repeat-image-height || Høyden på bildet (valgfri) ''(siden r5811)'' || ''Nummer'' || - ||
     781|| repeat-image-align || Justering av bildet.\Topp-, bunnkant eller den (horisontale) midtlinjen av bildet vil være langs linjen ''(siden r5801)'' || top, center, bottom || center ||
     782|| repeat-image-offset || Forskyvning fra linjen ''(siden r5801)'' || ''Nummer'' || 0 ||
     783|| repeat-image-spacing || Avstand mellom gjentatte bilder ''(siden r5801)'' || ''Nummer'' || 0 ||
     784|| repeat-image-phase || Innledende avstand i begynnelsen av linjen ''(siden r5812)'' || ''Nummer'' || 0 ||
     785|| repeat-image-opacity || Gjennomsiktighet av det gjentatte bildet ''(siden r16700)'' || ''Nummer'' || 1.0 ||
     786
     787Alle disse egenskapene (unntatt for text-... og font-...) finnes også med prefikset casing-. Kanten er et uavhengig linjeelement som tegnes under den normale linjen og kan brukes til å tegne en tynn ramme rundt linjen i en annen farge.
     788||= '''Nøkkel''' =||= '''Beskrivelse''' =||= '''Verdiformat''' =||= '''Standardverdi''' =||
     789|| casing-width || Bredden på kanten på begge sider av hovedlinjen. \I JOSM < 5214: Total bredde av kanten || ''Bredde'' (reverserer til width hvis relativ bredde er spesifisert) || - ||
     790|| casing-color || Kantfarge || ''Farge'' || verdi av fill-color eller (hvis ikke satt) \JOSMs standard utaggfarge (#808080) ||
     791|| casing-opacity || Hvor gjennomsiktig kanten er. || ''Gjennomsiktighet'' || 1.0 ||
     792|| casing-... || ... || ... || ... ||
     793I likhet med casing-, finnes det også prefikset left-casing- og right-casing-. Disse tegner ekstra linjer til venstre og høyre for hovedlinjen.
     794
     795=== Områdestiler ===#Områdestiler
     796||= '''Nøkkel''' =||= '''Beskrivelse''' =||= '''Verdiformat''' =||= '''Standardverdi''' =||
     797|| `fill-color` || Fargen som brukes til å fylle området. Frem til 11700 ble alfakomponenten satt til 50 for å skape en gjennomsiktighetseffekt. || ''Farge'' ||  -  ||
     798|| `fill-image` || Bilde-mønster || ''Bilde'' ||  -  ||
     799|| `fill-extent` || Sett denne egenskapen for å kunne tegne omrisset av området. Tallet angir hvor langt inn fra kanten av området det skal fylles mot sentrum. (Hvis ikke satt, vil hele området fylles) ''(siden r9008)'' || ''Tall'' ||  -  ||
     800|| `fill-extent-threshold` || Sett denne egenskapen for å tegne hele området når en gitt prosentandel dekning er nådd. Kan være større enn 100 % siden det dekket området estimeres som **omkrets * utstrekning**. || ''Tall'' ||  -  ||
     801|| `fill-opacity` || Hvor gjennomsiktig fyllingen er; gjelder både farge og bilde || ''Gjennomsiktighet'' || 0.2 ''(siden r11700, 1.0 før det)'' \\(kan endres med `mappaint.fillalpha` og \\`mappaint.fill-image-alpha`-innstillingene)  ||
     802|| `text-position` || sett til `center` hvis teksten skal tegnes i midten av området. Sett til `inside` for å plassere teksten helt innenfor området. ''(siden r11722)'' || `line`, `center`, `inside` ||  -  ||
     803|| `text-...`, `font-...` ||||||  se generelle tekst- og skrift-egenskaper  ||
     804Påkrevde egenskaper for å lage en områdestil: `fill-color` eller `fill-image`
     805
     806=== Tekst- og skrift-egenskaper ===
     807{{{#!th valign=top
     808'''Nøkkel'''
     809}}}
     810{{{#!th valign=top
     811'''Beskrivelse'''
     812}}}
     813{{{#!th valign=top
     814'''Verdiformat'''
     815}}}
     816{{{#!th valign=top
     817'''Standardverdi'''
     818}}}
     819|-------------------------------------------------------------------------------
     820{{{#!td align=left  valign=top
     821`text` 
     822}}}
     823{{{#!td align=left  valign=top
     824Hvordan finne etikettteksten.\\Ingen etikett vises med mindre denne instruksjonen er til stede.
     825}}}
     826{{{#!td align=left  valign=top
     827`auto`
     828  Hent teksten automatisk. Standard navnetagger er: "`name:`"+''<SPRÅK>'', \\"`name`", "`int_name`", "`ref`", "`operator`", "`brand`" og "`addr:housenumber`".
     829
     830  Konfigurer en liste med taggnavn i innstillingen "`mappaint.nameOrder`" for å \\ endre denne listen. (Etter å ha endret listen, kreves en omstart av JOSM.)
     831
     832''Streng''
     833  Angir nøkkelen til taggen hvis verdi skal brukes som tekst.
     834
     835''Uttrykk''
     836  Du kan skrive inn et uttrykk for å beregne teksten som skal vises. Eksempler:
     837  * `eval("dette er en statisk tekst")` - viser en statisk tekst
     838  * `eval(concat(tag("første"), "-", tag("andre")))` - viser \\ de sammenkjedede taggene "første" og "andre"
     839
     840`""`
     841   For å slette en tidligere satt tekst.
     842}}}
     843{{{#!td align=center  valign=top
     844-
     845}}}
     846|-------------------------------------------------------------------------------
     847|| `text-color` || tekstfargen || ''Farge'' ||  `hvit` for linjer og noder,\\`#c0c0c0` for områder \\(JOSM "`text`" og "`areatext`"\\fargeinnstillinger) ||
     848|| `text-opacity` || hvor gjennomsiktig teksten er || ''Gjennomsiktighet'' ||  1.0  ||
     849|| `text-offset-x` || flytt teksten horisontalt, \\(ikke støttet for tekst langs linje) || ''Tall'' ||  0  ||
     850|| `text-offset-y`\\(kan også skrives som\\`text-offset`)  || flytt teksten vertikalt, positive verdier flytter teksten oppover  || ''Tall'' ||  0  ||
     851|| `text-halo-radius` || størrelsen på tekstens bakgrunnskant \\(for å gjøre teksten synlig på bakgrunn \\med en lignende farge) || ''Tall'' ||  -  ||
     852|| `text-halo-color` || fargen på tekstens halo || ''Farge'' ||  komplementær til tekstfargen  ||
     853|| `text-halo-opacity` || gjennomsiktighet for tekstens halo || ''Gjennomsiktighet'' ||  1.0  ||
     854|| `text-anchor-horizontal` || horisontal plassering av tekstetikett || `venstre`, `sentrer`, `høyre` ||  `høyre`  ||
     855|| `text-anchor-vertical` || vertikal plassering av tekstetikett || `over`, `topp`, `sentrer`, `bunn`, `under` ||  `bunn`  ||
     856|| `text-rotation` || Roter teksten med eller mot klokken (negativ verdi)\\(siden r16253) || `[rad]`, `[rad]rad`, `[grader]°`, `[grader]grader`, `[grad]grad`, `[sving]sving` \\([https://developer.mozilla.org/en/docs/Web/CSS/angle definisjon]) eller en himmelretning (f.eks. `nordøst` eller `sørvest`); \\ eller `way` for å rotere teksten i retning av foreldreveien. \\Se også funksjonene `degree_to_radians`, `cardinal_to_radians`. \\Siden versjon 18678 er funksjonen parent_way_angle() et alternativ til way: f.eks. {{{ way > node[...]::layer_x { ... text-rotation: parent_way_angle(); ... } }}} \\(Merk at retningen angir hvor den øvre kanten av teksten peker.\\Det betyr at med standard retning nord flyter teksten mot øst\\(med et språk som leses fra venstre til høyre). \\Så hvis du vil at den skal flyte mot f.eks. sør, må du sette øst.) ||  -  ||
     857|| `text-position` |||||| se [#Områdestiler Områdestiler] og [#Linjestiler Linjestiler] ||
     858|| `font-family` || skrifttype || ''Streng'' ||  "Droid Sans" \\(JOSM-innstilling "`mappaint.font`")  ||
     859|| `font-size` || skriftstørrelse || ''Tall'' ||  8 \\(JOSM-innstilling "`mappaint.fontsize`")  ||
     860|| `font-weight` || fet eller ikke || `fet`, `normal` ||  `normal`  ||
     861|| `font-style` || kursiv eller ikke || `kursiv`, `normal` ||  `normal`  ||
     862
     863=== Brukerdefinerte egenskaper ===
     864* I [wikitr:/Styles Mappaint-stiler] kan du definere egendefinerte egenskaper, f.eks.: `crc: CRC32_checksum(tag(name))/429496.7296;`
     865* I [wikitr:/Rules Valideringsregler] må de prefikses med en `-`, f.eks.: `-osmoseItemClassLevel: "1210/1/1";`
     866
     867=== Forklaring av egenskapsverdier === #Egenskapverdierforklaring
     868'' '''Bredde''' ''
     869 - 14.0 (ethvert positivt tall)
     870 - `standard` (bruk JOSMs standard linjebredde, som er 2, men kan konfigureres)
     871 - `tynnest` (tegner linjen så tynn som mulig)
     872 - +3 (med pluss-tegn foran) legger til verdien til bredden på standardlaget. Dette gjelder bare for stiler som ikke er på standardlaget, f.eks. fremhevinger. En annen måte å skrive dette på er `prop("width","default")+3`. For `casing-width` refererer dette til `width`-verdien på samme lag.
     873
     874'' '''Bilde''' ''
     875 Se [wikitr:/Help/Styles/Images].
     876
     877'' '''Farge''' ''
     878 * navngitt farge som finnes i [https://www.w3.org/TR/css3-color/#svg-color denne] listen
     879 * html-stil: '''`#RRGGBB`''', '''`#RGB`''', '''`#RRGGBBAA`'''
     880 * '''`rgb(/*r*/, /*g*/, /*b*/)`''' - rgb-verdi med argumenter fra 0.0 til 1.0
     881 * '''`rgba(/*r*/, /*g*/, /*b*/, /*alpha*/)`''' - rgb-verdi med alfa
     882 * '''`hsb_color(/*fargetoning*/, /*metning*/, /*lyshet*/)`''' - farge fra HSB-fargerommet
     883 * hvis fargen er prefikset med et navn og #, f.eks. `color: highway_track#6e541c;`, vil den vises i [wikitr:/Help/Preferences/ColorPreference Fargeinnstillinger] og sluttbrukere kan justere fargen der selv
     884
     885'' '''Gjennomsiktighet''' ''
     886 * fra 0.0 (gjennomsiktig) til 1.0 (ugjennomsiktig)
     887
     888'' '''Streng''' ''
     889 * hvilken som helst tegnsekvens, i anførselstegn, f.eks. `"images/fill.png"`. Hvis strengen er en identifikator, er anførselstegn valgfrie. (Anførselstegn og backslash kan escapes.)
     890
     891'' '''Tall''' ''
     892 * heltall eller flyttall (i enkel form f.eks. 0.3). Generelt kan være negativt, men de fleste egenskaper støtter ikke negative tall
     893 * har en spesiell betydning hvis du setter et "+"-tegn foran (relativ bredde)
     894
     895
     896== Eval-uttrykk ==#Evaluttrykk
     897Se [/doc/org/openstreetmap/josm/gui/mappaint/mapcss/Functions.html#method_summary Javadoc for Functions] for en oppdatert liste over funksjoner som støttes av JOSMs MapCSS-implementering.
     898
     899 +, -, *, /::
     900  aritmetiske operasjoner
     901 ||, &&, !::
     902  logiske operasjoner
     903 <, >, <=, >=, ==, !=::
     904  sammenligningsoperatorer
     905 asin, atan, atan2, ceil, cos, cosh, exp, floor, log, max, min, mod (siden r17759), random, round, signum, sin, sinh, sqrt, tan, tanh::
     906  den vanlige betydningen, [https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Math.html detaljer]
     907 cond(b, fst, snd)::
     908 b ? fst : snd::
     909  hvis ('''b''') så '''fst''' ellers '''snd'''
     910 list(a, b, ...)::
     911  lag en liste med verdier, f.eks. for `dashes`-egenskapen
     912 get(lst, n)::
     913  hent det ''n''te elementet i listen ''lst'' (telling starter på 0) [''siden r5699'']
     914 split(sep, str)::
     915  deler strengen ''str'' ved forekomster av separatorstrengen ''sep'', returnerer en liste [''siden r5699'']
     916 prop(''p_name'')::
     917  verdien av egenskapen ''p_name'' på gjeldende lag, f.eks. prop(`"width"`)
     918 prop(''p_name'', ''layer_name'')::
     919  egenskap fra laget ''layer_name''
     920 is_prop_set(''p_name'')::
     921  sant, hvis egenskapen ''p_name'' er satt for gjeldende lag
     922 is_prop_set(''p_name'', ''layer_name'')::
     923  sant, hvis egenskapen ''p_name'' er satt for laget ''layer_name''
     924 tag(''key_name'')::
     925  hent verdien av nøkkelen ''key_name'' fra det aktuelle objektet
     926 parent_tag(''key_name'')::
     927  hent verdien av nøkkelen ''key_name'' fra objektets forelder
     928 parent_tags(''key_name'')::
     929  returnerer alle foreldrenes verdier for nøkkelen ''key_name'' som en liste sortert etter naturlig rekkefølge [''siden r8775'']
     930 has_tag_key(''key_name'')::
     931  sant, hvis objektet har en tagg med den gitte nøkkelen
     932 rgb(''r'', ''g'', ''b'')::
     933  lag en fargeverdi (argumenter fra 0.0 til 1.0)
     934 hsb_color(''h'', ''s'', ''b'')::
     935  lag en farge fra fargetoning, metning og lyshet (argumenter fra 0.0 til 1.0) [''siden r6899'']
     936 red(''clr''), green(''clr''), blue(''clr'')::
     937  hent verdien av fargekanalene i rgb-fargemodellen
     938 alpha(''clr'')::
     939  hent alfaverdien til den gitte fargen [''siden r6749'']
     940 length(''str'')::
     941  lengden av en streng
     942 count(''lst'')::
     943  lengden av en liste, dvs. teller dens elementer [''siden r7162'']
     944 length(''lst'')::
     945  lengden av en liste ([''siden r5699''] – foreldet ''siden r7162''
     946 any(obj1, obj2, ...)::
     947  returnerer det første objektet som ikke er null (tidligere coalesce, [''siden r7164''])
     948 concat(''str1'', ''str2'', ...)::
     949  sett sammen strengene til én
     950 join(''sep'', ''str1'', ''str2'', ...)::
     951  sett sammen strenger, med ''sep'' som separator [''siden r6737'']
     952 join_list(''sep'', ''list_name'')::
     953   setter sammen elementene i listen ''list_name'' til én streng separert med separator ''sep'' [''siden r8775'']
     954 upper(''str'')::
     955   konverterer streng til store bokstaver [''siden r11756'']
     956 lower(''str'')::
     957   konverterer streng til små bokstaver [''siden r11756'']
     958 title(''str'')::
     959   konverterer streng til tittelcase [''siden r17613''] (`"jeg har DET BRA"` → `"Jeg Har Det Bra"`)
     960 trim(''str'')::
     961   fjerner ledende og avsluttende mellomrom fra streng [''siden r11756'']
     962 trim_list(''list_name'')::
     963   fjerner ledende og avsluttende mellomrom fra en liste med strenger, vil fjerne oppføringer som er tomme etterpå [''siden r15591'']
     964 JOSM_search("...")::
     965  sant, hvis JOSM-søk gjelder for objektet
     966 tr(str, arg0, arg1, ...)::
     967  oversett fra engelsk til gjeldende språk (kun for strenger i JOSM-brukergrensesnittet) [''siden r6506'']
     968 regexp_test(regexp, string)::
     969  test om ''string'' samsvarer med mønsteret ''regexp'' [''siden r5699'']
     970 regexp_test(regexp, string, flags)::
     971  test om ''string'' samsvarer med mønsteret ''regexp''; flags er en streng som kan inneholde "i" (case insensitive), "m" (multilinje) og "s" ("dot all") [''siden r5699'']
     972 regexp_match(regexp, string)::
     973  Prøver å matche ''string'' mot mønsteret ''regexp''. Returnerer en liste med fangstgrupper ved suksess. Det første elementet (indeks 0) er den fullstendige matchen (dvs. ''string''). Ytterligere elementer tilsvarer de bracketed delene av det regulære uttrykket. [''siden r5701'']
     974 regexp_match(regexp, string, flags)::
     975  Prøver å matche ''string'' mot mønsteret ''regexp''. Returnerer en liste med fangstgrupper ved suksess. Det første elementet (indeks 0) er den fullstendige matchen (dvs. ''string''). Ytterligere elementer tilsvarer de bracketed delene av det regulære uttrykket. Flags er en streng som kan inneholde "i" (case insensitive), "m" (multilinje) og "s" ("dot all") [''siden r5701'']
     976 substring(str, idx)::
     977  returner delstrengen av ''str'', starter ved indeks ''idx'' (0-indeksert) [''siden r6534'']
     978 substring(str, start, end)::
     979  returner delstrengen av ''str'', starter ved indeks ''start'' (inkludert) opp til ''end'' (ekskludert) (0-indeksert) [''siden r6534''], en negativ sluttindeks teller fra slutten av strengen [''siden r19259'']
     980 replace(string, old, new)::
     981   Erstatter alle forekomster av delstrengen ''old'' i strengen ''string'' med teksten ''new''
     982 osm_id()::
     983  returnerer OSM-id'en til det aktuelle objektet [''siden r5699'']
     984 osm_user_name()::
     985  returnerer OSM-brukernavnet til den som sist rørte ved det aktuelle objektet [''siden r15246'']
     986 osm_user_id()::
     987  returnerer OSM-bruker-id'en til den som sist rørte ved det aktuelle objektet [''siden r15246'']
     988 osm_version()::
     989  returnerer OSM-versjonsnummeret til det aktuelle objektet [''siden r15246'']
     990 osm_changeset_id()::
     991  returnerer id'en til endringssettet objektet sist ble lastet opp til [''siden r15246'']
     992 osm_timestamp()::
     993  returnerer tidspunktet for siste endring av det aktuelle objektet, som tidsstempel [''siden r15246'']
     994 parent_osm_id()::
     995  returnerer OSM-id'en til objektets forelder (samsvarer med barneselektor) [''siden r13094'']
     996 URL_encode(str)::
     997  [https://en.wikipedia.org/wiki/Percent-encoding prosentkoder] en streng. Kan være nyttig for data-URLer [''siden r6805'']
     998 URL_decode(str)::
     999  [https://en.wikipedia.org/wiki/Percent-encoding prosentdekoder] en streng. [''siden r11756'']
     1000 XML_encode(str)::
     1001  escape spesialtegn i xml. F.eks. `<` blir `&lt;`, andre spesialtegn: `>`, `"`, `'`, `&`, `\n`, `\t` og `\r` [''siden r6809'']
     1002 CRC32_checksum(''str'')::
     1003  beregn CRC32-sjekksummen til en streng (resultatet er et heltall fra 0 til 2^32^-1) [''siden r6908'']
     1004 siunit_length(''str'')::
     1005   konverter lengdeenheter til meter (feiltolerant, ignorerer mellomrom) [''siden r19089'']
     1006 is_right_hand_traffic()::
     1007  Sjekk om det er venstre- eller høyrehandstrafikk på gjeldende sted. [''siden r7193'']
     1008 number_of_tags()::
     1009  returnerer antall tagger for det aktuelle OSM-objektet [''siden r7237'']
     1010 print(o)::
     1011  skriver ut en strengrepresentasjon av `o` til kommandolinjen (for feilsøking) [''siden r7237'']
     1012 println(o)::
     1013  skriver ut en strengrepresentasjon av `o` til kommandolinjen, etterfulgt av en ny linje (for feilsøking) [''siden r7237'']
     1014 JOSM_pref(''key'', ''default'')::
     1015  Hent verdi fra JOSMs avanserte innstillinger. På denne måten kan du tilby visse alternativer til brukeren og gjøre stilen tilpassbar. Fungerer med strenger, tall, farger og boolske verdier. \\[Denne funksjonen finnes siden versjon r3856, men med noen begrensninger. `JOSM_pref` returnerer alltid en streng, men i versjon r7237 og tidligere fungerte ikke automatisk konvertering av streng til boolsk verdi og farge. Du kan bruke følgende løsninger for boolske verdier og farge i versjon r7237 og tidligere: `cond(JOSM_pref("myprefkey", "true")="true", "X", "O")` og `html2color(JOSM_pref("mycolor", "#FF345611"))`. Disse eksplisitte konverteringene bør ikke lenger være nødvendige i versjon r7238 og senere. Automatisk konvertering til et tall fungerer i alle versjoner. Videre, i versjon r16590, kan den brukes til å sette fargeegenskaper. Så `* { set_color: JOSM_pref("pref", #000000); }` vil nå lage en fargeegenskap.]
     1016 setting()::
     1017  for å bruke en [wikitr:/Help/Styles/MapCSSImplementation#Stilinnstillinger stilinnstilling] [''siden r7450'']
     1018 degree_to_radians()::
     1019  returnerer en i grader gitt retning i radianer [''siden r8260'']
     1020 cardinal_to_radians()::
     1021  returnerer en himmelretning i radianer [''siden r8260'']
     1022 waylength()::
     1023  returnerer lengden på veien i meter [''siden r8253'']
     1024 areasize()::
     1025  returnerer arealet til en lukket vei i kvadratmeter [''siden r8253'']
     1026 at(lat,lon)::
     1027  returnerer sant hvis objektets sentroid ligger på de gitte ''lat''/''lon''-koordinatene, f.eks. for å sjekke om noder er på "null-øya" `node[at(0.0,0.0)]` [''siden r12514'']
     1028 is_similar(''str1'', ''str2'')::
     1029  returnerer sant hvis de to strengene er like, men ikke identiske, dvs. har en Levenshtein-avstand på 1 eller 2. Eksempel: `way[highway][name][is_similar(tag(name), "Hovedgaten")]` sjekker for gater med en mulig skrivefeil i navnet (f.eks. Hovedgata). [''siden r14371'']
     1030 gpx_distance()::
     1031  returnerer den laveste avstanden mellom OSM-objektet og et GPX-punkt [''siden r14802'']
     1032 count_roles()::
     1033  returnerer antall primitiver i en relasjon med de angitte rollene [''siden r15275'']
     1034 sort(''str1'', ''str2'', ''str3'', ''...'')::
     1035  sorterer en array med strenger [''siden r15279'']
     1036 sort_list(''list_name'')::
     1037  sorterer en liste med strenger [''siden r15279'']
     1038 tag_regex(''regex'')::
     1039  returnerer en liste som inneholder verdiene til nøkler som samsvarer med regex [''siden r15317'']
     1040 to_boolean(''str'')::
     1041  returnerer strengargumentet som en boolsk verdi [''siden r16110'']
     1042 to_byte(''str'')::
     1043  returnerer strengargumentet som en byte [''siden r16110'']
     1044 to_short(''str'')::
     1045  returnerer strengargumentet som en short [''siden r16110'']
     1046 to_int(''str'')::
     1047  returnerer strengargumentet som en int [''siden r16110'']
     1048 to_long(''str'')::
     1049  returnerer strengargumentet som en long [''siden r16110'']
     1050 to_float(''str'')::
     1051  returnerer strengargumentet som en float [''siden r16110'']
     1052 to_double(''str'')::
     1053  returnerer strengargumentet som en double [''siden r16110'']
     1054 uniq(''str1'', ''str2'', ''str3'', ''...'')::
     1055  returnerer en liste med strenger som kun har unike verdier fra en array med strenger [''siden r15323'']
     1056 uniq_list(''list_name'')::
     1057  returnerer en liste med strenger som kun har unike verdier fra en liste med strenger [''siden r15323'']
     1058 parent_way_angle()::
     1059  returnerer vinkelen til foreldreveien som en double i radianer [''siden r18664''] (se: text-rotation eller icon-rotation)
     1060 convert_primitive_to_string(''PrimitiveId'')::
     1061  returnerer primitiv-id'en som en streng [''siden r18829'']
     1062 convert_primitives_to_string(''PrimitiveId'', ''PrimitiveId'', ''...'')::
     1063  returnerer en liste med primitiv-id'er konvertert til strenger [''siden r18829'']
     1064 parent_osm_primitives(''valgfri nøkkel'', ''valgfri verdi'')::
     1065  returnerer en liste med primitiv-id'er som samsvarer med nøkkelen og verdien (hvis til stede) [''siden r18829'']
     1066
     1067=== Eksempler ===
     1068* sirkelsymbol for husnummer med størrelse avhengig av antall sifre
     1069{{{
     1070#!mapcss
     1071node[addr:housenumber] {
     1072    symbol-shape: circle;
     1073    symbol-size: eval((min(length(tag("addr:housenumber")), 3) * 5) + 3);
     1074    symbol-fill-color: #B0E0E6;
     1075
     1076    text: "addr:housenumber";
     1077    text-anchor-horizontal: center;
     1078    text-anchor-vertical: center;
     1079    text-offset-x: -1;
     1080    text-offset-y: -1; }
     1081   
     1082node[addr:housenumber]::hn_casing {
     1083    z-index: -100;
     1084    symbol-shape: circle;
     1085    symbol-size: +2;
     1086    symbol-fill-color: blue;
     1087}
     1088}}}
     1089* inverter farger
     1090{{{
     1091#!mapcss
     1092*::* {
     1093    color: eval(rgb(1 - red(prop(color)), 1 - green(prop(color)), 1 - blue(prop(color))));
     1094    fill-color: eval(rgb(1 - red(prop(fill-color)), 1 - green(prop(fill-color)), 1 - blue(prop(fill-color))));
     1095}
     1096}}}
     1097* tilfeldige ting
     1098{{{
     1099#!mapcss
     1100way {
     1101    width: eval(random() * 20);
     1102    color: eval(rgb(random(), random(), random()));
     1103}
     1104}}}
     1105
     1106* regexp-matcheksempel: endre "nameXXXsubname" til "name::subname"
     1107{{{
     1108#!mapcss
     1109*[name=~/.+XXX.+/]
     1110{
     1111    _match: regexp_match("(.+?)XXX(.+)", tag("name"));
     1112    text: concat(get(prop("_match"),1), "::", get(prop("_match"),2));
     1113}
     1114}}}
     1115
     1116* mal bygninger i forskjellige farger i henhold til gate i adressetaggene
     1117{{{
     1118#!mapcss
     1119area[building][addr:street] {
     1120    fill-color: hsb_color(CRC32_checksum(tag("addr:street"))/4294967296.0, 0.9, 0.7);
     1121    fill-opacity: 0.8;
     1122}
     1123}}}
     1124
     1125* kapping på innsiden av område
     1126{{{
     1127#!mapcss
     1128area[building]:clockwise {
     1129    right-casing-width: 10;
     1130}
     1131area[building]:anticlockwise {
     1132    left-casing-width: 10;
     1133}
     1134/* eller */
     1135area[building][is_clockwise()] {
     1136    right-casing-width: 10;
     1137}
     1138area[building][is_anticlockwise()] {
     1139    left-casing-width: 10;
     1140}
     1141}}}
     1142
     1143* case-insensitive selektor. Dette samsvarer med: `Name=Main Street`, men også `naMe=MAIN STREET`
     1144{{{
     1145#!mapcss
     1146way[/(?i)^name$/ =~ /(?i)^Main Street$/] {
     1147}
     1148}}}
     1149
     1150
     1151== Kompatibilitetsnotater ==
     1152=== MapCSS 0.2 ===
     1153==== Grammatikk ====
     1154 * `way[oneway=yes]` har ingen magi, du kan bruke `way[oneway?]` i stedet
     1155 * ingen `@import`
     1156 * JOSM krever ikke at `eval(...)` skal pakkes rundt uttrykk, men for kompatibilitet med andre MapCSS-implementeringer bør du skrive det ut.
     1157
     1158==== Egenskaper ====
     1159For øyeblikket støtter JOSM ''ikke'' følgende egenskaper:
     1160 linje: ::
     1161  `image`
     1162 etikett: ::
     1163  `font-variant, text-decoration, text-transform, max-width`
     1164 skjold: ::
     1165  ikke støttet
     1166
     1167=== Halcyon (Potlatch 2) ===
     1168 * Tekstetikett plasseres i midten av ikonet. For kompatibilitet med Halcyon, legg til
     1169{{{
     1170#!mapcss
     1171node { text-anchor-vertical: center; text-anchor-horizontal: center; }
     1172}}}
     1173 i begynnelsen av stilarket ditt.
     1174 * standard z-index i Halcyon er 5, men det er 0 i JOSM
     1175 * '''`image: circle;`''' tilsvarer '''`symbol-shape: circle;`'''
     1176
     1177=== Kothic ===
     1178 * Kothic har støtte for eval, som sannsynligvis avviker fra JOSMs eval.
     1179 * Kothic forstår enheter, mens JOSM alltid beregner i piksler.
     1180 * Ekstruderingsfunksjonene er ikke tilgjengelige i JOSM.
     1181
     1182=== Ceyx ===
     1183 * ser ut til å ha `[tunnel=1]` i stedet for `[tunnel=yes]` (Halcyon) eller `[tunnel?]` (JOSM)
     1184
     1185
     1186== Media queries (foreldet) ==
     1187
     1188{{{#!td style="background-color: #faa"
     1189Merk: media queries er foreldet. Du bør bruke @supports-regler i stedet (se ovenfor).
     1190}}}
     1191Media queries brukes til å hoppe over en del av stilen under visse forhold. Typisk vil du bruke en funksjon som er introdusert i en nyere versjon av JOSM, men ha en fallback-stil for brukere av eldre JOSM-klienter. Denne funksjonen kom med r6970. Eksempel:
     1192{{{
     1193#!mapcss
     1194@media (min-josm-version: 9789) {
     1195    way[highway] {
     1196        width: 4;
     1197        color: orange;
     1198    }
     1199    /* fancy new stuff */
     1200    /* ... */
     1201}
     1202
     1203@media (max-josm-version: 9788) {
     1204    way[highway] {
     1205        width: 4;
     1206        color: blue;
     1207    }
     1208    /* fall back mode, using more simple features */
     1209    /* ... */
     1210}
     1211}}}
     1212
     1213Syntaksen matcher nøye den offisielle [https://www.w3.org/TR/css3-mediaqueries/#syntax css-syntaksen]. Følgende forhold støttes:
     1214
     1215{{{#!th
     1216'''Medietilstand'''
     1217}}}
     1218{{{#!th
     1219'''Beskrivelse'''
     1220}}}
     1221|-
     1222{{{#!td
     1223(min-josm-version: ''<tall>'')
     1224}}}
     1225{{{#!td
     1226Inkluder bare `@media`-delen når den gjeldende JOSM-versjonen er større enn eller lik det angitte tallet.
     1227}}}
     1228|-
     1229{{{#!td
     1230(max-josm-version: ''<tall>'')
     1231}}}
     1232{{{#!td
     1233Inkluder bare `@media`-delen når den gjeldende JOSM-versjonen er mindre enn eller lik det angitte tallet.
     1234}}}
     1235|-
     1236{{{#!td
     1237(user-agent: ''<streng>'')
     1238}}}
     1239{{{#!td
     1240Inkluder bare `@media`-delen når navnet på editoren / rendereren samsvarer med den gitte strengen. I JOSM er den eneste aksepterte verdien `josm`.
     1241}}}
     1242
     1243Forhold kan kombineres med `and`:
     1244
     1245{{{
     1246#!mapcss
     1247@media (min-josm-version: 6970) and (max-josm-version: 7014) {
     1248 /* bare for JOSM-versjoner 6970 til 7014 */
     1249}
     1250}}}
     1251
     1252Flere kombinerte forhold kan lenkes sammen med et komma (logisk ''eller''):
     1253
     1254{{{
     1255#!mapcss
     1256@media (min-josm-version: 6970) and (max-josm-version: 7014), (user-agent: myEditor) {
     1257  /* for JOSM-versjon 6970 til 7014 og for editoren kalt "myEditor" */
     1258}
     1259}}}
     1260
     1261Siden media queries bare støttes i JOSM 6970 og senere, bør du også spesifisere dette som minimum JOSM-versjon i meta-selektoren:
     1262
     1263{{{
     1264#!mapcss
     1265meta {
     1266    min-josm-version: "6970"; /* Denne stilen bruker media queries */
     1267    /* ... */
     1268}
     1269}}}
     1270
     1271
     1272{{{#!comment
     1273Det finnes også `not`-nøkkelordet (se den lenkerte css-dokumentasjonen for detaljer).
     1274Dette er implementert, men sannsynligvis ikke veldig nyttig. Føl deg fri til å legge til dokumentasjon.
     1275}}}