JavaScript自适应调整文字大小
今天有个任务,发现页面上的数字由于太长而与其他数字重叠了。这个数字还不能像文字那样只显示一部分,必须全部显示。想了一些办法都不行,最后把超过1000变成1K,大于K改成M,这样办法都行,还是长呀。
注意:我这个任务不是在不同屏幕下文字大小调整,而是同一种屏幕下调整字体大小。
在网上还找到了一种方法https://www.zhuwenlong.com/blog/article/528611f363c705fc73000001,但是没有使用。
同时又去试了一下svg是否可以自动调整文字大小,发现不行(可能是我没搞清楚,如果把SVG当成一个图片可能好使)。
最后想了一个办法,根据数字的长度动态修改文字的大小。系统使用AngularJS写的。所以在controller.js中设定了一个$scope.myStyle的样式,并且把样式放在div上:
<div ng-style="myStyle">...</div>
然后在controller.js中判断字符串长度。首先先把数字变成字符串并且都连接在一起,然后判断最终的字符串长度。
示例:
1if(text_length <= 6) { 2 $scope.myStyle = { 3 "font-size": "34px", 4 } 5} else if(text_length <= 8) { 6 $scope.myStyle = { 7 "font-size": "32px", 8 } 9} else if(text_length <= 10) { 10 $scope.myStyle = { 11 "font-size": "30px", 12 } 13} else if(text_length <= 12) { 14 $scope.myStyle = { 15 "font-size": "26px", 16 } 17} else if(text_length < 18) { 18 $scope.myStyle = { 19 "font-size": "22px", 20 } 21} else { 22 $scope.myStyle = { 23 "font-size": "20px", 24 } 25}
最后的显示效果还可以,不过调试的过程要自己慢慢调。:D
@完