当前位置: 首页 > news >正文

jsp网站开发 英文python语言属于什么语言

jsp网站开发 英文,python语言属于什么语言,建站一条龙设计制作,三网合一网站方案实现效果 实现思路 获取标题盒子的真实宽度, 我这里用的是clientWidth;获取文本内容所占的实际宽度;根据文字的大小计算出每个文字所占的宽度;判断文本内容的实际宽度是否超出了标题盒子的宽度;通过文字所占的宽度累加之和与标题…

实现效果

在这里插入图片描述

实现思路

  1. 获取标题盒子的真实宽度, 我这里用的是clientWidth;
  2. 获取文本内容所占的实际宽度;
  3. 根据文字的大小计算出每个文字所占的宽度;
  4. 判断文本内容的实际宽度是否超出了标题盒子的宽度;
  5. 通过文字所占的宽度累加之和与标题盒子的宽度做对比,计算出要截取位置的索引;
  6. 同理,文本尾部的内容需要翻转一下,然后计算索引,截取完之后再翻转回来

代码

<div class="title" id="test">开头,这里是中间内容中间内容中间内容中间内容中间内容中间内容中间内容中间内容中间内容中间内容中间内容中间内容中间内容中间内容,结尾。</div>

css代码: 设置文本不换行,同时设置overflow:hidden让文本溢出盒子隐藏

.title {width: 640px;height: 40px;line-height: 40px;font-size: 14px;color: #00b388;border: 1px solid #ddd;overflow: hidden;/* text-overflow: ellipsis; */white-space: nowrap;/* box-sizing: border-box; */padding: 0 10px;
}

javascript代码:获取标题盒子的宽度时要注意,如果在css样式代码中设置了padding, 就需要获取标题盒子的左右padding值。 通过getComputedStyle属性获取到所有的css样式属性对应的值, 由于获取的padding值都是带具体像素单位的,比如: px,可以用parseInt特殊处理一下。

判断文本内容是否超出标题盒子

 // 标题盒子dom
const dom = document.getElementById('test');// 获取dom元素的padding值
function getPadding(el) {const domCss = window.getComputedStyle(el, null);const pl = Number.parseInt(domCss.paddingLeft, 10) || 0;const pr = Number.parseInt(domCss.paddingRight, 10) || 0;console.log('padding-left:', pl, 'padding-right:', pr);return {left: pl,right: pr}
}
// 检测dom元素的宽度,
function checkLength(dom) {// 创建一个 Range 对象const range = document.createRange();// 设置选中文本的起始和结束位置range.setStart(dom, 0),range.setEnd(dom, dom.childNodes.length);// 获取元素在文档中的位置和大小信息,这里直接获取的元素的宽度let rangeWidth = range.getBoundingClientRect().width;// 获取的宽度一般都会有多位小数点,判断如果小于0.001的就直接舍掉const offsetWidth = rangeWidth - Math.floor(rangeWidth);if (offsetWidth < 0.001) {rangeWidth = Math.floor(rangeWidth);}// 获取元素padding值const { left, right } = getPadding(dom);const paddingWidth = left + right;// status:文本内容是否超出标题盒子;// width: 标题盒子真实能够容纳文本内容的宽度return {status: paddingWidth + rangeWidth > dom.clientWidth,width: dom.clientWidth - paddingWidth};
}

通过charCodeAt返回指定位置的字符的Unicode编码, 返回的值对应ASCII码表对应的值,0-127包含了常用的英文、数字、符号等,这些都是占一个字节长度的字符,而大于127的为占两个字节长度的字符。

截取和计算文本长度

// 计算文本长度,当长度之和大于等于dom元素的宽度后,返回当前文字所在的索引,截取时会用到。
function calcTextLength(text, width) {let realLength = 0;let index = 0;for (let i = 0; i < text.length; i++) {charCode = text.charCodeAt(i);if (charCode >= 0 && charCode <= 128) {realLength += 1;} else {realLength += 2 * 14; // 14是字体大小}// 判断长度,为true时终止循环,记录索引并返回if (realLength >= width) {index = i;break;}}return index;
}// 设置文本内容
function setTextContent(text) {const { status, width } = checkLength(dom);let str = '';if (status) {// 翻转文本let reverseStr = text.split('').reverse().join('');// 计算左右两边文本要截取的字符索引const leftTextIndex = calcTextLength(text, width);const rightTextIndex = calcTextLength(reverseStr, width);// 将右侧字符先截取,后翻转reverseStr = reverseStr.substring(0, rightTextIndex);reverseStr = reverseStr.split('').reverse().join('');// 字符拼接str = `${text.substring(0, leftTextIndex)}...${reverseStr}`;} else {str = text;}dom.innerHTML = str;
}

相关知识

js判断文字被溢出隐藏的几种方法

  1. 通过document.createRange和document.getBoundingClientRect()这两个方法实现的。也就是上面代码中实现的checkLength方法。
  2. 创建一个隐藏的div模拟实际宽度

通过创建一个不会在页面显示出来的dom元素,然后把文本内容设置进去,真实的文本长度与标题盒子比较宽度,判断是否被溢出隐藏了。

function getDomDivWidth(dom) {const elementWidth = dom.clientWidth;const tempElement = document.createElement('div');const style = window.getComputedStyle(dom, null)const { left, right } = getPadding(dom); // 这里我写的有点重复了,可以优化tempElement.style.cssText = `position: absolute;top: -9999px;left: -9999px;white-space: nowrap;padding-left:${style.paddingLeft};padding-right:${style.paddingRight};font-size: ${style.fontSize};font-family: ${style.fontFamily};font-weight: ${style.fontWeight};letter-spacing: ${style.letterSpacing};`;tempElement.textContent = dom.textContent;document.body.appendChild(tempElement);const obj = {status: tempElement.clientWidth + right + left > elementWidth,width: elementWidth - left - right}document.body.removeChild(tempElement);return obj;
}
  1. 创建一个block元素来包裹inline元素

外层套一个块级(block)元素,内部是一个行内(inline)元素。给外层元素设置溢出隐藏的样式属性,不对内层元素做处理,这样内层元素的宽度是不变的。因此,通过获取内层元素的宽度和外层元素的宽度作比较,就可以判断出文本是否被溢出隐藏了。

// html代码
<div class="title" id="test"><span class="content">近日,银行纷纷下调大额存单利率,但银行定期存款仍被疯抢。银行理财经理表示:有意向购买定期存款要尽快,不确定利率是否会再降。</span>
</div>// 创建一个block元素来包裹inline元素
const content = document.querySelector('.content');
function getBlockDomWidth(dom) {const { left, right } = getPadding(dom);console.log(dom.clientWidth, content.clientWidth)const obj = { status: dom.clientWidth < content.clientWidth + left + right,width: dom.clientWidth - left - right}return obj;
}
  1. 使用canvas中的measureText方法和TextMetrics对象来获取元素的高度

通过Canvas 2D渲染上下文(context)可以调用measureText方法,此方法会返回TextMetrics对象,该对象的width属性值就是字符占据的宽度,由此也能获取到文本的真实宽度,此方法有弊端,比如说兼容性,精确度等等。

// 获取文本长度
function getTextWidth(text, font = 14) {const canvas = document.createElement("canvas");const context = canvas.getContext("2d")context.font = fontconst metrics = context.measureText(text);return metrics.width
}

JS获取字符串长度的几种常用方法

  1. 通过charCodeAt判断字符编码

通过charCodeAt获取指定位置字符的Unicode编码,返回的值对应ASCII码表对应的值,0-127包含了常用的英文、数字、符号等,这些都是占一个字节长度的字符,而大于127的为占两个字节长度的字符。

function calcTextLength(text) {let realLength = 0;for (let i = 0; i < text.length; i++) {charCode = text.charCodeAt(i);if (charCode >= 0 && charCode <= 128) {realLength += 1;} else {realLength += 2;}}return realLength;
}
  1. 采取将双字节字符替换成"aa"的做法,取长度
function getTextWidth(text) {return text.replace(/[^\x00-\xff]/g,"aa").length;
};
http://www.15wanjia.com/news/161274.html

相关文章:

  • 企业建设网站价格单百度的排名规则详解
  • 网站备案容易通过吗ui设计师证书有用吗
  • 网站开发工程师任职要求wordpress 种子搜索引擎
  • 北京网站制作的公司企业加强网站建设的必要性
  • 网站首页布局网站开发属于哪个板块的
  • 电子商务网站开发技术解决方案企业先做网站还是先做淘宝
  • 郴州市住房和城乡建设厅网站泰安seo网络公司
  • 苏宁推客如何做网站有没有可以做游戏的网站
  • 网站备案后证书网站企业备案和个人备案的区别
  • 免费的成品网站中联建设集团网站
  • 在线做文档的网站绵阳网站建设 经开区
  • 外贸自建站源码网站上线是前端还是后端来做
  • 如意宝魔方建站整站seo怎么做
  • 网站后台超链接怎么做asp网站开发报告
  • shopex网站首页空白服装网站开发的需求分析
  • 怎么seo网站推广电子商务网站建设自建团队
  • 海口智能建站详情wordpress5.1.1
  • 化妆品网站下载莱州信息网
  • 建设银行贷款官方网站本科自考助学班
  • 学做网站php百度手机助手下载安装最新版
  • 重庆网站备案需要几天做基础工程分包应上什么网站
  • 能进封禁网站的浏览器大数据技术就业和发展前景
  • 外贸网站建设和网站推广要怎么做微盟商城小程序
  • 想在自己的网站做支付黄埔网站建设优化seo
  • app网站开发框架上海最有名的公司集团
  • 电子商务建设网站商贸公司网站建设极致发烧
  • 网站建设 58同城怎样用网站模板做网站
  • 宜宾做网站公司河南零距离文化传播 网站建设
  • 贵阳手机网站开发wordpress在哪里看访客
  • dede宠物网站模板贵州网站建设seo