Mi solución crea una variable CSS que expresa el alto del contenedor relativo a la ventana gráfica, en unidades "vh", esta variable puede usarse con la función "calc" de CSS3 para calcular la altura de la fuente como un porcentaje del altura del contenedor.
el tamaño del contenedor se mide cada vez que la ventana (ventana) se cambia el tamaño
<html>
<head>
<style>
.container {
width:100%;
/*
any rules you like to set the dimensions of the container
*/
top:40px;
height:30vh;
border:1px solid red;
white-space:nowrap;
}
</style>
<script>
function setCSSVariableAccordingToElementHeightRelativeToViewPort(elementClassName, cssVariableName, immutableElement)
{
var element
/*
the "immutableElement" parameter is
true when the container is never recreated,
false if its generated dynamicaly
*/
if(immutableElement === true) {
element = document.querySelector("." + elementClassName)
}
var onResize = function() {
if(immutableElement !== true) {
element = document.querySelector("." + elementClassName)
}
if(element != undefined) {
var elementHeight = element.offsetHeight
var elementVH = (elementHeight/window.innerHeight) * 100
element.style.setProperty(cssVariableName, elementVH + "vh")
}
}
onResize()
window.onresize = onResize
}
</script>
</head>
<body>
<div class="container">
<span style="font-size:calc(var(--container-vh) * 0.25)">25%</span>
<span style="font-size:calc(var(--container-vh) * 0.50)">50%</span>
<span style="font-size:calc(var(--container-vh) * 1.00)">100%</span>
</div>
</body>
<script>
setCSSVariableAccordingToElementHeightRelativeToViewPort("container", "--container-vh", true)
</script>
</html>
JSFiddle
ohh, eso es lindo. verificando lo que hace para el rendimiento. – circusdei
me queda bien, gracias por el enlace. ahora en la imagen de fondo:/ – circusdei