如何根据容器大小设置字体大小?

IT技术 javascript css font-size
2021-02-04 17:03:22

我有一个具有 % 宽度和高度的容器,因此它会根据外部因素进行缩放。我希望容器内的字体相对于容器的大小是一个恒定的大小。有什么好的方法可以使用 CSS 做到这一点吗?font-size: x%根据原来的字体尺寸(这将是100%)将只缩放字体。

6个回答

如果要将字体大小设置为视口宽度的百分比,请使用vw单位:

#mydiv { font-size: 5vw; }

另一种选择是使用嵌入在 HTML 中的 SVG。这将只是几行。文本元素的 font-size 属性将被解释为“用户单位”,例如视口是根据其定义的。因此,如果您将视口定义为 0 0 100 100,那么字体大小 1 将是 svg 元素大小的百分之一。

不,没有办法在 CSS 中使用计算来做到这一点。问题是用于字体大小的百分比,包括计算中的百分比,是根据继承的字体大小而不是容器的大小来解释的。bw为此,CSS 可以使用一个名为(box-width)的单位,因此您可以说div { font-size: 5bw; },但我从未听说过有人提议这样做。

@torazburo,嗯,在 FF 17.0 中尝试过。伟大的发现顺便说一句,不知道有这样的东西存在。
2021-03-15 17:03:22
我已经编写了一段较少的代码,这些代码将在可用时使用 vw 并为各种媒体查询使用预定义的值:gist.github.com/tnajdek/5143504
2021-03-19 17:03:22
@lorefnon,这个页面caniuse.com/#feat=viewport-units说它可以在 Firefox 19 中运行,同时尝试 Chrome。
2021-03-30 17:03:22
请注意,这vw是相对于视口,而不是容器大小。在许多情况下可能很有用,但 svg 对我来说效果更好。
2021-04-03 17:03:22
vw 在哪些浏览器上工作?我无法让它在 Firefox 中工作。
2021-04-06 17:03:22

另一个 js 替代方案:

工作示例

fontsize = function () {
    var fontSize = $("#container").width() * 0.10; // 10% of container width
    $("#container h1").css('font-size', fontSize);
};
$(window).resize(fontsize);
$(document).ready(fontsize);

或者如torazaburo 的回答所述,您可以使用 svg。我整理了一个简单的例子作为概念证明:

SVG 示例

<div id="container">
    <svg width="100%" height="100%" viewBox="0 0 13 15">
        <text x="0" y="13">X</text>
    </svg>
</div>
这对我完全有用,现在我只需要垂直居中文本
2021-03-16 17:03:22
只是一个评论,看看'firefox'如何打开并显示一个.pdf文件。它正在 javascriptly 调整内容大小。相当重,但完全可以工作。
2021-03-30 17:03:22

您可以使用 CSS3 使用计算来做到这一点,但使用 JavaScript 很可能更安全。

这是一个例子:http : //jsfiddle.net/8TrTU/

使用 JS,您可以更改文本的高度,然后简单地将相同的计算绑定到调整大小事件,在调整大小期间,以便在用户进行调整时进行缩放,或者您允许调整元素的大小。

尝试使用:window.onresize = function(event) { yourFunctionHere(); };同样,如果用户在加载后决定调整其页面大小,您的字体将适当调整大小
2021-04-02 17:03:22

在我的一些项目中使用了Fittext,它看起来是解决此类问题的好方法。

FitText 使字体大小灵活。在您的流畅或响应式布局上使用此插件来实现填充父元素宽度的可扩展标题。

是的 FitText 很棒而且设置简单
2021-04-11 17:03:22

不能用 css font-size来完成

假设媒体查询可以获取您所指的“外部因素”,您可以使用它们 - 调整可能必须限于一组预定义的大小。