css - SCSS extend a nested selector and override the nested rulesets -
ok have placeholder nested selector:
%block { .title { font-size:12px; } }
i want extend , add .title
class:
.superblock { @extend %block; .title { font-weight:bold; } }
the answer want this:
.superblock .title { font-size: 12px; font-weight: bold; }
however, answer this:
.superblock .title { font-size: 12px; } .superblock .title { font-weight: bold; }
am doing wrong or how works? clarify want merge it. if add directly inside .superblock
, add .superblock2
extends %block merge without problems.
sass has no functionality "merging" duplicate selectors. you'll need find utility after css has been compiled.
the @extend
directive isn't way use classes in place of mixins (similar less style mixin calls). why @extend
works way becomes clear when you're extending normal classes instead of extend classes:
.block { font-size:12px; } .foo { @extend .block; font-weight: bold; }
output:
.block, .foo { font-size: 12px; } .foo { font-weight: bold; }
using extend class suppresses emission of original class name.
now you've seen why @extend
works way does, do still want @extend
offers? if answer no, need use mixin:
@mixin block { // styles .title { font-size: 12px; @content; } } .superblock { @include block { font-weight: bold; } }
output:
.superblock .title { font-size: 12px; font-weight: bold; }
Comments
Post a Comment