11521 sujets

JavaScript, DOM et API Web HTML5

Bonjour à tous,

j'aimerai trouver une solution pour appliquer un style à des caracteres placée avant une virgule.

Je m'explique :
- j'ai un prix obtenu par un simple calcul Jquery. Disons : 2,56€
- j'aimerai que les caractères avant la virgule aient un style precis. Exemple : 2,56€

en CSS, j'avais une piste en utilisant le ::first-letter. Mais deux problemes se posent :
- le first-letter intègre la virgule...
- dans l'hypothese d'un prix à 12,99€... cela donnera 12,99€

J'aimerai donc trouver le moyen de selectionner les caractere avant la virgule...
pour ensuite faire un simple addClass, et lui appliquer un style
une idée ?
Modifié par Albator59162 (13 Jul 2018 - 11:51)
EDIT : Ouh je n'avais pas vu. Tu tires ton prix d'un script JS, donc le traitement est plus simple à faire en JS.

Quand tu obtiens ton prix, tu peux spliter de la sorte : let values = price.split(","); où price est ta chaine. Ensuite tu obtiens un tableau "values" où values[0] sera en théorie l'entier, et values[1] les centimes. Tu peux donc segmenter ton prix en recréant une chaine de la sorte :

let values = price.split(",");
let price_render = '<p class="price"><span class="entier">'+values[0]+'</span>,<span class="centime">'+values[1]+'</span>€</p>';


Ancien message :

Salut,

Malheureusement ce que tu demandes n'est pas réalisable en CSS. Le langage n'est pas capable de "spliter" lui-même les mots, de façon à déterminer un style avant et après un certain caractères.

Ça, c'est le rôle de la sortie, donc du PHP ou du JS j'imagine, selon ce que tu utilises.
Il faut soit durant le traitement séparer au préalable les euros et les centimes, soit directement en depuis la sortie, par exemple sur la chaine "12,45" en splitant en 12 et 45 (donc avec le séparateur ",").

Ainsi pour le rendu, tu pourras séparer 12 et 45 dans des balises différentes :
<p class="prix"><span class="entier">12</span>,<span class="centime">45</span>€</p>
(ou les chiffres sont bien entendu les variables tirées précédemment).
De là avec les classes, tu fais ton CSS.

Si tu veux utiliser le DOM plutôt que PHP, tu peux faire le même traitement en JS, et en ciblant comme sélecteur tout les éléments qui contiennent chaque prix, et le rendu se fera après le chargement de la page donc y a rien à toucher coté back-end si jamais t'es pas à l'aise... Mais bon, c'est pas propre.
Modifié par Nolan (13 Jul 2018 - 13:12)
Meilleure solution
Merci pour la réponse !

je confirme ce n'est pas tres clean... mais c'est en mode "prototype".
Suis DA, et souhaite "pousser au max" mon proto pour le vendre aupres du client. Laissant ensuite le soin au vrai dev' de le faire proprement Smiley cligne
Pourquoi splitter ?
let price_render = '<p class="price"><span class="entier">' + price.replace(',', '</span><span class="centimes">') + '</span>€</p>';