Why can't SASS compile pseudo_expr like `&::not(:first-child)`?
13,435
Actually, Sass is right: that is indeed invalid CSS. :not()
is a pseudo-class, not a pseudo-element, so it should only have one colon:
&:not(:first-child) {
padding-left: 14px;
border-left: 1px solid #e1e1e1;
}
Comments
-
Hanfei Sun almost 2 years
I got the following snippet by css2sass (Convert to SCSS)
.floating-label-form-group { position: relative; margin-bottom: 0; padding-bottom: .5em; border-bottom: 1px solid #e1e1e1; input, textarea { z-index: 1; position: relative; padding-right: 0; padding-left: 0; border: 0; border-radius: 0; font-size: 1.5em; background: 0 0; box-shadow: none!important; resize: none; } label { display: block; z-index: 0; position: relative; top: 2em; margin: 0; font-size: .85em; line-height: 1.764705882em; vertical-align: middle; vertical-align: baseline; opacity: 0; -webkit-transition: top .5s ease,opacity .5s ease; -moz-transition: top .5s ease,opacity .5s ease; -ms-transition: top .5s ease,opacity .5s ease; transition: top .5s ease,opacity .5s ease; } &::not(:first-child) { padding-left: 14px; border-left: 1px solid #e1e1e1; }
When I compile it using SASS 3.4.9, it complains:
Error: Invalid CSS after "&::not(": expected pseudo_expr, was ":first-child)"
The expected CSS code should look like this:
.floating-label-form-group::not(:first-child){ padding-left:14px;border-left:1px solid #e1e1e1}
However, it seems that SASS doesn't know how to compile
&::not(
into CSS. Does anyone have ideas about how to fix this?