Est-il possible de formater des nombres avec CSS? C'est-à-dire: décimales, séparateur décimal, séparateur de milliers, etc.
Vous pouvez utiliser Number.prototype.toLocaleString()
. Il peut également formater pour d'autres formats de nombres, par exemple. latin, arabe, etc.
Le groupe de travail CSS a publié un brouillon sur Mise en forme du conten en 2008. Mais rien de nouveau pour le moment.
Bien, pour tous les nombres en Javascript j'utilise le prochain:
var a = "1222333444555666777888999";
a = a.replace(new RegExp("^(\\d{" + (a.length%3?a.length%3:0) + "})(\\d{3})", "g"), "$1 $2").replace(/(\d{3})+?/gi, "$1 ").trim();
et si vous devez utiliser un autre séparateur comme virgule, par exemple:
var sep = ",";
a = a.replace(/\s/g, sep);
ou en fonction:
function numberFormat(_number, _sep) {
_number = typeof _number != "undefined" && _number > 0 ? _number : "";
_number = _number.replace(new RegExp("^(\\d{" + (_number.length%3? _number.length%3:0) + "})(\\d{3})", "g"), "$1 $2").replace(/(\d{3})+?/gi, "$1 ").trim();
if(typeof _sep != "undefined" && _sep != " ") {
_number = _number.replace(/\s/g, _sep);
}
return _number;
}
La meilleure façon de le faire consiste probablement à définir une étendue avec une classe indiquant votre mise en forme, puis à utiliser Jquery .each pour effectuer la mise en forme sur les étendues lorsque le DOM est chargé ...
Non, vous devez utiliser javascript une fois que c'est dans le DOM ou le formater via votre langue côté serveur (PHP/Ruby/python, etc.)
Pas une réponse, mais perhpas d'intérêt. J'ai envoyé ne proposition au CSS WG il y a quelques années. Cependant, rien n'est arrivé. Si en effet, ils (et les éditeurs de navigateurs) y voient une véritable préoccupation des développeurs, peut-être que la balle pourrait commencer?
Si ça aide ...
J'utilise la fonction PHP number_format()
et le Narrow No-break Space ( 
). Il est souvent utilisé comme séparateur sans équivoque de milliers de personnes.
echo number_format(200000, 0, "", " ");
Parce que IE8 a quelques problèmes pour rendre le Narrow No-Break Space, je l'ai changé pour un SPAN
echo "<span class='number'>".number_format(200000, 0, "", "<span></span>")."</span>";
.number SPAN{
padding: 0 1px;
}
Je ne pense pas que tu peux. Vous pouvez utiliser number_format () si vous codez en PHP. Et d'autres langues de programmation ont aussi une fonction pour formater les nombres.
Vous ne pouvez pas utiliser CSS à cette fin. Je recommande d'utiliser JavaScript si c'est applicable. Jetez un coup d'œil à cela pour plus d'informations: équivalent JavaScript à printf/string.format
En outre, comme l'a mentionné Petr, vous pouvez le gérer côté serveur, mais cela dépend totalement de votre scénario.
Vous pouvez utiliser la bibliothèque de balises Jstl pour formater les pages JSP.
JSP Page
//import the jstl lib
<%@ taglib uri="http://Java.Sun.com/jstl/fmt" prefix="fmt" %>
<c:set var="balance" value="120000.2309" />
<p>Formatted Number (1): <fmt:formatNumber value="${balance}"
type="currency"/></p>
<p>Formatted Number (2): <fmt:formatNumber type="number"
maxIntegerDigits="3" value="${balance}" /></p>
<p>Formatted Number (3): <fmt:formatNumber type="number"
maxFractionDigits="3" value="${balance}" /></p>
<p>Formatted Number (4): <fmt:formatNumber type="number"
groupingUsed="false" value="${balance}" /></p>
<p>Formatted Number (5): <fmt:formatNumber type="percent"
maxIntegerDigits="3" value="${balance}" /></p>
<p>Formatted Number (6): <fmt:formatNumber type="percent"
minFractionDigits="10" value="${balance}" /></p>
<p>Formatted Number (7): <fmt:formatNumber type="percent"
maxIntegerDigits="3" value="${balance}" /></p>
<p>Formatted Number (8): <fmt:formatNumber type="number"
pattern="###.###E0" value="${balance}" /></p>
Résultat
Nombre formaté (1): 120 000,23 £
Numéro mis en forme (2): 000.231
Numéro mis en forme (3): 120 000.231
Numéro formaté (4): 120000.231
Nombre formaté (5): 023%
Nombre formaté (6): 12 000 023,0900000000%
Nombre formaté (7): 023%
Numéro formaté (8): 120E3