26

If I have a div with a few child elements and it's being css transform scaled. I've got one child element which I don't want to scale

#parent{
    -webkit-transform: scale(.5);
}
 
span:last-child{
    -webkit-transform: Something to ignore the parent scale;
}
<div id="parent">
    <span>Child 1</span>
    <span>Child 2</span>
    <span>Child 3 (Don't Scale Me)</span>
</div>

Can this be done with css only? Without changing the html or using js.

Weafs.py
  • 22,199
  • 8
  • 51
  • 75
Matt Coady
  • 2,834
  • 5
  • 35
  • 58

3 Answers3

14

Unfortunately this is not possible.

You roughly have two other options though:

  1. Scale all the other elements, excluding the one you don't want to scale (but this won't scale the container).
  2. Scale the container and re-scale the element you don't want to scale (but this will probably make it look blurry).

Examples:

// Example 1.
span:not(:last-child) {
    display: inline-block; /* You can't scale inline elements */
    transform: scale(2);
}

// Example 2.
#parent{
    transform: scale(.5);
}

span:last-child{
    transform: scale(2);
}
Reinier Kaper
  • 1,052
  • 1
  • 8
  • 17
4

I'm afraid you need to use a more detailed selector, like this #parent > span:not(:last-child). Example.

sgromskiy
  • 291
  • 1
  • 4
1

I found hack for Chrome to solve problem with blurred.

#parent { transform: scale(5);}
#child  { transform: scale(0.2)  translate3d( 0, 0, 0);}
Aikon Mogwai
  • 4,463
  • 2
  • 15
  • 24