2014-06-09 2 views
0

En fin de compte j'essaie d'accomplir les styles suivants avec MOINS.Extension Bootstrap 3 LESS .btn-groupe ne fonctionne pas

<div class="filter btn-group"> 
    <button class="btn btn-default" type="button" data-filter="*">show all</button> 
    <button class="btn btn-default" type="button" data-filter=".cd">CD</button> 
    <button class="btn btn-default" type="button" data-filter=".vinyl">Vinyl</button>  
</div> 

je le code HTML suivant

<div class="filter"> 
    <button type="button" data-filter="*">show all</button> 
    <button type="button" data-filter=".cd">CD</button> 
    <button type="button" data-filter=".vinyl">Vinyl</button> 
</div> 

Et je cela dans un fichier moins avec les importations de Bootstrap 3

.filter { 
    .btn-group; 
    button { 
     .btn; 
     .btn-default; 
    } 
} 

Lors de l'ajout .btn et .btn par défaut à la le bouton fonctionne très bien. Mais ajouter .btn-group à l'encapsuleur ".filter" ne fonctionne pas. Je ne peux pas comprendre ce que je fais mal. Si j'ajoute manuellement la classe .btn-group au

class="filter btn-group"
Cela fonctionne.

+0

avez-vous vu le css généré? à quoi cela ressemble-t-il? –

+0

Il manque des CSS par exemple .btn-group> .btn: premier-enfant: non (: dernier-enfant): non (.dropdown-toggle) { border-bottom-right-radius: 0; border-top-right-radius: 0 } ' – julzmon

+0

Eh bien, en bref, ce n'est pas censé fonctionner comme vous l'imaginez probablement. Notez que '.btn-group',' .btn' et '.btn-default' ne sont que des classes CSS simples qui ne sont pas destinées à être utilisées en tant que mixins (même si Less vous permet de le faire).Vous obtenez une copie des propriétés de ces classes CSS particulières au sein de vos propres classes mais vous * ne possédez pas * les propriétés de * autres * classes Bootstrap contenant les sélecteurs '.btn-group',' .btn' etc. Les styles de classe '.btn-group> .btn' de Bootstrap sont définis par eux-mêmes et ni' .btn' pas '.btn-group' ne copient ces styles dans votre classe' .filter button'. –

Répondre

2

ÉDITÉE

Bien que je ne pouvais pas penser à une façon d'accomplir pleinement ce que vous vouliez, avec un peu d'aide et d'inspiration de @ sept phases-max, j'ai pu adapter ce point essentiel pour obtenir votre résultat désiré. Pour obtenir une image de son fonctionnement, les étapes sont: Premièrement, traitez le sélecteur de boutons comme .btn.btn-default. Ensuite, trouvez toutes les instances du sélecteur .btn-group et remplacez-le par .filter. Ensuite, enfin, trouvez toutes les instances de .btn dans le .filter et remplacez-les par un bouton.

Vous pouvez accomplir ceci avec extend (disponible dans Less v1.4.0 +). Voici un exemple simple du fichier moins:

@import "bootstrap.less"; 
button { 
    .btn-default(); 
    &:extend(.btn, .btn.btn-default all); 
} 
.filter:extend(.btn-group all) {} 
.filter > button:extend(.btn-group > .btn all) {} 
.filter button + button:extend(.btn-group .btn + .btn all) {} 

Vous devez vous assurer que tout Extend est placé après vos autres importations, car l'étendue tous les actes comme (non destructive) recherche & remplacer. Ainsi, la première extension ci-dessus, par exemple, trouve toutes les instances de .btn dans n'importe quel sélecteur de règles et fait une copie du sélecteur, en remplaçant .btn par le bouton.

La sortie résultante permet ce qui suit pour être de style comme un BTN-groupe:

<div class="filter"> 
    <button type="button">BUTTON ONLY</button> 
    <button type="button">BUTTON ONLY</button> 
    <button type="button">BUTTON ONLY</button> 
</div> 

CAVEATS

  1. Comme indiqué dans plusieurs commentaires par sept phases-max, c'est va ajouter un peu de poids supplémentaire à votre production parce que c'est une recherche non destructive et remplacer. Il ajoute environ 9 Ko à la sortie non-compressée/non compressée.
  2. Vous ne pouvez pas utiliser ce type d'extension pour les cases à cocher ou les boutons radio avec l'attribut data-toggle="buttons" comme bouton BUTTON DATA-API inside.js recherche spécifiquement la classe .btn par rapport à la recherche d'un élément de bouton.
+0

Merci pour votre commentaire mais cela ne fonctionne toujours pas à moins que j'ai l'emballage d'une classe de .btn-groupe et donne le bouton .btn classe. Il se rapproche mais ne les regroupe toujours pas à moins de leur donner ces noms de classe. – julzmon

+0

Désolé, cela n'a pas fonctionné pour vous. Si vous n'avez reçu aucun message d'erreur lors de la compilation et que vous avez ajouté le bouton après vos autres importations, je ne peux pas imaginer pourquoi cela ne fonctionne pas. Fonctionne parfaitement pour moi. :-( – jme11

+0

Si je ne me trompe pas la seule façon de le faire est quelque chose comme [ceci] (https://gist.github.com/seven-phases-max/3bc77e5fcf8886ee0e3f#file-24113419-less) mais il –