JS使用canvas中的measureText方法测量字体宽度示例


Posted in Javascript onFebruary 02, 2019

本文实例讲述了JS使用canvas中的measureText方法测量字体宽度。分享给大家供大家参考,具体如下:

工作项目中用到的东西,要限制一个容器的宽度,超过了这个宽度就要显示展开按钮,点击展开按钮要全部展示出来,可以用css的加省略号的那个,但是有时候这个还不行,我就自己想办法,突然想到canvas中有个measureText函数可以测量字体的宽度,于是我就想着用这个函数来测出句子的宽度来,然后和容器的宽度进行比较,这样就可以了,那我就来写个demo来演示一下如何测量

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
</head>
<body>
  <script type="text/javascript">
    var text = "林三哥超级帅";
    var canvas = document.createElement('canvas')//首先创建一个canvas标签
    var ctx = canvas.getContext("2d");//把canvas的画笔给调出来
      ctx.font="30px Arial";//设置字体大小和字体,这一步很重要,直接影响了测量结果,因为14px和16px的字体的宽度是不一样的
      var width = ctx.measureText(text).width;//开始测量字体的宽度
      console.log('text的宽度为' + width);
  </script>
</body>
</html>

使用在线HTML/CSS/JavaScript代码运行工具:http://tools.3water.com/code/HtmlJsRun测试上述代码,可得如下运行结果:

JS使用canvas中的measureText方法测量字体宽度示例

这个是结果,30px的字有6个,宽度一共180,没毛病!!!哈哈!!

更多关于JavaScript相关内容还可查看本站专题:《JavaScript+HTML5特效与技巧汇总》、《JavaScript图形绘制技巧总结》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结》

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
JavaScript入门教程 Cookies
Jan 31 Javascript
有效的捕获JavaScript焦点的方法小结
Oct 08 Javascript
JavaScript是否可实现多线程  深入理解JavaScript定时机制
Dec 22 Javascript
解决extjs grid 不随窗口大小自适应的改变问题
Jan 26 Javascript
AngularJS 中文API参考手册
Jul 28 Javascript
vue.js动态数据绑定学习笔记
May 19 Javascript
Javascript中的getter和setter初识
Aug 17 Javascript
JavaScript实现音乐自动切换和轮播
Nov 05 Javascript
浅析node.js的模块加载机制
May 25 Javascript
elementUI vue this.$confirm 和el-dialog 弹出框 移动 示例demo
Jul 03 Javascript
Vue使用Three.js加载glTF模型的方法详解
Jun 14 Javascript
详解JavaScript作用域 闭包
Jul 29 Javascript
JS使用对象的defineProperty进行变量监控操作示例
Feb 02 #Javascript
详解Vue webapp项目通过HBulider打包原生APP(vue+webpack+HBulider)
Feb 02 #Javascript
通过cordova将vue项目打包为webapp的方法
Feb 02 #Javascript
用Cordova打包Vue项目的方法步骤
Feb 02 #Javascript
JS实现数组去重及数组内对象去重功能示例
Feb 02 #Javascript
JS实现的Object数组去重功能示例【数组成员为Object对象】
Feb 01 #Javascript
JavaScript动态创建二维数组的方法示例
Feb 01 #Javascript
You might like
让你的PHP7更快之Hugepage用法分析
2016/05/31 PHP
yum命令安装php7和相关扩展
2016/07/04 PHP
PHP容器类的两种实现方式示例
2019/07/24 PHP
ThinkPHP5&amp;5.1框架关联模型分页操作示例
2019/08/03 PHP
基于Jquery的标签智能验证实现代码
2010/12/27 Javascript
基于Jquery的文字自动截取(提供源代码)
2011/08/09 Javascript
基于mootools插件实现遮罩层新手引导
2012/05/24 Javascript
js获取class的所有元素
2013/03/28 Javascript
jQuery 删除或是清空某个HTML元素示例
2014/08/04 Javascript
对jquery的ajax进行二次封装以及ajax缓存代理组件:AjaxCache详解
2016/04/11 Javascript
值得分享的轻量级Bootstrap Table表格插件
2016/05/30 Javascript
jQuery实现响应鼠标事件的图片透明效果【附demo源码下载】
2016/06/16 Javascript
Bootstrap学习笔记之环境配置(1)
2016/12/07 Javascript
Bootstrap页面缩小变形的快速解决办法
2017/02/03 Javascript
分分钟玩转Vue.js组件(二)
2017/03/01 Javascript
Vue计算属性的学习笔记
2017/03/22 Javascript
JavaScript中Array方法你该知道的正确打开方法
2018/09/11 Javascript
Nodejs中的require函数的具体使用方法
2019/04/02 NodeJs
这样回答继承可能面试官更满意
2019/12/10 Javascript
python数据类型_元组、字典常用操作方法(介绍)
2017/05/30 Python
python多线程抽象编程模型详解
2019/03/20 Python
Python内存管理实例分析
2019/07/10 Python
Python嵌套函数,作用域与偏函数用法实例分析
2019/12/26 Python
如何利用python进行时间序列分析
2020/08/04 Python
CSS3教程:新增加的结构伪类
2009/04/02 HTML / CSS
css3中背景尺寸background-size详解
2014/09/02 HTML / CSS
HTML5 canvas实现雪花飘落特效
2016/03/08 HTML / CSS
美国牙科折扣计划:DentalPlans.com
2019/08/26 全球购物
外贸销售员求职的自我评价
2013/11/23 职场文书
工程采购员岗位职责
2014/03/09 职场文书
出生证明公证书
2014/04/09 职场文书
《火烧云》教学反思
2014/04/12 职场文书
机电一体化毕业生自荐信
2014/06/19 职场文书
新闻编辑专业自荐信
2014/07/02 职场文书
浅谈@Value和@Bean的执行顺序问题
2021/06/16 Java/Android
Java Spring 控制反转(IOC)容器详解
2021/10/05 Java/Android