javascript - 调整容器内的字体文本(在多个 div 内)以完美适应

标签 javascript jquery html css

所以我在页面的容器中有一个 div 矩阵,每个 div 显示“1”或“0”。

如果我将我的容器设置为 100% 的宽度和高度以适合我的页面底部,我希望能够 缩放容器 div 内的所有 1 和 0(0 和 1 的数量将是一个静态数字,为了这个问题让我们选择 100)到无论浏览器大小调整到什么大小,总是完美适合容器,所以它适合宽度和 容器的高度完全没有任何尾随空白或离开页面或触发滚动条的元素。

The goal is to make sure the fonts resize to fit within the container exactly, regardless of screen size (both height and width).

我看到过多个关于stack overflow的类似问题,比如:JavaScript Scale Text to Fit in Fixed Div ,但它们似乎都缩放了某一行文本,而不是我组合的 div 中的文本。 我可以在 JavaScript 中执行此操作吗?

If you see what is being asked for in This Question, this is exactly what I want. The difference in that Q is that he uses some text within 1 div rather than multiple to fit his container.

这是我的 HTML:

<div id="binaryMatrix" style="width: 100%; height: 100%;">
    <div>0</div>
    <div>1</div>
    <div>0</div>
    <div>1</div>
    <div>0</div>
    <div>1</div>
    <div>0</div>
    <div>1</div>
    ...up to 100
 </div>

这是我的 CSS:

#binaryMatrix div {
    float: left;
}

参见 fiddle :Fiddle

这个元素也在 GitHub 上: GitHub - danjonescidtrix/binary-matrix


如有任何帮助或建议,在此先感谢您

最佳答案

没错。第三次尝试(这次我真的确实破解了它)。

位数是静态的。我们称它为 100 位数字。

数字的高度大于宽度,因此我们需要一个高而窄的 div 网格。 10x10 不好。让我们设置一个 20x5 网格。

现在我们需要做的就是锻炼:

  1. font-size 的数字有多大仅基于视口(viewport)的宽度;和
  2. font-size 的数字有多大仅基于高度 视口(viewport);

以较小者为准font-size应用于数字。

var binaryMatrix = document.getElementById('binaryMatrix');
var binaryMatrixDivs = binaryMatrix.getElementsByTagName('div');

function applyNewFontSize() {

    var newVerticalFontSize = (window.innerHeight / 5.5);
    var newHorizontalFontSize = (window.innerWidth / 20.5);
    var newFontSize = (newVerticalFontSize > newHorizontalFontSize ? newHorizontalFontSize : newVerticalFontSize);

    for (var i = 0; i < binaryMatrixDivs.length; i++) {
    binaryMatrixDivs[i].style.fontSize = newFontSize + 'px';
    binaryMatrixDivs[i].style.lineHeight = newFontSize + 'px';
    }

}

window.addEventListener('resize',applyNewFontSize,false);
window.addEventListener('load',applyNewFontSize,false);
body {
margin: 0;
padding: 0;
}

#binaryMatrix {
width: 100vw;
height: 100vh;
}

#binaryMatrix div {
display: inline-block;
float: left;
width: 5vw;
height: 20vh;
text-align: center;
color: rgb(163,163,163);
}
<div id="binaryMatrix">
<div>0</div><div>1</div><div>0</div><div>1</div><div>0</div><div>1</div><div>0</div><div>1</div><div>0</div><div>1</div><div>0</div><div>1</div><div>0</div><div>1</div><div>0</div><div>1</div><div>0</div><div>1</div><div>0</div><div>1</div><div>0</div><div>1</div><div>0</div><div>1</div><div>0</div><div>1</div><div>0</div><div>1</div><div>0</div><div>1</div><div>0</div><div>1</div><div>0</div><div>1</div><div>0</div><div>1</div><div>0</div><div>1</div><div>0</div><div>1</div><div>0</div><div>1</div><div>0</div><div>1</div><div>0</div><div>1</div><div>0</div><div>1</div><div>0</div><div>1</div><div>0</div><div>1</div><div>0</div><div>1</div><div>0</div><div>1</div><div>0</div><div>1</div><div>0</div><div>1</div><div>0</div><div>1</div><div>0</div><div>1</div><div>0</div><div>1</div><div>0</div><div>1</div><div>0</div><div>1</div><div>0</div><div>1</div><div>0</div><div>1</div><div>0</div><div>1</div><div>0</div><div>1</div><div>0</div><div>1</div><div>0</div><div>1</div><div>0</div><div>1</div><div>0</div><div>1</div><div>0</div><div>1</div><div>0</div><div>1</div><div>0</div><div>1</div><div>0</div><div>1</div><div>0</div><div>1</div><div>0</div><div>1</div><div>0</div><div>1</div>
</div>

关于javascript - 调整容器内的字体文本(在多个 div 内)以完美适应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40608025/

相关文章:

javascript - 如何检查属性的 null 和 undefined 两个值?

javascript - 如何创建圆形导航系统?

javascript - 将数组从 Controller 传递到 Javascript

javascript - 如何添加特定链接以搜索关键字

php - 如果后验证成功,则禁用 e.preventDefault()

javascript - 使用 Ajax 的数据表

jquery - 滚动时更改页面的背景颜色

javascript - Angular Datatable ng-click 不起作用

javascript - 如何在 IOS 的 react-native 中混淆代码

Jquery - 如何选择距离TD最近的Dom元素