Définir dynamiquement une variable dans MOINS de CSS

Je suis en train de créer un mixin qui définit de manière dynamique des variables en MOINS de CSS, en leur assignant un nom composé.

Simplifié de cas d'utilisation (pas le vrai):

.define(@var){
    @foo{var}: 0;
}

Alors qu'on pourrait appeler le mixin en tant que tel:

.define('Bar'){
    @fooBar: 0;
}

Puisque ce genre de chaîne d'interpolation est possible en utilisant les sélecteurs de noms, je me demandais si ce serait la même possible pour les noms de variables; jusqu'à présent, je n'ai pas eu de chance avec les différentes syntaxes j'ai essayé (autres que ceux ci-dessus, j'ai essayé de s'échapper, citant, à l'aide de la ~ préfixe et ainsi de suite).

Modifier

J'ai juste essayé une chose de plus, et je sens que je pourrais être proche; mais je suis en train de vivre une bizarrerie de la MOINS de de la syntaxe. Si j'écris ceci:

.define(@var){
    #namespace {
         @foo: @var;
    }
}

Et ensuite l'appeler de la sorte:

.define(0)

Je peux alors utiliser @foo dans l'habitude des espaces de de la mode:

.test {
     #namespace;
     property: @foo; /* returns 0 */
}

Cependant, la même chose ne s'applique pas dans le cas d'une chaîne-interpolées sélecteur:

.define(@var, @ns){
    #@{ns} {
         @foo: @var;
    }
}

.define(0, namespace);

.test {
     #namespace;
     property: @foo;
}

Le code ci-dessus me donne l'erreur suivante:

Erreur de nom: #espace de noms n'est pas défini

Cependant, la chaîne d'interpolation a été un succès et valide. Comme une question de fait, si je retire le .test partie et modifier le ci-dessus à la sortie d'une propriété de test, je peux voir que le CSS est analysée correctement. Je veux dire:

.define(@var, @ns){
    #@{ns} {
         @foo: @var;
         prop: @foo;
    }
}

.define(0, namespace);

Sorties le code CSS suivant:

#namespace {
    prop: 0;
}

OriginalL'auteur Sunyatasattva | 2013-08-04