1
44
CSS否,javascript是使用CSS不可能做到这一点,但可以在javascript/jquery中做到这一点。以帮助您使用伪代码,因为您已经知道该怎么做了。只是你不知道如何检测多余的宽度。 最好的方法是使用具有以下(至少)样式的DIV:
然后将文本复制到它并设置一些起始字体大小。然后可以迭代while循环,并在DIV的宽度合适时停止。然后将计算的字体大小设置为原始标题。 通过这种方式,这种检查将对用户的眼睛隐藏起来,因此也将更快地工作。
顺便说一句
:这是自动增长的常见方式
while循环优化通过这样做,您可以优化while循环,从而大大减少迭代次数:
|
2
22
我有一个类似的问题,这使我为这个写了自己的插件。看一看 jquery-quickfit (这与 Robert Koritnik's 解决方案,我非常喜欢)。 为了防止标题跨多行,只需添加一个CSS样式:
元素。 在头中包含jquery和quickfit之后。您可以使用以下选项触发快速拟合:
它测量并计算要匹配的每个文本字母的大小不变量measure,并使用它来计算下一个最佳字体大小,该字体大小适合文本到容器中。 计算被缓存,这使得处理必须容纳多个文本或必须多次容纳一个文本时非常快速,例如,在窗口调整大小时(调整大小时几乎没有性能惩罚)。 Demo for a similar situation as yours 更多文档、示例和源代码在项目页面上。 |
3
20
这里有3个我经常使用的函数来获取文本的宽度、高度和调整容器的宽度。
|
4
4
@克洛维六 谢谢你的回答。这对我很有用。遗憾的是,我不能只感谢你的投票。 注意:我必须更改“$J”(对于“$”,它才能在我的配置中工作。 Evendo,这超出了这个问题的范围,没有在使用so时,我扩展了您的代码,使其适用于最大高度的多行框。
附言:我知道这应该是一个评论,但评论不能让我正确地发布代码。 |
5
4
今天我创建了一个jquery插件 jquery响应式标题 这完全符合您的要求:它调整标题的字体大小,使其适合于其包含元素(DIV、正文或其他内容)。有一些不错的选项可以设置为自定义插件的行为,我还采取了预防措施,添加了对Ben Altmans Throttle/Debounce功能的支持,以提高性能,并在用户调整窗口大小时减轻浏览器/计算机上的负载。在最简单的用例中,代码如下所示:
…这将把页面上的所有h1元素转换成响应的单行标题,这些标题将调整它们的大小以适应父/容器元素。 您将找到源代码和插件的较长描述。 on this GitHub page . 祝你好运! |
6
3
很简单。为文本创建一个跨距,获取宽度并减小字体大小,直到跨距与DIV容器的宽度相同:
|
7
1
|
8
1
我不喜欢其他解决方案,所以,这里有另一个。它需要调整以下内容中文本大小的标记:
它使用二进制搜索来查找最佳大小,所以我怀疑它比其他许多解决方案都要好,这些解决方案只是把字体大小一个像素一个像素地缩小一个像素。现在的大多数浏览器也支持字体大小的小数,而且这个脚本在那里有一些好处,因为它将达到最佳答案的.1px以内,不管是什么,即使它是一个相对较长的小数。你可以很容易地改变
用途:
代码:
|
9
1
GitHub上有一个jQuery插件,它很可能就是你想要的。它被称为jquery quickfit。它使用jquery提供了一种快速而肮脏的方法来将文本拟合到其周围的容器中。 HTML:
Javascript:
|
10
0
我的解决方案,作为基于 Robert Koritnik's answer :
这实际上创建了一个继承重要属性的临时跨度,并比较宽度差。当然,while循环需要优化(减少两个大小之间计算出的百分比差异)。 示例用法:
|
11
0
我做了一些jquery的东西来调整你的分区的字体大小。它甚至可以与多行一起使用,但是只会增加字体的大小(如果你想的话,你可以简单地设置默认的字体大小为1px)。
我增加字体大小直到有一个换行符,设置减少它1倍。没有其他花哨的东西,隐藏的DIV等等。只需添加
|
12
0
我理解这个问题似乎已经得到了相当彻底的回答,但在某些情况下,这里的解决方案可能会引起其他问题。例如,Tkahn的库看起来非常有用,但是它改变了它所连接的元素的显示,这可能是一个问题。在我的例子中,它阻止了我将文本垂直和水平居中。在一些混乱和试验之后,我想出了一个简单的方法,它涉及jquery,使文本适合一行,而不需要修改父元素的任何属性。注意,在这段代码中,我使用了RobertKoritnik的建议来优化while循环。要使用此代码,只需将“字体修复”类添加到任何包含需要在一行中适合它的文本的div中。对于报头,这可能需要在报头周围增加一个DIV。然后,对固定大小的DIV调用一次此函数,或者将其设置为不同大小的调整大小和/或方向侦听器。
现在,为了方便起见,我添加了一个额外的例子,如果文本太小(低于传递给函数的最小阈值),它就会被截断。一旦达到阈值,可能需要或可能不需要的另一件事是将最大宽度更改为100%。这应该针对每个用户的场景进行更改。最后,将此答案作为备选答案发布的整个目的是为了使内容集中在父分区内,这可以通过向内部DIV类添加CSS属性轻松实现,如下所示:
希望这对某人有帮助! |
13
0
在这里查看这个例子 http://codepen.io/LukeXF/pen/yOQWNb 您可以在页面加载和页面大小调整上使用一个简单的函数来实现这种魔力。但是要小心,不要让客户机延迟太多的函数调用。(示例有延迟)。
|
YunusoviÄ · 我无法用css更改html段落颜色 1 年前 |
Blake · 无法使用CSS旋转Angular 15中的字体图标 1 年前 |
Phil Lucks · 如何制作边界的外半径? 1 年前 |
roy_meir · 创建自定义下拉式元素 1 年前 |
Community wiki · 如何为触摸设备优化网站 1 年前 |
tpetzoldt · 如何在有光泽的情况下抑制图像的抗锯齿? 1 年前 |
manofconstsorrow · 点击导航项目关闭汉堡菜单 1 年前 |