not first child function sass extend mixins

function - first - Sass se extiende con pseudo selectores



not child css (2)

Cuando desee extender una pseudo clase o pseudo elemento, solo desea extender el selector principal (es decir, todo lo que viene antes de los dos puntos).

%foo:before { color: red; } .bar { @extend %foo; }

Genera:

.bar:before { color: red; }

Entonces, para su instancia, lo que quiere hacer es esto:

.icon-ab-logo, { font: 100%/1 ''icomoon''; // use the shorthand speak: none; text-transform: none; -webkit-font-smoothing: antialiased; } %foo:before, .icon-ab-logo:before { //i want to reuse this. content: "/e000"; } @mixin icon( $icon ){ font: 100%/1 ''icomoon''; // use the shorthand speak: none; text-transform: none; -webkit-font-smoothing: antialiased; @extend #{$icon}; } .bar { @include icon(''%foo''); }

Tenga en cuenta que su mixin genera muchos estilos, por lo que no es realmente adecuado para una reutilización extensa. Tendría mucho más sentido extender eso también.

Estoy usando una brújula para administrar algunos archivos sass en mac osx. Tengo estos archivos:

sass/ screen.scss partials folder/ ... _fonts.scss _functions.scss ...

En fuentes tengo esta regla que me gustaría volver a usar @extend.

//fonts.scss .icon-ab-logo, { font-family: ''icomoon''; speak: none; font-style: normal; font-weight: normal; font-variant: normal; text-transform: none; line-height: 1; -webkit-font-smoothing: antialiased; } .icon-ab-logo:before { //i want to reuse this. content: "/e000"; }

En funciones tengo esta screen.scss:

.logo { position: absolute; top: 0; bottom: 0px; z-index: 500; width: 9.5em; background: $logo; @include transition(all 0.2s); &:after{ @include icon( ".icon-ab-logo" ); } }

Finalmente en functions.scss llamo esto:

@mixin icon( $icon ){ font-family: ''icomoon''; speak: none; font-style: normal; font-weight: normal; font-variant: normal; text-transform: none; line-height: 1; -webkit-font-smoothing: antialiased; @extend #{$icon}:before; //<- this is the problem, no errors just isn''t parsed. }

¿Hay alguna manera de hacer referencia a .icon-ab-logo: antes de usar un mixin? ¿Soluciones provisionales? Gracias por leer.


Parece que SASS no funciona tan bien con los pseudo elementos en extends.

Solucione el problema de esta manera:

%before-icon color: red .foo /* Some styles here */ &:before @extend %before-icon

Resultado:

.foo:before { color: red; } .foo { /* Some styles here */ }

Además, parece que estás complicando las cosas. Encontrará que su código es difícil de comprender y mantener.

PD Debes mantener mixins en _mixins.scss .