Please is possible to set scss for element inside --rounded ? I do not wanna use .box__something, but I need to modify children that is depend on parent modifier
<div class="box">
<div class="box__something">Hello</div>
</div>
<div class="box box--rounded">
<div class="box__something">Hi</div>
</div>
.box {
&__something {
background: blue;
}
&--rounded {
background: green;
.box__something { // <<< Is some better selector?
background: pink;
}
}
}
Sass doesn't have any great built-in solutions to solve your issue, this is a problem that has been explored many times. You can however acheive the result you are after in a slightly un-elegant manner by using the
&
helper to join the classes that you wish to join. I have included a live example here.While this does work, you must realise that if you want to style the
.box--rounded
class directly you must have it inside it's own class as illustrated below, you cannot use it with the trailing&
class that we have placed&__something
on.I recommend you play around with my sassmeister gist and see what results you can come up with.
I hope this has solved your issue.
The modifier should be used not on the parent, and the child element
.box__something
If I understand your problem correctly, I feel your pain! As soon as you nest a nested property
&
changes to the parent.You can however cache the original class name as a variable like this:
The only problem with the method above is that you end up with a larger volume of compiled CSS. This renders to:
To reduce the size of the output you could combine
&
with the variable method like so:This renders to:
That way you can change the class name in the variable and everything gets updated, I also think it reads a bit better.