javascript - 我如何才能找到第二个容器的正确字体大小?
问题描述
我正在做这个项目。基本上,我有 2 个容器,它们都有 2 个不同的宽度和高度。我的目标是找到第二个容器相对于第一个容器的正确字体大小。
在这两个容器中,它们包含完全相似的单词,具体取决于用户输入。我还在他们两个中实现了“word-break”属性。如果第一个容器在到达行尾时开始破坏单词,我希望第二个容器做同样的事情。
我将如何在 Javascript 或 Jquery 中解决这个问题?
解决方案
一种想法是font-size
根据宽度的无线电进行计算:
x = originalFontSize * (newWidth / originalWidth)
= 51 * (510 / 612)
= 42.5
这是一个演示:
let firstBox = document.getElementById('one');
let firstSize = parseFloat(window.getComputedStyle(firstBox, null).getPropertyValue('font-size'));
let els = document.getElementsByClassName('resize');
Array.from(els).forEach((el) => {
let thisSize = firstSize * (el.clientWidth / firstBox.clientWidth);
el.style.fontSize = thisSize + "px";
});
div {
word-break: break-all;
margin: 0 0 0.5em;
background-color: lightgray;
}
#one {
width: 320px;
font-size: 18px
}
#two {
width: 280px;
}
#three {
width: 210px;
}
<div id="one">
Praesent sapien massa, convallis a pellentesque nec, egestas non nisi. Curabitur non nulla sit amet nisl tempus convallis quis ac lectus.
</div>
<div id="two" class="resize">
Praesent sapien massa, convallis a pellentesque nec, egestas non nisi. Curabitur non nulla sit amet nisl tempus convallis quis ac lectus.
</div>
<div id="three" class="resize">
Praesent sapien massa, convallis a pellentesque nec, egestas non nisi. Curabitur non nulla sit amet nisl tempus convallis quis ac lectus.
</div>
推荐阅读
- c# - BindAttribute 似乎在 ASP.Net MVC Core (2.0.8) 中不起作用
- c++ - 在 C++ 程序中使用 C 库中定义的类型,具有类似方案的命名空间
- unity3d - ARCore Unity Google Cardboard 支持
- javascript - 当 centerMode 为真且无限为假时,Slick.js 删除第一张和最后一张幻灯片上的间隙
- android - Android 模拟器无法启动。屏幕只是黑色/透视
- java - Pebble 模板继承失败且没有错误
- redux - 如何在 saga 中使用 redux 操作关闭 eventSource?
- python - 根据列表中包含的排除值从 Pandas 数据框中删除值
- matlab - 如何在 Matlab 中将 PPM 图像转换为 JPG?
- r - 使用 RcppArmadillo::sample 增量采样时的奇怪行为