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 相关文章推荐
js 幻灯片的实现
Dec 06 Javascript
jquery实现excel导出的方法
Apr 04 Javascript
Jquery+asp.net后台数据传到前台js进行解析的方法
May 11 Javascript
JS数组的遍历方式for循环与for...in
Jul 31 Javascript
js实现表单Radio切换效果的方法
Aug 17 Javascript
JavaScript中0和&quot;&quot;比较引发的问题
May 26 Javascript
JS中Array数组学习总结
Jan 18 Javascript
vue与TypeScript集成配置最简教程(推荐)
Oct 17 Javascript
基于jQuery Ajax实现下拉框无刷新联动
Dec 06 jQuery
weui中的picker使用js进行动态绑定数据问题
Nov 06 Javascript
js实现鼠标点击飘爱心效果
Aug 19 Javascript
JS闭包原理及其使用场景解析
Dec 03 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
Smarty安装配置方法
2008/04/10 PHP
php 无限级数据JSON格式及JS解析
2010/07/17 PHP
php下Memcached入门实例解析
2015/01/05 PHP
js setattribute批量设置css样式
2009/11/26 Javascript
轻量级 JS ToolTip提示效果
2010/07/20 Javascript
javascript实现验证IP地址等相关信息代码
2015/05/10 Javascript
在WordPress中加入Google搜索功能的简单步骤讲解
2016/01/04 Javascript
浅谈vue-lazyload实现的详细过程
2017/08/22 Javascript
vue单文件组件lint error自动fix与styleLint报错自动fix详解
2019/01/08 Javascript
vue动画效果实现方法示例
2019/03/18 Javascript
vue 组件简介
2020/07/31 Javascript
Python实现的二维码生成小软件
2014/07/11 Python
Python脚本实现DNSPod DNS动态解析域名
2015/02/14 Python
使用Python中的greenlet包实现并发编程的入门教程
2015/04/16 Python
python字符串对其居中显示的方法
2015/07/11 Python
Python利用带权重随机数解决抽奖和游戏爆装备问题
2016/06/16 Python
Android 兼容性问题:java.lang.UnsupportedOperationException解决办法
2017/03/19 Python
ubuntu系统下使用pm2设置nodejs开机自启动的方法
2018/05/12 NodeJs
对pandas中iloc,loc取数据差别及按条件取值的方法详解
2018/11/06 Python
PyCharm鼠标右键不显示Run unittest的解决方法
2018/11/30 Python
Python实现点阵字体读取与转换的方法
2019/01/29 Python
利用Python+阿里云实现DDNS动态域名解析的方法
2019/04/01 Python
Python3安装psycopy2以及遇到问题解决方法
2019/07/03 Python
解决os.path.isdir() 判断文件夹却返回false的问题
2019/11/29 Python
使用python求解二次规划的问题
2020/02/29 Python
全网首秀之Pycharm十大实用技巧(推荐)
2020/04/27 Python
Fanatics英国官网:美国体育电商
2018/11/06 全球购物
金属材料工程毕业生个人的自我评价
2013/11/28 职场文书
八一演出活动方案
2014/02/03 职场文书
支行行长竞聘报告
2014/11/06 职场文书
2014年局领导班子自身建设情况汇报
2014/11/21 职场文书
捐款感谢信
2015/01/20 职场文书
2015年食堂工作总结报告
2015/04/23 职场文书
使用Oracle跟踪文件的问题详解
2021/06/28 Oracle
Ajax异步刷新功能及简单案例
2021/11/20 Javascript
Vue2项目中对百度地图的封装使用详解
2022/06/16 Vue.js