La mia soluzione crea una variabile CSS che esprime l'altezza del contenitore relativa al viewport, in unità "vh", questa variabile può quindi essere utilizzata con la funzione "calc" di CSS3 per calcolare l'altezza del carattere come percentuale del altezza del contenitore.
le dimensioni del contenitore si misura ogni volta che la finestra (finestra) viene ridimensionata
<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
fonte
2017-04-19 23:33:58
ohh - è carino. verificando cosa fa alle prestazioni. – circusdei
mi sembra buono - grazie per il link! ora sull'immagine di sfondo:/ – circusdei