I recently ran into a situation where some of my styles were broken in Internet Explorer 8. What makes this different from all the other times my styles broke in IE8 was that, as far as I could tell, it was correct.
Consider the following code:
%highlighted {
background-color: #ff0;
color: #333;
}
.keyword.is-active {
@extend %highlighted;
padding: 10px;
text-transform: uppercase;
}
No problem, right?
Then why isn't it working? I wasn't sure, until I looked at the compiled CSS and saw something like this:
.some-list:nth-child(2n),
.is-highlighted,
.keyword.is-active {
background-color: #ff0;
color: #333;
}
.keyword.is-active {
padding: 10px;
text-transform: uppercase;
}
Since IE8 doesn't support the css selector nth-child
, it ignores the entire rule. Without looking at the final output, there's no way of knowing if this will happen ahead of time.
So what can you do? Well, it's probably best (and easiest) to avoid @extend
all together and just use mixins. But if you really want to use @extend
, then at least be extremely careful and really understand how SASS @extend
works.
Comments
Post a Comment