当前位置: 首页 > 面试题库 >

调整字体大小以适合div(一行)

应俭
2023-03-14
问题内容

有人问过类似的问题,但是解决方案确实与我正在尝试做的事情相吻合。基本上,我有一篇标题为(<h1>)的文章。我不想控制标题的长度,但是我也不想标题显示在多行上。CSS或jQuery是否可以根据<div>标签的宽度来调整文本大小?

我知道如果可以检测到文本与边缘的重叠,我将如何处理伪代码<div>

var fontize = $("#title").css("font-size");
var i = /*remove unit from integer*/
while( /*text overlaps div*/ ){
    $("#title").css("font-size", --i+"pt");
}

如果有一个CSS属性,我可以设置为更好,但是我似乎找不到(在这种情况下,溢出不会起作用)。


问题答案:

CSS否,JavaScript是

您无法使用CSS进行此操作,但是可以在javascript /
jQuery中进行。为了帮助您使用伪代码,因为您已经知道该怎么做。只是您不知道如何检测多余的宽度。

最好的方法是使DIV具有以下(至少)样式:

position: absolute;
visibility: hidden;
white-space: nowrap;
font-family: /* same as your title's */

然后将文本复制到该文本并设置一些起始字体大小。然后,您可以遍历while循环,并在div的宽度合适时停止。然后将计算出的字体大小设置为原始标题。

这样,该检查将对用户不可见,因此也将更快地工作。

顺便说一句
:这是自动增长textarea脚本工作的通常方式。他们使用虚拟div,其样式设置与原始文本区域相同,并在用户键入文本时调整区域的高度。因此,起初“文本”区域可能很小,但是如果用户键入大量文本,它将自动增长以容纳内容。

While循环优化

您可以通过以下方法优化while循环,以大大减少迭代次数:

  1. 设置起始字体大小。
  2. 得到测试DIV的宽度。
  3. 计算orig_div和test_div之间的宽度因子。
  4. 以此大小调整字体大小,而不是增加/减少一个单位
  5. 测试test_div宽度


 类似资料:
  • 问题内容: 它由9个框组成,中间带有文本。我已经制作了框,以便它们可以随着屏幕大小的变化而调整大小,以便始终保持在同一位置。 但是,即使我使用百分比,文本也不会调整大小。 如何调整文本的大小,使其在整个页面上始终具有相同的比例? 这是处理多种分辨率的合适解决方案吗?还是我应该在CSS中进行很多检查并为每种媒体类型设置许多布局? ``` html, body { } #launchmain { }

  • 问题内容: 我正在尝试从目录加载图像并将其作为图标放置在中。但是,当图像尺寸很大时,就不能完全放入标签中。我尝试调整图像的大小以适合标签,但无法正常工作。我可以知道我要去哪里了吗? 问题答案: BufferedImage img = ImageIO.read(…); Image scaled = img.getScaledInstance(500, 500, Image.SCALE_SMOOTH)

  • 问题内容: 我正在尝试使图片适合JLabel。我希望将图片尺寸减小到更适合我的Swing JPanel。 我尝试使用setPreferredSize,但是它不起作用。 我想知道是否有一种简单的方法?我应该为此缩放图像吗? 问题答案: 大纲 这是要遵循的步骤。 将图片读取为BufferedImage。 将BufferedImage的大小调整为另一个JLabel大小的BufferedImage。 从调

  • 问题内容: 我有一个将动态填充的表格,我希望表格始终调整大小以适合行数。我不希望任何滚动,因为表格位于面板中,并且面板的内容需要打印。我已经试过了: 但这似乎不起作用。 问题答案: 我认为这不是最好的方法。但是正如您所坚持的,我将代码放在下面。

  • 我有一些问题与CSS为我的网页,显示社会媒体风格的帖子,包括图像。当显示图像时,它们被放置在div标记中,该标记的样式是尝试缩小图像的大小,并将图像horziont地相邻显示。 然而,我有一个问题,图像仍然试图堆叠在一起,我不能让他们调整我想要的大小,特别是在移动。目前基于其他线程,这是我得到的

  • 问题内容: 您如何自动调整大图像的大小,以使其适合较小的div容器,同时保持其宽高比? 示例:当图像插入到编辑器面板上并且图像太大而无法容纳在页面上时,图像将自动调整大小。 问题答案: 请勿对图片标签应用明确的宽度或高度。相反,给它: 另外,如果只想指定宽度。