V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
yvettemuki
V2EX  ›  前端开发

想问一下,在固定大小的 div 下,字体怎么进行自适应大小?

  •  
  •   yvettemuki ·
    yvettemuki · 2019-12-25 11:29:36 +08:00 · 4249 次点击
    这是一个创建于 1556 天前的主题,其中的信息可能已经有所发展或是发生改变。
    比如:10 个字符和 20 个字符的在相同的方块中,大小不一样,试过按字体宽度和 div 宽度比来进行缩放,但是感觉效果都不太满意 orz,想大佬们知道有什么常用的方式对字体缩放做处理?
    9 条回复    2019-12-25 14:46:59 +08:00
    Girlphobia
        1
    Girlphobia  
       2019-12-25 11:48:23 +08:00 via Android
    小规模的,知道内容长度上下限并且差距不大的,JS 里面自己试一下算数解决。

    大规模的,建议 SVG 手调 viewbox。
    zhw2590582
        2
    zhw2590582  
       2019-12-25 11:51:21 +08:00
    去最大和最小状态时的字体大小,然后算一下应该可以
    vampuke
        3
    vampuke  
       2019-12-25 12:24:36 +08:00   ❤️ 1
    div 里加个 div 来放字符
    font-size 放大点
    if inner div heigth > outer div
    font-size - 1
    循环至 inner div height <= outer div height
    mrzhiin
        4
    mrzhiin  
       2019-12-25 12:42:39 +08:00   ❤️ 1
    https://rikschennink.github.io/fitty/ 这个不知道可不可以
    banliyaya
        5
    banliyaya  
       2019-12-25 13:26:38 +08:00 via iPhone   ❤️ 1
    div 固定大小,然后拿到 div 高度,div 内滚动内容高度,字体默认最大号。do fontsize-- while 活动容器高度大于 div 高度。
    yvettemuki
        6
    yvettemuki  
    OP
       2019-12-25 14:20:12 +08:00
    哇很强各位,确实都是不错的思路,我试试哇
    yahon
        7
    yahon  
       2019-12-25 14:22:57 +08:00
    里面的 div 直接通过 css 来缩放
    asdjgfr
        8
    asdjgfr  
       2019-12-25 14:36:17 +08:00
    旭神有篇博客讲过,纯 css 的,感觉比较实用 https://www.zhangxinxu.com/study/201903/css-font-size-auto-demo.php
    encro
        9
    encro  
       2019-12-25 14:46:59 +08:00
    cavas 有方法可以计算字宽,不建议(需要算缩进换行等)。

    简单的话参考 3 楼以及下面链接:
    https://stackoverflow.com/questions/2989950/auto-resize-text-font-size-when-resizing-window
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2820 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 14:52 · PVG 22:52 · LAX 07:52 · JFK 10:52
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.