判断一段文本具体长度为多少px

文本中由文字,有英文大小写,有数字还有各种符号。这时如果要用js判断它的长度为多少px。

1.获取字符串  str

2.将str拆成数组arr

3.遍历arr,分别求出中文个数,大写英文个数,小写英文个数.......

4.根据设置的字体大小,求出每种类型字符分别为多少px(直接输入文本,在网页里查看多大)

5.最后求出文本长度。。。。。

O(∩_∩)O哈哈~,这么麻烦,看到第四部就知道有简单方法了吧!!!对!直接将这段文本放入一个行内标签,用js获取这个标签的长度,就是这么简单。

示例代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<script>
    var str = '江山依旧在,几度夕阳红。Hello,大家好,好好学习,天天向上';
    function getTextWidth(str) {
        var width = 0;
        var html = document.createElement('span');
        html.innerText = str;
        html.className = 'getTextWidth';
        document.querySelector('body').appendChild(html);
        width = document.querySelector('.getTextWidth').offsetWidth;
        document.querySelector('.getTextWidth').remove();
        return width;
    }

    var w = getTextWidth(str);
    console.log(w);
</script>
</body>
</html>

好了,简单的获取文本长度的函数有了。有改进的地方,欢迎留言指教

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
可以使用vue的动画和样式来实现这个效果。首先,在模板中添加一个div作为容器,并设置好宽高和样式: ```html <template> <div class="container"> <div class="text">{{ text }}</div> </div> </template> <style> .container { width: 300px; height: 600px; overflow: hidden; } .text { animation: move-up-and-down 5s ease-in-out infinite; } @keyframes move-up-and-down { 0% { transform: translateY(0); } 50% { transform: translateY(-50%); } 100% { transform: translateY(-100%); } } </style> ``` 然后,在组件的逻辑部分,定义一个data属性`text`来存储要循环播放的文本内容,并使用computed属性计算出每个循环周期中要显示的文本。可以使用一个数组来存储文本的不同部分,然后根据循环周期的进度来动态拼接出完整的文本具体代码如下: ```html <template> <div class="container"> <div class="text">{{ displayText }}</div> </div> </template> <script> export default { data() { return { text: '这是要循环播放的文本内容。', textParts: [], loopDuration: 5000 // 循环周期时长,单位毫秒 } }, computed: { displayText() { const partCount = 5 // 将文本分为5个部分 const partLength = Math.ceil(this.text.length / partCount) // 将文本分为partCount个部分,每个部分的长度为partLength for (let i = 0; i < partCount; i++) { const start = i * partLength const end = (i + 1) * partLength this.textParts[i] = this.text.substring(start, end) } // 计算当前循环周期的进度,0~1之间的小数 const progress = (Date.now() % this.loopDuration) / this.loopDuration // 根据进度动态拼接文本 let displayText = '' for (let i = 0; i < partCount; i++) { const part = this.textParts[i] const partProgress = (progress + i / partCount) % 1 const partIndex = Math.floor(partProgress * part.length) displayText += part.substring(partIndex) + part.substring(0, partIndex) } return displayText } } } </script> ``` 这样就可以实现在一个宽300px高600px的盒子里上下循环播放一段文本了。不过需要注意的是,这个效果会占用一定的CPU资源,如果文本过长或者循环周期时长过短,可能会导致卡顿或者页面崩溃。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值