Leon Gaban Leon Gaban - 2 months ago 59
Sass (Sass) Question

last-child and last-of-type not working in SASS

How would you write this to be SASS compliant?

.fader { display: inline-block; }
.fader img:last-child {
position: absolute;
top: 0;
left: 0;
display: none;
}‚Äč


Basically I'm just replicating this example of fading in one image over another (found here.)

His JFiddle example: http://jsfiddle.net/Xm2Be/3/

However his example is straight CSS, I'm working on a project in SASS and am not sure about how to correctly translate it.

My Code



Note in my example below, the img hover isn't working correctly (both images are showing up and no rollover fadein action happens)

My CodePen:
http://codepen.io/leongaban/pen/xnjso

I tried

.try-me img:last-child & .tryme img:last-of-type


But the : throws SASS compile errors, the code below works

.try-me img last-of-type {
position: absolute;
top: 0;
left: 0;
display: none;
}


However it spits out CSS which doesn't help me:

.container .home-content .try-me img last-of-type {
position: absolute;
top: 0;
left: 0;
display: none;
}





UPDATE: Working Codepen:



http://codepen.io/leongaban/pen/xnjso

Answer

Nesting is not a requirement with Sass. Don't feel obligated to do so if there's no need to break up the selectors.

.try-me img:last-of-type {
    position: absolute;
    top: 0; 
    left: 0;
    display: none;
}

If you are applying styles to the image and then specific styles to the last-of-type, then this what it would look like when you nest it:

.try-me img {
    // styles

    &:last-of-type {
        position: absolute;
        top: 0; 
        left: 0;
        display: none;
    }
}