javascript - 调整多个容器中的文本大小以保留父尺寸

标签 javascript jquery html css

我现在遇到的问题是,我在一个页面上有多个 div 元素(考虑到可伸缩性,我正在测试几百个),其中包含数据库中名称的首字母。

我希望它们都显示在一个页面上,就像这样;

http://jsfiddle.net/o1dv0n76/2/

问题是,出于显示目的,我希望它们都是相同的像素 (20 * 20),这样它们看起来就像一个网格。

这需要调整文本大小,以便两个首字母都适合父元素的尺寸。

我已经用 jQuery 尝试过这个,但它只会让浏览器崩溃,所以这显然不是很有效。

也就是说,经过漫长的等待,它确实成功了。

我很好奇是否有更流线型的方法来实现这一目标。

我使用的jQuery如下;

$(document).ready(function() {
    $('.comment-box').each(function() {
        $(this).css('font-size', '12');
        var curWi = $(this).width();
        var curHi = $(this).height();
        var ideal = 18;
        var size  = 12;

        while (curWi > ideal || curHi > ideal) {
            size  = size - 1;
            $(this).css('font-size', size);
            curWi = $(this).width();
            curHi = $(this).height();
        }
        $(this).css({
            height:     ideal,
            width:      ideal
        })
    });
});

编辑:请原谅我的命名约定,我在模拟过程中没有考虑太多。

最佳答案

Yout 脚本挂起是因为您的 line-height 为 20px,但您选择的理想高度为 18。无论您将字体大小减小多少,高度始终为 20px ,它大于 18,所以你陷入了无限循环。

将理想值更改为 20:

var ideal = 20;

它会起作用:

http://jsfiddle.net/jtbowden/1r8abvom/

作为旁注,如果您跟踪最小字体大小,您可以在完成后将所有 div 设置为相同的字体大小,并且您的网格看起来会更加一致:

http://jsfiddle.net/jtbowden/1r8abvom/1/

但是,这完全取决于您的目标。

关于javascript - 调整多个容器中的文本大小以保留父尺寸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25435238/

相关文章:

java - 需要帮助 在 javascript 中使用 EL 从模型中获取值

javascript - 绘制路径以连接两个节点而不与其他节点相交+ d3.js

javascript - 将 HTML Canvas 作为图像复制到剪贴板

javascript - jQuery 滚动到 anchor 返回 NaN 作为位置哈希

jquery - 基于事件每周重复事件的完整日历

javascript - onclick 更改多个表单输入值

javascript - 弹出窗口的显示 id 按钮不起作用

jquery - iPad/移动版 Safari : div fixed in one direction

html - 如何将 <div> 标签的内容居中?

html - 使用 scrapy 跟踪 HTML 中的标签