CSS字母间距(letter-spacing)和字符串全长的关系

CSS字母间距(letter-spacing)和字符串全长的关系

问题来源

这是一个用canvas手动实现的富文本编辑的模块,发现了字符串宽度大于元素width导致了异常的显示。

分析过程

然而,所有的文字属性皆从一个用CSS版本的Demo模版中获取到的,同样的属性在CSS中正常显示,所以排除初始值不合理。

定位到核心代码,:

字符串全长=n个字符宽度+(n-1)个letterSpacing+其他

通过精确计算,发现在CSS里:

文字长度=n个字符宽度+ n个letterSpacing+其他

因为字符串“OK”的letterSpacing=-0.4,因为少累加一个,所以导致宽度偏长。

解决方案

方法一:

将宽度累加器let textGraphicsWidth = 0换成let textGraphicsWidth = textGraphicsStyle.letterSpacing,相当于补上一个letterSpacing

方法二:

重构累加函数的代码,让每个charWidth = charWidth + letterSpacing

技巧总结

chrome浏览器中,在识别单个字符在浏览器中的尺寸时,还原100%缩放,浏览器开发者模式审查元素到指定字符串,直接将鼠标光标放到对应文字处即可看到对应文字尺寸

在这里插入图片描述

如果需要看单个文字尺寸,双击修改即可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值