Coucou !
Si je peux me permettre, utiliser un calc et des var pour faire 100px - 2px c'est aussi un peu overkill... Généralement on utilise le calc pour des opérations complexes dont on a pas la solution et ou le résultat varie et a besoin d’être recalculer runtime comme calc(100% - 2px).
Parce-que sinon on fait ça :
.nav-search{
padding-left: 100px;
}
.nav-search:focus{
padding-left: 98px;
}
ET y'a pas plus performant hahaha. Et si tu veux des variables tu peux en créer 2.
Pour le coté Js qui marche pas (oui c'est overkill++ mais faut bien comprend pk ça marche pas), il y a plusieurs trucs qui coincent.
Déjà le .style.paddingLeft ne peux accéder qu'au style défini dans le html comme ça par exemple :
<input class="nav-search" style="padding-left:100px" type="text"/>
Et non pas à ton code CSS externalisé. Pour chopper le CSS tu peux passer par :
window.getComputedStyle(test).getPropertyValue('padding-left')
En vrai tu vas chopper le style une fois appliqué, pas vraiment la valeur du CSS.
Ensuite si tu affiches ce que style.paddingLeft ou getPropertyValue te renvoi tu verras que c'est un string avec px dedans : '100px'. Et oui la valeur c'est pas un nombre donc pas possible de faire une opération dessus... Partant de là, j'imagine tu peux le parser pour enlever "px" et transformer le '10' en 10 pour faire une opération dessus et le remettre en rajoutant +'px'...
bref... la grosse galère !
Bonne journée à vous deux !