Edit: Sorry, I misunderstood that you did not know the height as soon as I started looking at the violin. I went from this image.
Ok, first explain how% works.
When determining the% size, it will essentially “fill” the container. You can see how this works in the script that you provided by dragging the middle separator into different sizes.
In this script: https://jsfiddle.net/q97jn9jp/3/
img { width: 100%; height: 100px; }
You can see that the height of the image remains 100px, or it is a natural height, as you explained. While the width is stretched to fill the width of the containers.
Similarly, if you did not specify a height, it will scale to the width that you experience in your violin.
Hope this helps.
source share