Come modellare una proprietà con due formati e intervalli diversi

0

Sto progettando uno schema di dati basato su JSON per descrivere l'aspetto visivo di blocchi simili agli elementi HTML. Dovrebbe sembrare familiare a qualcuno ben informato in HTML / CSS, ma è più restrittivo a causa dei vincoli dell'ambiente in cui verrà utilizzato.

Ora non sono sicuro di come modellare la "larghezza". Sono accettabili valori di pixel compresi tra 0 e infinito positivo o valori percentuali compresi tra 0 e 100, ma nessun punto, ems, rems o qualsiasi altra cosa.

Ho in mente tre alternative:

Primo: una proprietà con formati diversi

{
    "width": 300,
    "width": "300",
    "width": "300px",
    "width": "50%"
}

2 °: due proprietà esclusive mutue separate

{
    "width": 300,
    "width-relative": 50
}

Terzo: una proprietà e un flag booleano

{
    "width": 50,
    "relative-width": true
}

Tutti hanno i loro pro e contro in termini di somiglianza con HTML / CSS, facilità di convalida, concisione, coerenza, ... Ho un preferito, il mio collega ne ha uno diverso.

Quale sceglieresti e perché?

    
posta hielsnoppe 22.02.2016 - 11:50
fonte

2 risposte

2

Diciamo solo tra un anno che decidi che hai bisogno del supporto em o di qualsiasi altro tipo per la larghezza. Per compatibilità, opterei per la prima alternativa perché penso che questo cambiamento potrebbe essere difficile con uno degli altri due.

Un'altra soluzione potrebbe essere quella di definire i tipi:

{
    "width": 50, //Always a number
    "type": "absolute" //Possible values: "px", "%", "relative", ...
}

Quindi sei ancora in grado di essere retrocompatibile e la valutazione dovrebbe essere piuttosto semplice.

Anche il campo type potrebbe essere facoltativo.

    
risposta data 22.02.2016 - 11:59
fonte
-1

il primo in modo che corrisponda al css effettivo, ed è il più semplice.

    
risposta data 22.02.2016 - 13:43
fonte

Leggi altre domande sui tag