window.onload = function() {
let box = document.getElementById('box')
function getFontSize(str = '666,666.66', targetSize = 20) {
let boxWith = box.offsetWidth;
let fontSize = targetSize;
let theCanvas = null;
let practicalWidth = getWidth(str, fontSize)
function getWidth(text, size) { // 使用canvas计算字符串展示所需宽度
let font = `normal ${size}px Microsoft YaHei`
const canvas = theCanvas || (theCanvas = document.createElement('canvas'));
const context = canvas.getContext('2d');
context.font = font;
return Math.floor(context.measureText(text).width)
while ((10 <= fontSize) && (practicalWidth > boxWith)) { // 所需宽度小于实际宽度,或者计算字体大于最小字体10
fontSize -= 2
practicalWidth = getWidth(str, fontSize); // 重新计算目标字符串所需宽度
boxWith = box.offsetWidth - getWidth('...', fontSize); // 文本溢出剔除...所占距离
if (practicalWidth< boxWith) {
break
return fontSize; // 输出fontSize
box.style.fontSize = `${getFontSize()}px`
</script>
<div id="box" class="box">666,666.66</div>
</body>
</html>
fonts
ize
方法返回使用
HTML
font 标签中 s
ize
属性定义字体大小的字符串。其语法如下:
代码如下:
str_object.
fonts
ize
( s
ize
)
参数说明:
str_object
要操作的字符串(对象)
s
ize
必需。1 到 7 的数字,数字越大字体越大,字体大小对比如下:
1:10px
2:14px
3:16px
4:18px
5:24px
6:32px
7:48px
提示:该方法不符合 ECM
本文结合自己对网易与淘宝移动端首页
html
元素
上的
font-size
这个属性的思考与学习,讨论
html
5设计稿尺寸以及
前端
与设计之间协作流程的问题,内容较多,但对你的技术和工作一定有价值,欢迎阅读和点评:)。
1. 问题的引出
最近阅读白树的博文《移动web资源整理》时,他在博文中有一段指出,如果
html
5要适应各种分辨率的移动设备,应该使用rem这样的尺寸单位,同时给出了一段针对各个分辨率范...
export const getTextWidth = (str,
fontS
ize
) => {
let result = 10;
let ele = document.createElement('span')
//字符串中带有换行符时,会被自动转换成<br/>标签,若需要考虑这种情况,可以替换成空格,以获取正确的
宽度
//str = str.replace(/\\n/g,' ').replace(/\\r/
canvas文字的绘制
我们在使用canvas画各种图的时候,大多时候会有文字的绘制,比如,各种图表,进度条,钟表等等,都需要绘制文字。所以绘制文字也是canvas入门必须的基础。
1.canvas绘制文字的API
绘制文字很简单就下面这个方法。
fillText(str, x, y, maxW):str绘制的文字,(x, y)起始坐标,maxW是最大
宽度
,绘制文字超过该
宽度
则不显示。
stro...
var a = "abcDEfGgdefg32asdf38"; [removed]("原始:"+a+"
") [removed]("粗体:"+a.bold()+"
"); [removed]("大号:"+a.big()+"
");...[removed]("字体大小:"+a.
fonts
ize
(10)+"
"); [removed]("字