JS实现中英文混合文字溢出友好截取功能

以下是JS实现中英文混合文字溢出友好截取功能的完整攻略。

什么是中英文混合文字溢出?

中英文混合文字溢出通常是指,在一个容器中,两种不同字符(例如汉字和英文字符)混合排列,当容器宽度不够时,字符溢出容器的情况。由于汉字和英文字母的宽度不同,所以溢出部分难以准确的识别和截断,需要特殊处理。

如何实现中英文混合文字溢出友好截取?

第一步:计算字符长度和容器宽度

要实现中英文混合文字截取,首先需要计算字符的长度和容器的宽度。在JS中,字符长度可以通过字符串的length属性计算得出,容器的宽度则可以通过offsetWidth或者clientwidth属性获得。

const container = document.getElementById('container');
const text = 'Hello, 世界!';

const containerWidth = container.offsetWidth;
const textLength = text.length;

第二步:处理中英文混合文字

由于Chinese字符和ASCII字符的宽度不同,所以需要对字符串进行切割和处理。比较常见的方法是,使用正则表达式判断字符类型,并计算出每个字符的长度,累加得出整个字符串的长度。

function getLength(str) {
  let len = 0;
  for (let i = 0; i < str.length; i++) {
    if (str.charCodeAt(i) > 255) {
      len += 2;
    } else {
      len += 1;
    }
  }
  return len;
}

const text = 'Hello, 世界!';
const textLength = getLength(text);

第三步:截取字符串并添加省略号

在计算完文本的长度和容器的宽度后,就可以对文本进行截取处理,并添加省略号。比较常见的方法是,利用CSS的text-overflow和white-space属性实现。

const container = document.getElementById('container');
const text = 'Hello, 世界!';
const containerWidth = container.offsetWidth;
const textLength = getLength(text);
let result = text;
if (textLength > containerWidth) {
  let len = Math.floor(containerWidth / 7); //每个字符的平均长度为7
  result = text.substring(0, len) + '...';
}
container.innerHTML = result;

示例1:纯英文字母溢出截取

<div id="container" style="width: 200px; white-space:nowrap; overflow:hidden; text-overflow: ellipsis"></div>

<script>
const container = document.getElementById('container');
const text = 'This is a long text string';
const containerWidth = container.offsetWidth;
let result = text;
if (text.length > containerWidth / 7) {
  let len = Math.floor(containerWidth / 7);
  result = text.substring(0, len) + '...';
}
container.innerHTML = result;
</script>

示例2:中英文混合文字溢出截取

<div id="container" style="width: 150px; white-space:nowrap; overflow:hidden; text-overflow: ellipsis"></div>

<script>
function getLength(str) {
  let len = 0;
  for (let i = 0; i < str.length; i++) {
    if (str.charCodeAt(i) > 255) {
      len += 2;
    } else {
      len += 1;
    }
  }
  return len;
}

const container = document.getElementById('container');
const text = '这是一段很长的中文字符串,同时也包含了一些英文。';
const containerWidth = container.offsetWidth;
const textLength = getLength(text);
let result = text;
if (textLength > containerWidth) {
  let len = Math.floor(containerWidth / 14); //中文字符的平均长度为14
  result = text.substring(0, len) + '...';
}
container.innerHTML = result;
</script>

以上就是实现中英文混合文字溢出友好截取功能的完整攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS实现中英文混合文字溢出友好截取功能 - Python技术站

(0)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • 微信小程序学习笔记之文件上传、下载操作图文详解

    微信小程序学习笔记之文件上传、下载操作图文详解 本文主要介绍了在微信小程序中进行文件上传和下载的操作,包括上传和下载的基本流程、代码实现的步骤以及示例演示等。 文件上传基本流程 文件上传的基本流程包括: 创建文件上传组件和触发上传事件。 选择要上传的文件。 获取上传文件的tempFilePath。 发送上传请求。 处理上传成功或上传失败的结果。 文件上传代码…

    JavaScript 2023年5月19日
    00
  • JavaScript常用脚本汇总(一)

    针对《JavaScript常用脚本汇总(一)》的完整攻略,我将从以下三个部分进行介绍:标题、目录和文章主题。 标题 文章的标题为“JavaScript常用脚本汇总(一)”,使用了一级标题的格式。 目录 文章中包含了以下几个主题的内容,每个主题作为一个二级标题来展示。 常用的js特效 技术支持和问题解答 DHTML特效和插件 文章主题 常用的js特效 该部分涵…

    JavaScript 2023年5月18日
    00
  • js字符串中空格和换行符(\r,\s,\n,\r\n)浅析

    JS 字符串中空格和换行符(\r,\s,\n,\r\n)浅析 在 JavaScript 中,字符串是一种常用的数据类型,它可以用来表示文字、数字、符号和其他字符序列。在实际编程中,我们经常会遇到字符串中出现空格和换行符这些特殊字符,影响字符串的输出效果。本文将深入分析 JavaScript 字符串中空格和换行符的使用方法和规则,并且提供一些示例代码帮助读者更…

    JavaScript 2023年5月28日
    00
  • 利用Js的console对象,在控制台打印调式信息测试Js的实现

    利用Js的console对象,在控制台打印调试信息是Web开发中非常常见的一种调试方式。下面是一些步骤: 1. 开启浏览器的开发者工具 首先,我们需要在浏览器中打开一个网站,然后按下键盘上的F12键,或者通过右键打开菜单选择“检查”选项来打开浏览器的开发者工具。 2. 在Js代码中添加console调试信息 为了方便调试,我们在Js代码中添加console输…

    JavaScript 2023年5月28日
    00
  • js中style.display=””无效的解决方法

    当我们在JavaScript脚本中尝试用 style.display 修改元素的CSS display属性时,有时候会出现无效的情况。这个问题的原因在于,display属性存在一些特殊的值,例如 none 或 inline,与CSS样式表中定义的属性不同。 处理这个问题的方法有以下几种: 1. 使用CSS class 在CSS样式表中定义一个类,该类包含特定…

    JavaScript 2023年6月11日
    00
  • javascript动画系列之模拟滚动条

    我来给你详细讲解 “javascript动画系列之模拟滚动条”的完整攻略。本篇攻略将分成以下几个部分介绍如何使用 JavaScript 实现一个模拟滚动条。 准备工作 在进行模拟滚动条的制作之前,我们需要有 HTML 和 CSS 的基础。这里不做过多的讲解,只讲有关滚动条部分的 HTML 和 CSS 代码。下面的代码片段是例子的 HTML 代码: <d…

    JavaScript 2023年6月10日
    00
  • JavaScript中的Object对象学习教程

    JavaScript中的Object对象学习教程 Object对象是JavaScript中的基础对象之一,它提供了一种存储和操作数据的方式,可以定义任意类型的数据结构,并对其进行操作。本教程将详细介绍Object对象的基本用法和常见方法。 创建Object对象 Object对象的创建有两种方式:字面量和构造函数。 字面量方式 var obj = {}; //…

    JavaScript 2023年5月27日
    00
  • JavaScript中的变量定义与储存介绍

    当我们使用JavaScript编程时,变量是必不可少的元素。变量是用来储存数据的一种容器,包括数字、字符串、布尔值或其他数据类型等。在JavaScript中,变量需要先定义再使用,同时也需要注意变量的作用域。 变量定义 在JavaScript中定义变量需要使用关键字var、let或const。其中,var和let是用来定义可修改的变量,而const用来定义常…

    JavaScript 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部