我有一个div,它在页面中居中,并按视口比例缩放,以保持其纵横比(16:9)。问题是,我希望字体和内容也随着div的缩放而缩放。vmin基本上没有问题,但如果div的纵横比为1:1,则会完美地工作,因为vmin直接检查视口高度和宽度之间的较小值,而您无法设置自定义纵横比。
<!DOCTYPE html>
<html>
<head>
<style>
body {
background-color:white;
}
.wrapper {
width: 95vw;
height: calc(95vw * 9/16);
max-height: 95vh;
max-width: calc(95vh * 16/9);
background: center;
background-color: blue;
background-size:contain;
margin: auto;
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
}
#lorem {
color: aqua;
font-size:10vmin;
text-align:center;
position:absolute;
transform: translate(-50%, -50%);
top: 50%;
left: 50%;
margin:auto;
}
</style>
</head>
<body>
<div class="wrapper">
<p id="lorem">
This text should scale with div only.
</p>
</div>
</body>
</html>
https://jsfiddle.net/Addictorator/70fq44sv/2/
垂直调整窗口大小以查看我所说的内容。
我不认为有一种纯 CSS 的方法(但如果有的话,那将是最理想的),但我认为可以使用 JavaScript,在 div 上添加一个 onresize 事件监听器,并通过比较原始(或先前 - 将其存储为 var)div 高度/宽度与当前 div 高度/宽度之比来单独缩放每个元素。或者它可以尝试复制 vmin 行为,但将高度设置为一种 16:9 考虑而不是 1:1,就像上面使用 css 的 div 所做的那样。如果可能的话,我更喜欢纯 js 和没有 jquery。我已经尝试过自己做这件事,但我在 JavaScript 方面比较业余。
提前致谢!
font-size: 10vmin
更改为font-size:9vw;
。请注意,这是字体大小方面的更改。 - kabanus