如何在CSS中设置min-font-size

nro*_*fis 64 html5 font-size css3

我想为HTML页面中的每个元素设置最小字体大小.

例如,如果字体大小小于12px的元素,则它们将更改为12px.
但是如果有字体大小的元素然后是12px,它们就不会改变.

有没有办法用CSS做到这一点?

Mar*_*uef 166

在CSS3中,有一个简单而精彩的黑客:

font-size:calc(12px + 1.5vw);
Run Code Online (Sandbox Code Playgroud)

这是因为calc()的静态部分定义了最小值.即使动态部分可能缩小到接近0的位置.

  • 梦幻般的黑客! (15认同)
  • 我爱你。这太棒了。 (3认同)
  • @StefanSteiger,您可以使用媒体查询:(a)媒体(最大宽度:610px)... (3认同)
  • 虽然这是一个很好的黑客,但我认为这不是真正的解决方案,因为当大小超过最小值时它会影响字体大小,所以你必须忍受额外的`12px`(在这种情况下)一直. (3认同)
  • 辉煌!正是我需要的.谢谢! (2认同)

Ste*_*ger 32

这可能不是您想要的,但在CSS 3中,您可以使用max-function.

例:

blockquote {
    font-size: max(1em, 12px);
}
Run Code Online (Sandbox Code Playgroud)

这样,font-size将是1em(如果1em> 12px),但至少为12px.

不幸的是,这个令人敬畏的CSS3功能尚未被任何浏览器支持,但我希望这很快就会改变!

  • 严重的是,为什么标准委员会总是删除那些能让我的工作变得可行的东西!? (4认同)
  • @Michael,CSS WG 删除内容主要是因为缺乏实施者的兴趣或优先级。它需要两个独立的实现才能在最终的 W3C 建议书中获得 CSS 功能。写一篇论文没有意义,也没有人想把它推到现实世界的软件中。所以你应该问浏览器供应商...... (2认同)
  • 很棒的发现!可以与 css 变量一起使用来设置最小值/最大值。示例: `:root { --responsive-font-size-primary: min(2em, max(0.5em, 5vmin)); }` 使使用变得简单:`font-size: var(--responsive-font-size-primary);` (2认同)
  • @Michael:好消息 - 现在已经实施了!(截至 2019 年 12 月中旬) (2认同)

zar*_*ior 9

使用媒体查询.示例:这是我使用原始大小是1.0vw,但当它达到1000时,字母变得太小,所以我扩大它

@media(max-width:600px){
    body,input,textarea{
         font-size:2.0vw !important;
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在处理的这个网站没有响应> 500px,但你可能需要更多.这个解决方案的优点是,你可以保持字体大小缩放,而不需要超级迷你字母,你可以保持js免费.


Bob*_*ino 9

.class {
    font-size: clamp(minimum-size, prefered-size, maximum-size)
}
Run Code Online (Sandbox Code Playgroud)

使用这个,你可以将其设置为首选,最大值为 5vw,但最小值为 15px 或其他值,因此它不会超过 5vw,但如果 5vw < 15px,它将坚持 15px

  • 这应该是批准的答案。 (2认同)

ccc*_*ccc 8

看起来我有点晚了,但对于有这个问题的其他人来说,试试这个代码吧

p { font-size: 3vmax; }
Run Code Online (Sandbox Code Playgroud)

使用您喜欢的任何标签和您喜欢的尺寸(替换3)

p { font-size: 3vmin; }
Run Code Online (Sandbox Code Playgroud)

用于最大尺寸.

  • 不是我的意思. (2认同)
  • vmax和vmin实际上用于指定相对于视点/页面大小的值。最小值和最大值是指最小/最大视口,而不是字体大小的最小值或最大值-这是操作员所要的。(例如,如果高度大于视口的宽度,则vmax等于100vmax =视口的高度,而100vmin =视口的宽度) (2认同)

Bha*_*ani 7

CSS 有一个clamp() 函数,用于保存上下限之间的值。使用clamp() 函数可以在定义的最小值和最大值之间的值范围内选择中间值。

它只需要三个维度:

  1. 最小值。
  2. 项目清单
  3. 首选值 最大允许值。

尝试使用下面的代码,并检查窗口大小调整,这将更改您在控制台中看到的字体大小。我设置了最大值150px和最小值100px

$(window).resize(function(){
    console.log($('#element').css('font-size'));
});
console.log($('#element').css('font-size'));
Run Code Online (Sandbox Code Playgroud)
h1{
    font-size: 10vw; /* Browsers that do not support "MIN () - MAX ()" and "Clamp ()" functions will take this value.*/
    font-size: max(100px, min(10vw, 150px)); /* Browsers that do not support the "clamp ()" function will take this value. */
    font-size: clamp(100px, 10vw, 150px);
}
Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<center>
  <h1 id="element">THIS IS TEXT</h1>
</center>
Run Code Online (Sandbox Code Playgroud)


mif*_*i79 3

body不会。虽然您可以使用该属性设置基本字体大小font-size,但之后指定较小尺寸的任何内容都将覆盖该元素的基本规则。为了完成您想做的事情,您需要使用 Javascript。

您可以迭代页面上的元素并使用如下所示更改较小的字体:

$("*").each( function () {
    var $this = $(this);
    if (parseInt($this.css("fontSize")) < 12) {
        $this.css({ "font-size": "12px" });   
    }
});
Run Code Online (Sandbox Code Playgroud)

这是一个小提琴,您可以在其中看到它的完成情况:http://jsfiddle.net/mifi79/LfdL8/2/

  • 从性能的角度来看,迭代页面上的所有元素并更改 CSS 属性似乎是一个非常糟糕的主意。我不是触发回流的专家,但您可能会无意中使用这种方法多次回流页面。我不推荐这种方法。 (11认同)